Browse Source

紧急修复支付,可能是文件没宝航的问题

stanley-king 8 years ago
parent
commit
b1fa706bf3
2 changed files with 19 additions and 3 deletions
  1. 15 0
      helper/pay_helper.php
  2. 4 3
      mobile/alipay_notify_url.php

+ 15 - 0
helper/pay_helper.php

@@ -116,6 +116,21 @@ class pay_helper
         }
     }
 
+    public static function check_fee($pay_sn,$total_fee,&$need_pay)
+    {
+        $logic_payment = Logic('payment');
+        $result = $logic_payment->getRealOrderInfo($pay_sn);
+
+        if (intval($result['data']['api_pay_state']) != 0) {
+            return false;
+        }
+
+        $need_pay = intval($result['data']['api_pay_amount'] * 100 + 0.5);
+        $total_fee = intval($total_fee * 100 + 0.5);
+
+        return ($need_pay === $total_fee);
+    }
+
     public function OnNotify($param,$payment)
     {
         $pay = $this->gen_payment($payment);

+ 4 - 3
mobile/alipay_notify_url.php

@@ -4,8 +4,9 @@ define(ALIPAY_PATH, BASE_DATA_PATH . '/api/alipay');
 
 require_once(ALIPAY_PATH . '/alipay.config.php');
 require_once(ALIPAY_PATH . '/lib/alipay_notify.class.php');
+require_once(BASE_ROOT_PATH . '/helper/pay_helper.php');
 require_once(BASE_MOBILE_PATH . '/control/app_pay.php');
-require_once (BASE_DATA_PATH . '/logic/delivery.logic.php');
+require_once(BASE_DATA_PATH   . '/logic/delivery.logic.php');
 
 $pay_sn = $_POST['out_trade_no'];       // 商户订单号
 $trade_no = $_POST['trade_no'];         // 支付宝交易号
@@ -27,7 +28,7 @@ if ($verify_result)
     $trade_status = $_POST['trade_status'];
     if ($trade_status === 'TRADE_FINISHED' || $trade_status === 'TRADE_SUCCESS')
     {
-        $chk = app_payControl::check_fee($pay_sn,$total_fee,$need_pay);
+        $chk = pay_helper::check_fee($pay_sn,$total_fee,$need_pay);
         if($chk == false) {
             Log::record("AliPay check: pay_sn={$pay_sn},total_fee={$total_fee},need_pay={$need_pay}",Log::WAIT_HANDLE);
             echo("fail");
@@ -37,7 +38,7 @@ if ($verify_result)
         {
             Log::record("AliPay check: pay_sn={$pay_sn},total_fee={$total_fee},need_pay={$need_pay}",Log::DEBUG);
             // 步骤二:更新订单状态
-            $cb_info = app_payControl::update_order($pay_sn, $trade_no, 'alipay');
+            $cb_info = pay_helper::update_order($pay_sn, $trade_no, 'alipay');
             if ($cb_info['state'] == false) {
                 Log::record("update_order fail: pay_sn={$pay_sn}", Log::DEBUG);
                 echo('fail');