123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?php
- /**
- * 接收1SDK后台通知(支付)
- * @version
- * 1.0.0 Created at 2017-12-30. by --gwang
- * @author gwang (mail@wanggangzero.cn)
- * @copyright ? 2017-12-30, SJZ LoyalSoft Corporation & gwang. All rights reserved.
- *
- */
- include_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__ . '/config.1sdk.php'; # 配置文件, Ps. 里面用到了object
- use loyalsoft\CLog;
- use loyalsoft\HttpUtil;
- use loyalsoft\pay\OrderNotice;
- try {
- CLog::pay("[notify.易接] 收到支付回调请求: " . HttpUtil::getQueryString());
- $cfg = new config_for_1sdk(); # 配置信息
- $params = HttpUtil::getQueryParas(); # 提取参数
- $sign = $params['sign']; # 提取签名
- if ($sign != $cfg->getSign_1sdk($params)) { # 验证签名
- CLog::pay("[notify.易接] 验签失败");
- CLog::pay("[notify.易接]" . "[签名原文]:" . $sign);
- CLog::pay("[notify.易接]" . "[签名结果]:" . $cfg->getSign_1sdk($params));
- exit('{"err":1001,"msg":"Invalied sign!"}'); # 退出
- }
- $order = OrderNotice::Parse_1SDKOrder($params); # 将参数归一化到order
- if ($order != null) {
- if ($order->Check()) { # 订单校验, 1代表支付成功
- if ($order->status == 1) { # 订单状态是成功
- $order->UpdateOrderStatus(); # 更新订单状态,->已付款
- CLog::pay("[notify.易接] [发货] 订单: " . $order->cpOrderId . ", 金额: " . $order->amount);
- } else if ($order->status == 2) { # status为2(failed)的情况
- $order->UpdateOrderStatus(); # 直接更新订单状态,->支付失败
- CLog::pay("[notify.易接] [不发货] 订单: " . $order->cpOrderId);
- } else {
- echo 'FAILURE';
- CLog::pay("[notify.易接][处理结果]: FAILURE (未知的支付状态)"); # 日志
- return;
- }
- echo 'SUCCESS'; //返回给sdk server的响应内容
- CLog::pay("[notify.易接][处理结果]:" . "SUCCESS"); # 日志
- return;
- }
- }
- CLog::pay("[notify.易接][处理结果]:" . "FAILURE"); # 日志
- echo 'FAILURE'; //返回给sdk server的响应内容 ,对于重复多次通知失败的订单,请参考文档中通知机制。
- return;
- } catch (Exception $e) {
- CLog::pay("[notify.易接]" . $e->getMessage()); # 日志
- throw new exception($e->getMessage());
- }
|