1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
- require_once __DIR__ . '/../../../../main.php'; # 导入game utils
- include_once __DIR__ . '/../../Mo/payResp.php'; # 导入通用返回值结构
- include_once __DIR__ . '/../../Mo/payRequest.php'; # 导入通用返回值结构
- require_once __DIR__ . '/../../Mo/OrderNotice.php'; # 导入通知数据接收模型
- require_once __DIR__ . '/AopSdk.php'; # 导入alipay库
- require_once __DIR__ . '/config_alipay.php'; # 导入配置文件
- use loyalsoft\CLog;
- use loyalsoft\HttpUtil;
- HttpUtil::PostOnly();
- CLog::pay("[notify.zfb] [收到通知]: " . HttpUtil::getQueryString()); # 日志
- $params = \loyalsoft\HttpUtil::getQueryParas(); # 提取请求参数
- $cfg = loyalsoft\config_alipay::Inst();
- $aop = new AopClient();
- $aop->alipayrsaPublicKey = $cfg->alipayrsaPublicKey; # 支付宝公钥
- $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
- if ($flag) { # 身份校验通过,确认为Alipay发送的通知
- $order = loyalsoft\pay\OrderNotice::Parse_alipayOrder($params);
- if ($order != null) {
- if ($order->Check()) { # 订单校验, 1代表支付成功
- if ($order->status == 1) { # 订单状态是成功
- $order->UpdateOrderStatus(); # 更新订单状态,->已付款
- // if (PLAT == 'tap') {
- loyalsoft\TapDBUtil::PushPayEvent($order, 'alipay'); # 向tapdb推送充值记录
- // }
- CLog::pay("[notify.zfb] [发货] " . $order->cpOrderId . " >>> " . $order->amount);
- } else if ($order->status == 2) { # status为2(failed)的情况
- $order->UpdateOrderStatus(); # 直接更新订单状态,->支付失败
- CLog::pay("[notify.zfb] [不发货] " . $order->cpOrderId);
- } else {
- echo 'FAILURE';
- CLog::pay("[notify.zfb][处理结果]: FAILURE (未知的支付状态)"); # 日志
- return;
- }
- echo 'success'; # 返回给sdk server的响应内容
- CLog::pay("[notify.zfb][处理结果]: SUCCESS"); # 日志
- return;
- }
- }
- CLog::pay("[notify.zfb] [处理结果]: FAILURE (提取参数失败)"); # 日志
- echo 'faild!'; // 返回给sdk server的响应内容 ,对于重复多次通知失败的订单,请参考文档中通知机制。
- } else {
- echo 'faild!';
- CLog::pay("[notify.zfb] 签名验证失败!");
- }
|