alipay_notify_url.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. define(ALIPAY_PATH, BASE_DATA_PATH . '/api/alipay');
  3. require_once(ALIPAY_PATH . '/alipay.config.php');
  4. require_once(ALIPAY_PATH . '/lib/alipay_notify.class.php');
  5. require_once(BASE_ROOT_PATH . '/helper/pay_helper.php');
  6. require_once(BASE_MOBILE_PATH . '/control/app_pay.php');
  7. require_once(BASE_DATA_PATH . '/logic/delivery.logic.php');
  8. $pay_sn = $_POST['out_trade_no']; // 商户订单号
  9. $trade_no = $_POST['trade_no']; // 支付宝交易号
  10. $total_fee = floatval(trim($_POST['total_fee']));
  11. Log::record("alipay_notify_url: pay_sn={$pay_sn} total_fee={$total_fee}", Log::DEBUG);
  12. // 步骤一:验证数据来源正确性
  13. $alipayNotify = new AlipayNotify($alipay_config);
  14. $verify_result = $alipayNotify->verifyReturn();
  15. Log::record("verify_result={$verify_result}, pay_sn={$pay_sn},", Log::DEBUG);
  16. fcgi_header("Content-Type: text/plain; charset=UTF-8\r\n\r\n");
  17. Log::record("ali post data:{$_SERVER['original_querystring']}",Log::DEBUG);
  18. if ($verify_result)
  19. {
  20. $trade_status = $_POST['trade_status'];
  21. if ($trade_status === 'TRADE_FINISHED' || $trade_status === 'TRADE_SUCCESS')
  22. {
  23. $chk = pay_helper::check_fee($pay_sn,$total_fee,$need_pay);
  24. if($chk == false) {
  25. Log::record("AliPay check: pay_sn={$pay_sn},total_fee={$total_fee},need_pay={$need_pay}",Log::WAIT_HANDLE);
  26. echo("fail");
  27. return;
  28. }
  29. else
  30. {
  31. Log::record("AliPay check: pay_sn={$pay_sn},total_fee={$total_fee},need_pay={$need_pay}",Log::DEBUG);
  32. // 步骤二:更新订单状态
  33. $cb_info = pay_helper::update_order($pay_sn, $trade_no, 'alipay');
  34. if ($cb_info['state'] == false) {
  35. Log::record("update_order fail: pay_sn={$pay_sn}", Log::DEBUG);
  36. echo('fail');
  37. return;
  38. }
  39. else
  40. {
  41. if(is_pushoms()) {
  42. $logic_delivery = Logic('delivery');
  43. $ret = $logic_delivery->putOrder($pay_sn, $trade_no);
  44. Log::record("update_order success: pay_sn={$pay_sn}", Log::DEBUG);
  45. }
  46. $pay = new pay_helper();
  47. $pay->OnSuccess($pay_sn);
  48. echo('success');
  49. return;
  50. }
  51. }
  52. }
  53. else if ($trade_status == 'WAIT_BUYER_PAY') {
  54. }
  55. echo("success"); // 交易正确时,返回success
  56. return;
  57. }
  58. else
  59. {
  60. Log::record("verify notify fail : pay_sn={$pay_sn}");
  61. echo("fail");
  62. return;
  63. }
  64. ?>