notify.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. // if (PLAT == 'tap') {
  24. loyalsoft\TapDBUtil::PushPayEvent($order, 'alipay'); # 向tapdb推送充值记录
  25. // }
  26. CLog::pay("[notify.zfb] [发货] " . $order->cpOrderId . " >>> " . $order->amount);
  27. } else if ($order->status == 2) { # status为2(failed)的情况
  28. $order->UpdateOrderStatus(); # 直接更新订单状态,->支付失败
  29. CLog::pay("[notify.zfb] [不发货] " . $order->cpOrderId);
  30. } else {
  31. echo 'FAILURE';
  32. CLog::pay("[notify.zfb][处理结果]: FAILURE (未知的支付状态)"); # 日志
  33. return;
  34. }
  35. echo 'success'; # 返回给sdk server的响应内容
  36. CLog::pay("[notify.zfb][处理结果]: SUCCESS"); # 日志
  37. return;
  38. }
  39. }
  40. CLog::pay("[notify.zfb] [处理结果]: FAILURE (提取参数失败)"); # 日志
  41. echo 'faild!'; // 返回给sdk server的响应内容 ,对于重复多次通知失败的订单,请参考文档中通知机制。
  42. } else {
  43. echo 'faild!';
  44. CLog::pay("[notify.zfb] 签名验证失败!");
  45. }