创建订单
请求地址:http://orderapi.liangtouyang.com/api/orders/pay
请求名 | 类型 | 参考值 | 备注 | |
appid | String | 100010000 | 后台应用中心获取 | |
type | int | 0 | 0:微信支付 1:支付宝支付 | |
out_trade_no | string | Y1234567989 | 用户订单号 | |
money | string | 1.00 | 付款金额,注意必须是标准的金额格式如1.00 1.01 | |
notify_url | string | 可填可不填 不填则用后台应用内设置的为准 | ||
device | int | 1 | 1:电脑 2:手机 填写的类型会利于接口的返回类型 | |
sign | string | 32位的MD5加密字符串 |
|
计算签名
/**
* 生成签名
*
* @param array $params 参数数组
* @param string $secretKey 密钥
* @return string 签名
*/
function generateSign(array $params, $secretKey): string
{
// 检查是否存在 sign 参数,并移除
if (isset($params['sign'])) {
unset($params['sign']);
}
ksort($params);
// 将参数拼接成字符串
$paramString = '';
foreach ($params as $key => $value) {
$paramString .= $key . '=' . $value . '&';
}
// 去除末尾的&
$paramString = rtrim($paramString, '&');
// 在拼接的字符串后面加上密钥
$paramString .= $secretKey;
// 计算MD5签名
$signature = md5($paramString);
return $signature;
}
返回数据示例:
{
"code": 20000,
"status": "ok",
"data": {
"payurl": "https:\/\/qr.alipay.com\/bax00117danf1s1djjmr00a0",
"type": 1,
"out_trade_no": "y1713760297",
"money": "1.10",
"trade_no": "R240422123135450090"
},
"msg": "请求成功"
}
查询订单
请求地址:http://orderapi.liangtouyang.com/api/orders/query
请求名 | 类型 | 参考值 | 备注 | |
appid | string | 100010000 | 后台应用处获取 | |
out_trade_no | string | Y123456789 | 用户自己订单号 (二选一) | |
trade_no | string | R201400000000000000 | 平台订单号(二选一) |
查询订单 无需sign计算
回调代码
/**
* 验证回调签名是否正确
* @param array $data 回调数据数组
* @param string $secretKey 密钥
* @return bool 验证结果
*/
function verifyCallbackSignature($data, $secretKey): bool
{
// 从回调数据中取出签名
$signature = $data['sign'];
// 在回调数据中移除签名字段
unset($data['sign']);
// 将参数按照键名进行字典序排序
ksort($data);
// 将参数拼接成字符串
$paramString = '';
foreach ($data as $key => $value) {
$paramString .= $key . '=' . $value . '&';
}
// 去除末尾的&
$paramString = rtrim($paramString, '&');
// 在拼接的字符串后面加上密钥
$paramString .= $secretKey;
// 计算MD5签名
$computedSignature = md5($paramString);
// 验证签名是否正确
return $signature === $computedSignature;
}
// 假设这里接收到了回调数据$data
$urlData = $_GET["data"];//GET参数获取相关内容
//data 后面的 url解码后就是json代码
//返回示例:?data=%7B%22appid%22%3A100100001%2C%22time%22%3A1713760397%2C%22amount%22%3A%221.100%22%2C%22status%22%3A1%2C%22out_trade_no%22%3A%22y1713760297%22%2C%22trade_no%22%3A%22R240422123135450090%22%2C%22sign%22%3A%22a7762b869a349409616ed4cbc5018dae%22%7D
$data = json_decode(urldecode($urlData),true);
$secretKey = ""; // 后台的AppKEY
// 验证回调签名是否正确
$isValid = verifyCallbackSignature($data, $secretKey);
if ($isValid) {
echo "签名验证通过"; //
} else {
echo "签名验证失败";
}
//处理业务
//处理完成后
echo "SUCCESS";//响应通过返回
进件地址:两头羊支付