回调数据说明 参数名称 类型 是否签名 描述 currency String 是 货币代码。如巴西为BRL order_id String 是 商户订单编号 payment_id String 是 平台代收订单唯一号 amount String 是 固定2位小数点的浮点数金额 timestamp Long 是 毫秒级UTC时间戳(13位) extend String 是 附加数据 status String 是 支付结果状态 status_code Int 是 支付结果状态码 status_detail String 是 支付结果状态描述 signature String 否 MD5签名,32位大写字母 回调数据说明 参数名称 类型 是否签名 描述 currency String 是 货币代码。如巴西为BRL order_id String 是 商户订单编号 payment_id String 是 平台代收订单唯一号 amount String 是 固定2位小数点的浮点数金额 timestamp Long 是 毫秒级UTC时间戳(13位) extend String 是 附加数据 status String 是 支付结果状态 status_code Int 是 支付结果状态码 status_detail String 是 支付结果状态描述 signature String 否 MD5签名,32位大写字母 回调成功返回 商户接收到系统发送的回调通知后,请返回大写的 SUCCESS。 商户在收到交易结果通知时,需要正确响应,如果不正确响应,平台会判定本次通知失败,并重新发送通知,直到成功为止(在通知一直不成功的情况下,平台总共会发起5次通知,通知频率为5秒)。 根据以上信息 生成一个基于php的接口案例
时间: 2024-03-22 16:38:13 浏览: 85
以下是一个基于PHP的接口案例:
```php
<?php
//获取回调数据
$currency = $_POST['currency'];
$order_id = $_POST['order_id'];
$payment_id = $_POST['payment_id'];
$amount = $_POST['amount'];
$timestamp = $_POST['timestamp'];
$extend = $_POST['extend'];
$status = $_POST['status'];
$status_code = $_POST['status_code'];
$status_detail = $_POST['status_detail'];
$signature = $_POST['signature'];
//验证签名
$secret_key = 'your_secret_key'; //此处应为商户的密钥
$sign_data = $currency . $order_id . $payment_id . $amount . $timestamp . $extend . $status . $status_code . $status_detail . $secret_key;
$sign = strtoupper(md5($sign_data));
if ($sign != $signature) {
//签名验证失败
exit('Signature verification failed');
}
//处理回调数据
if ($status == 'SUCCESS') {
//处理成功逻辑
echo 'SUCCESS';
} else {
//处理失败逻辑
echo 'FAILED';
}
```
其中,`$secret_key`应该是商户自己的密钥,用于生成签名。在验证签名时,需要将回调数据和密钥按照一定的规则拼接起来,并进行MD5加密,然后再将加密后的字符串转换为大写字母,最后与回调数据中的签名进行比对。如果比对成功,则说明回调数据是有效的,可以进行下一步处理;否则说明回调数据可能被篡改,需要进行相应的处理。在处理成功或失败逻辑后,需要向平台返回大写的`SUCCESS`,以表示商户已经成功接收到了回调通知。
阅读全文