notify.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /**
  3. * 接收1SDK后台通知(支付)
  4. * @version
  5. * 1.0.0 Created at 2017-12-30. by --gwang
  6. * @author gwang (mail@wanggangzero.cn)
  7. * @copyright ? 2017-12-30, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  8. *
  9. */
  10. include_once __DIR__ . '/../../../main.php'; # 导入game utils
  11. include_once __DIR__ . '/../Mo/payResp.php'; # 导入通用返回值结构
  12. include_once __DIR__ . '/../Mo/payRequest.php'; # 导入通用返回值结构
  13. require_once __DIR__ . '/../Mo/OrderNotice.php';
  14. require_once __DIR__ . '/config.1sdk.php'; # 配置文件, Ps. 里面用到了object
  15. use loyalsoft\CLog;
  16. use loyalsoft\HttpUtil;
  17. use loyalsoft\pay\OrderNotice;
  18. try {
  19. CLog::pay("[notify.易接] 收到支付回调请求: " . HttpUtil::getQueryString());
  20. $cfg = new config_for_1sdk(); # 配置信息
  21. $params = HttpUtil::getQueryParas(); # 提取参数
  22. $sign = $params['sign']; # 提取签名
  23. if ($sign != $cfg->getSign_1sdk($params)) { # 验证签名
  24. CLog::pay("[notify.易接] 验签失败");
  25. CLog::pay("[notify.易接]" . "[签名原文]:" . $sign);
  26. CLog::pay("[notify.易接]" . "[签名结果]:" . $cfg->getSign_1sdk($params));
  27. exit('{"err":1001,"msg":"Invalied sign!"}'); # 退出
  28. }
  29. $order = OrderNotice::Parse_1SDKOrder($params); # 将参数归一化到order
  30. if ($order != null) {
  31. if ($order->Check()) { # 订单校验, 1代表支付成功
  32. if ($order->status == 1) { # 订单状态是成功
  33. $order->UpdateOrderStatus(); # 更新订单状态,->已付款
  34. CLog::pay("[notify.易接] [发货] 订单: " . $order->cpOrderId . ", 金额: " . $order->amount);
  35. } else if ($order->status == 2) { # status为2(failed)的情况
  36. $order->UpdateOrderStatus(); # 直接更新订单状态,->支付失败
  37. CLog::pay("[notify.易接] [不发货] 订单: " . $order->cpOrderId);
  38. } else {
  39. echo 'FAILURE';
  40. CLog::pay("[notify.易接][处理结果]: FAILURE (未知的支付状态)"); # 日志
  41. return;
  42. }
  43. echo 'SUCCESS'; //返回给sdk server的响应内容
  44. CLog::pay("[notify.易接][处理结果]:" . "SUCCESS"); # 日志
  45. return;
  46. }
  47. }
  48. CLog::pay("[notify.易接][处理结果]:" . "FAILURE"); # 日志
  49. echo 'FAILURE'; //返回给sdk server的响应内容 ,对于重复多次通知失败的订单,请参考文档中通知机制。
  50. return;
  51. } catch (Exception $e) {
  52. CLog::pay("[notify.易接]" . $e->getMessage()); # 日志
  53. throw new exception($e->getMessage());
  54. }