微信支付 PHP 回调接口怎么写
时间: 2023-07-26 20:35:14 浏览: 379
微信支付的回调接口是指当用户完成支付后,微信服务器会向商户服务器发送一个支付结果通知,商户服务器需要接收并处理该通知。以下是基本的微信支付 PHP 回调接口的实现步骤:
1. 首先,商户服务器需要从微信服务器接收到支付结果通知,可以使用 cURL 或其他 HTTP 客户端库来实现。
2. 接收到支付结果通知后,商户服务器需要验证该通知的真实性,以防止伪造通知的攻击。可以使用微信支付提供的签名算法进行验证。
3. 验证通过后,商户服务器需要处理支付结果,例如更新订单状态、发送支付成功通知等。
4. 处理完成后,商户服务器需要向微信服务器发送一个 HTTP 响应,以告知微信服务器已经接收到该通知。
以下是代码示例:
```php
<?php
// 接收并验证微信支付回调通知
$data = file_get_contents('php://input');
$xml = simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);
if ($xml->return_code == 'SUCCESS' && $xml->result_code == 'SUCCESS') {
// 验证签名
$sign = $xml->sign;
$xml->sign = ''; // 签名不参与签名算法
$params = [];
foreach ($xml as $key => $value) {
$params[$key] = (string) $value;
}
ksort($params);
$string = urldecode(http_build_query($params));
$string .= '&key=' . $API_KEY;
$calculated_sign = strtoupper(md5($string));
if ($sign === $calculated_sign) {
// 处理支付结果
$order_no = $xml->out_trade_no;
$transaction_id = $xml->transaction_id;
$total_fee = $xml->total_fee;
// TODO: 更新订单状态、发送支付成功通知等
}
}
// 响应微信服务器
$response = '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
echo $response;
```
以上仅是基础的接口实现,实际应用中还需要考虑一些特殊情况,例如网络异常、重复通知等。另外,为了安全起见,建议将商户密钥等敏感信息存放在安全的位置,并设置权限控制。
阅读全文