stanley-king 9 年之前
父节点
当前提交
94c663c443
共有 3 个文件被更改,包括 28 次插入3 次删除
  1. 0 1
      data/logic/delivery.logic.php
  2. 8 2
      mobile/alipay_notify_url.php
  3. 20 0
      mobile/control/app_pay.php

+ 0 - 1
data/logic/delivery.logic.php

@@ -106,7 +106,6 @@ class deliveryLogic
                         Log::record("PUSHOMS ERR pay_sn={$pay_sn},trade_no = {$trade_no}",Log::WAIT_HANDLE);
                     } else {
                         Log::record("PUSHOMS SUCCESS pay_sn={$pay_sn},trade_no = {$trade_no}",Log::DEBUG);
-                        Log::record("PUSHOMS ERR pay_sn={$pay_sn},trade_no = {$trade_no}",Log::WAIT_HANDLE);
                     }
                 }
             }

+ 8 - 2
mobile/alipay_notify_url.php

@@ -9,13 +9,14 @@ require_once (BASE_DATA_PATH . '/logic/delivery.logic.php');
 
 $out_trade_no = $_POST['out_trade_no'];  // 商户订单号
 $trade_no = $_POST['trade_no'];          // 支付宝交易号
+$total_fee = floatval(trim($_POST['total_fee']));
 
-Log::record("alipay_notify_url: out_trade_no={$out_trade_no}", Log::DEBUG);
+Log::record("alipay_notify_url: out_trade_no={$out_trade_no} total_fee={$total_fee}", Log::DEBUG);
 
 // 步骤一:验证数据来源正确性
 $alipayNotify = new AlipayNotify($alipay_config);
 $verify_result = $alipayNotify->verifyReturn();
-Log::record("verify_result={$verify_result}, out_trade_no={$out_trade_no}", Log::DEBUG);
+Log::record("verify_result={$verify_result}, out_trade_no={$out_trade_no},", Log::DEBUG);
 
 fcgi_header("Content-Type: text/plain; charset=UTF-8\r\n\r\n");
 
@@ -26,6 +27,11 @@ if ($verify_result)
     $trade_status = $_POST['trade_status'];
     if ($trade_status === 'TRADE_FINISHED' || $trade_status === 'TRADE_SUCCESS')
     {
+        $chk = app_payControl::check_fee($out_trade_no,$total_fee);
+        if($chk == false) {
+            Log::record("AliPay check: pay_sn={$out_trade_no},total_fee={$total_fee}",Log::WAIT_HANDLE);
+            echo("success");
+        }
         // 步骤二:更新订单状态
         $cb_info = app_payControl::update_order($out_trade_no, $trade_no, 'alipay');
         if ($cb_info['state'] == false) {

+ 20 - 0
mobile/control/app_pay.php

@@ -258,6 +258,26 @@ class app_payControl extends mbMemberControl
         return $ret;
     }
 
+    public function check_fee($pay_sn,$total_fee)
+    {
+        $logic_payment = Logic('payment');
+        $result = $logic_payment->getRealOrderInfo($pay_sn);
+
+        if (intval($result['data']['api_pay_state']) != 0) {
+            $val = intval($result['data']['api_pay_state']);
+            Log::record("cur state = {$val}",Log::DEBUG);
+            return false;
+        }
+
+        Log::record($this->toString($result['data']), Log::DEBUG);
+
+        if(bccomp($result['data']['api_pay_amount'],$total_fee,2) == 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     /**
      * @return array
      * @throws WxPayException