支付回调说明
在玩家充值完成之后,平台将向回调地址发出通知,Android和iOS可使用同一个回调地址,也可区分回调地址。
1验签
平台发出的参数举例:
{
"order_id":"1568872988169555757",
"mem_id":"xh_15944319",
"app_id":"63012",
"money":"1.00",
"order_status":"2",
"paytime":"1568872988",
"attach":"38620190919140306377854493",
"sign":"8d6718b498ea57c0b734a439c9bd12b5"
}
参数 | 说明 |
---|---|
order_id | 平台订单ID |
mem_id | 平台小号ID |
app_id | 平台游戏ID |
money | 订单充值金额 |
order_status | 订单状态 (1:待处理,2:支付成功,3:失败) |
paytime | 订单支付时间 |
attach | CP附加参数 |
最后的sign是由前面的参数再加上appkey拼接计算所得,每个游戏对应不同的appkey,接收到回调后由app_id获得对应的appkey。
$appkey = '由app_id获取appkey';
$paramstr = "order_id=" . $order_id . "&mem_id=" . $mem_id . "&app_id=" . $app_id . "&money=" . $money .
"&order_status
=" . $order_status . "&paytime=" . $paytime . "&attach=" . $attach . "&app_key=" . $appkey;
$verrifysign = md5($paramstr);
回调状态 | 返回内容 |
---|---|
成功 | SUCCESS |
失败 | FAILURE |
2校验订单金额
玩家可能通过各种方式在支付过程中修改金额,所以最终回调时必须验证金额是否匹配!
$trueMoney ='由attach获取该订单实际金额';
由于php浮点数精度问题,最好统一转成整数之后再对比
if (intval(round($trueMoney * 100)) != intval(round($money * 100))) {
exit($fail);
}