xxxrrrdddd 2 年之前
父节点
当前提交
31b2677c05
共有 2 个文件被更改,包括 27 次插入22 次删除
  1. 21 0
      application/common/model/MobileOrder.php
  2. 6 22
      application/index/controller/Payment.php

+ 21 - 0
application/common/model/MobileOrder.php

@@ -6,6 +6,7 @@ use app\admin\model\Admin;
 use app\admin\model\MobileOrderAdmin;
 use app\common\service\Refund;
 use app\common\service\SmsSend;
+use think\Db;
 use think\db\Query;
 use think\Model;
 
@@ -184,6 +185,26 @@ class MobileOrder extends Model
         }
         $this['mobile']->shouldBuy();
     }
+    public function paySuccessCallback($payment=null,$data=[],$type='wechat'){
+        $mobileOrder=$this;
+        if($mobileOrder['pay_time']){
+            throw_user("手机订单已支付");
+        }
+        $mobileOrder['status']=MobileOrder::STATUS_WAIT_SEND;
+        $mobileOrder['pay_time']=$payment['pay_time'];
+        if($type=='wechat'){
+            $mobileOrder['pay_type']=1;
+            $mobileOrder['pay_no']=$data['transaction_id'];
+        }elseif($type=='alipay'){
+            $mobileOrder['pay_type']=2;
+            $mobileOrder['pay_no']=$data['trade_no'];
+        }
+        $mobileOrder['payment_id']=$payment['id'];
+        if(!$mobileOrder->save()){
+            throw_user("手机订单保存失败");
+        }
+        SmsSend::orderPayed($mobileOrder['phone']);
+    }
 
     public function scopePayed(Query $query){
         $query->where('status','>=',self::STATUS_WAIT_SEND);

+ 6 - 22
application/index/controller/Payment.php

@@ -56,31 +56,15 @@ class Payment extends Frontend
             Db::rollback();
             return 'success';
         }
-        if($mobileOrder['pay_time']){
-            user_log($name,"手机订单已支付");
+        try {
+            $mobileOrder->paySuccessCallback($payment,$data,$type);
+            Db::commit();
+        }catch (\Exception $e){
+            user_log($name,$e->getMessage());
             Db::rollback();
-            return 'success';
-        }
-        $mobileOrder['status']=MobileOrder::STATUS_WAIT_SEND;
-        $mobileOrder['pay_time']=$payment['pay_time'];
-        if($type=='wechat'){
-            $mobileOrder['pay_type']=1;
-            $mobileOrder['pay_no']=$data['transaction_id'];
-        }else{
-            $mobileOrder['pay_type']=2;
-            $mobileOrder['pay_no']=$data['trade_no'];
+            return $e->getMessage();
         }
-        $mobileOrder['payment_id']=$payment['id'];
-        if(!$mobileOrder->save()){
-            user_log($name,"手机订单保存失败");
-            Db::rollback();
-            return '手机订单保存失败';
-        }
-        SmsSend::orderPayed($mobileOrder['phone']);
-        Db::commit();
 
-        //你可以在这里你的业务处理逻辑,比如处理你的订单状态、给会员加余额等等功能
-        //下面这句必须要执行,且在此之前不能有任何输出
         echo "success";
         return;
     }