notify.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. require_once __DIR__ . '/../../../../main.php'; # 导入game utils
  3. include_once __DIR__ . '/../../Mo/payResp.php'; # 导入通用返回值结构
  4. include_once __DIR__ . '/../../Mo/payRequest.php'; # 导入通用返回值结构
  5. require_once __DIR__ . '/../../Mo/OrderNotice.php'; # 导入通知数据接收模型
  6. require_once __DIR__ . '/AopSdk.php'; # 导入alipay库
  7. require_once __DIR__ . '/config_alipay.php'; # 导入配置文件
  8. use loyalsoft\CLog;
  9. use loyalsoft\HttpUtil;
  10. HttpUtil::PostOnly();
  11. CLog::pay("[notify.zfb] [收到通知]: " . HttpUtil::getQueryString()); # 日志
  12. $params = \loyalsoft\HttpUtil::getQueryParas(); # 提取请求参数
  13. $cfg = loyalsoft\config_alipay::Inst();
  14. $aop = new AopClient();
  15. $aop->alipayrsaPublicKey = $cfg->alipayrsaPublicKey; # 支付宝公钥
  16. $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
  17. if ($flag) { # 身份校验通过,确认为Alipay发送的通知
  18. $order = loyalsoft\pay\OrderNotice::Parse_alipayOrder($params);
  19. if ($order != null) {
  20. if ($order->Check()) { # 订单校验, 1代表支付成功
  21. if ($order->status == 1) { # 订单状态是成功
  22. $order->UpdateOrderStatus(); # 更新订单状态,->已付款
  23. loyalsoft\TapDBUtil::PushPayEvent($order, 'alipay'); # 向tapdb推送充值记录
  24. CLog::pay("[notify.zfb] [发货] " . $order->cpOrderId . " >>> " . $order->amount);
  25. } else if ($order->status == 2) { # status为2(failed)的情况
  26. $order->UpdateOrderStatus(); # 直接更新订单状态,->支付失败
  27. CLog::pay("[notify.zfb] [不发货] " . $order->cpOrderId);
  28. } else {
  29. echo 'FAILURE';
  30. CLog::pay("[notify.zfb][处理结果]: FAILURE (未知的支付状态)"); # 日志
  31. return;
  32. }
  33. echo 'success'; # 返回给sdk server的响应内容
  34. CLog::pay("[notify.zfb][处理结果]: SUCCESS"); # 日志
  35. return;
  36. }
  37. }
  38. CLog::pay("[notify.zfb] [处理结果]: FAILURE (提取参数失败)"); # 日志
  39. echo 'faild!'; // 返回给sdk server的响应内容 ,对于重复多次通知失败的订单,请参考文档中通知机制。
  40. } else {
  41. echo 'faild!';
  42. CLog::pay("[notify.zfb] 签名验证失败!");
  43. }