alipay_notify_url.php 2.6 KB

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