notify.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * Description of notify
  4. * @version
  5. * 1.0.0 Created at 2018-3-20. by --gwang
  6. * @author gwang (mail@wanggangzero.cn)
  7. * @copyright ? 2018-3-20, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  8. */
  9. include_once __DIR__ . '/../../../main.php'; # 导入game utils
  10. include_once __DIR__ . '/../Mo/payResp.php'; # 导入通用返回值结构
  11. include_once __DIR__ . '/../Mo/payRequest.php'; # 导入通用返回值结构
  12. require_once __DIR__ . '/../Mo/OrderNotice.php'; #
  13. require_once __DIR__ . '/lib/Sdk.php'; # 百度SDK
  14. use loyalsoft\CLog;
  15. use loyalsoft\HttpUtil;
  16. use loyalsoft\pay\OrderNotice;
  17. header("Content-type: text/html; charset=utf-8");
  18. try {
  19. $sdk = new Sdk(); # sdk
  20. $params = HttpUtil::getQueryParas(); # 请求数组
  21. CLog::pay("[notify.百度]收到支付回调请求: " . HttpUtil::getQueryString()); # 日志
  22. extract($params);
  23. //参数检测
  24. if (empty($OrderSerial) || empty($CooperatorOrderSerial) || empty($Sign) || empty($Content)) {
  25. $sdk->ret(1000, "接收参数失败");
  26. }
  27. if ($Sign != $sdk->SignMd5($OrderSerial . $CooperatorOrderSerial, urldecode($Content))) { # 签名验证不通过
  28. CLog::pay("[notify.百度]" . " 验签失败! ");
  29. $sdk->ret(1001, "签名错误");
  30. }
  31. $order = OrderNotice::Parse_Baidu($params); # 将参数归一化到order
  32. if ($order != null) {
  33. if ($order->Check()) { # 订单校验,
  34. if ($order->status == 1) { # 订单状态是成功
  35. $order->UpdateOrderStatus(); # 更新订单状态,->已付款
  36. CLog::pay("[notify.百度] [发货] 订单: " . $order->cpOrderId . ", 金额: " . $order->amount);
  37. } else if ($order->status == 2) { # status为2(failed)的情况
  38. $order->UpdateOrderStatus(); # 直接更新订单状态,->支付失败
  39. CLog::pay("[notify.百度] [不发货] 订单: " . $order->cpOrderId);
  40. } else {
  41. CLog::pay("[notify.百度][处理结果]: FAILURE (未知的支付状态)"); # 日志
  42. $sdk->ret(2, '未知的支付状态');
  43. }
  44. CLog::pay("[notify.百度][处理结果]:" . "SUCCESS"); # 日志
  45. $sdk->ret(1, "成功"); # 返回给sdk server的响应内容
  46. }
  47. CLog::pay("[notify.百度][处理结果]:" . "FAILURE"); # 日志
  48. $sdk->ret(3, '订单数据校验失败');
  49. }
  50. CLog::pay("[notify.百度][处理结果]:" . "FAILURE"); # 日志
  51. $sdk->ret(3, '归一化订单数据失败');
  52. } catch (Exception $e) {
  53. CLog::pay("[notify.百度]" . $e->getMessage()); # 日志
  54. // throw new exception($e->getMessage());
  55. $sdk->ret(-1, '发生未知的异常');
  56. }