alipay_notify_url.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. require_once(BASE_ROOT_PATH . '/helper/pay_helper.php');
  3. require_once(BASE_DATA_PATH . '/logic/delivery.logic.php');
  4. $pay_sn = $_POST['out_trade_no']; // 商户订单号
  5. $trade_no = $_POST['trade_no']; // 支付宝交易号
  6. Log::record("alipay_notify_url: pay_sn={$pay_sn} total_fee={$total_fee}", Log::DEBUG);
  7. // 步骤一:验证数据来源正确性
  8. if(defined('SERVER_TYPE') && SERVER_TYPE == 'panda')
  9. {
  10. define(ALIPAY_PATH, BASE_DATA_PATH . '/api/alipay');
  11. require_once(ALIPAY_PATH . '/alipay.config.php');
  12. require_once(ALIPAY_PATH . '/lib/alipay_notify.class.php');
  13. $alipayNotify = new AlipayNotify($alipay_config);
  14. $verify_result = $alipayNotify->verifyReturn();
  15. $total_fee = doubleval(trim($_POST['total_fee']));
  16. Log::record("走pandaup 阿里支付验签过程", Log::DEBUG);
  17. }
  18. elseif(defined('SERVER_TYPE') && SERVER_TYPE == 'car') {
  19. $ipay = new pay\aopay();
  20. $verify_result = $ipay->verify($_POST);
  21. $total_fee = doubleval(trim($_POST['total_amount']));
  22. Log::record("走pandaup 阿里支付验签过程", Log::DEBUG);
  23. }
  24. else {
  25. Log::record("没有找到阿里支付密钥",Log::DEBUG);
  26. }
  27. Log::record("verify_result={$verify_result}, pay_sn={$pay_sn},", Log::DEBUG);
  28. fcgi_header("Content-Type: text/plain; charset=UTF-8\r\n\r\n");
  29. Log::record("ali post data:{$_SERVER['post_content']}",Log::DEBUG);
  30. if ($verify_result)
  31. {
  32. $payer = new pay_helper($pay_sn);
  33. $trade_status = $_POST['trade_status'];
  34. if ($trade_status === 'TRADE_FINISHED' || $trade_status === 'TRADE_SUCCESS')
  35. {
  36. if($payer->paied()) {
  37. echo('success'); //该订单已经支付
  38. return;
  39. }
  40. $chk = $payer->check_fee($total_fee,$need_pay);
  41. if($chk == false) {
  42. Log::record("AliPay check: pay_sn={$pay_sn},total_fee={$total_fee},need_pay={$need_pay}",Log::ERR);
  43. echo("fail");
  44. return;
  45. }
  46. else
  47. {
  48. Log::record("AliPay check: pay_sn={$pay_sn},total_fee={$total_fee},need_pay={$need_pay}",Log::DEBUG);
  49. // 步骤二:更新订单状态
  50. $cb_info = $payer->update_order($trade_no, 'alipay');
  51. if ($cb_info['state'] == false) {
  52. Log::record("update_order fail: pay_sn={$pay_sn}", Log::DEBUG);
  53. echo('fail');
  54. return;
  55. }
  56. else
  57. {
  58. if(is_pushoms()) {
  59. $logic_delivery = Logic('delivery');
  60. $ret = $logic_delivery->putOrder($pay_sn, $trade_no);
  61. Log::record("update_order success: pay_sn={$pay_sn}", Log::DEBUG);
  62. }
  63. $payer->OnSuccess();
  64. echo('success');
  65. return;
  66. }
  67. }
  68. }
  69. elseif ($trade_status == 'WAIT_BUYER_PAY') {
  70. }
  71. else {
  72. }
  73. echo("success"); // 交易正确时,返回success
  74. return;
  75. }
  76. else
  77. {
  78. Log::record("verify notify fail : pay_sn={$pay_sn}");
  79. echo("fail");
  80. return;
  81. }
  82. ?>