Browse Source

支付放到正式订单里

lizhen_gitee 1 year ago
parent
commit
76c513bcc1
2 changed files with 61 additions and 6 deletions
  1. 2 2
      application/api/controller/Demo.php
  2. 59 4
      application/api/controller/Lesson.php

+ 2 - 2
application/api/controller/Demo.php

@@ -78,9 +78,9 @@ class Demo extends Api
 
             //print_r($result);
 
-            $data = $hitPayClient->getPaymentStatus($result->getId());
+            /*$data = $hitPayClient->getPaymentStatus($result->getId());
             dump($data);
-            dump($data->status);
+            dump($data->status);*/
 
             /*$data = $hitPayClient->deletePaymentRequest($data->getId());
             print_r($data);*/

+ 59 - 4
application/api/controller/Lesson.php

@@ -332,7 +332,7 @@ class Lesson extends Api
 
         $package_info = Db::name('lesson_package')->where('id',$package_id)->find();
 
-        //套餐
+        //套餐订单
         $data = [
             'order_no'    => createUniqueNo('P',$this->auth->id),
             'user_id'     => $this->auth->id,
@@ -351,7 +351,7 @@ class Lesson extends Api
             'is_gift'     => 0,
         ];
 
-        //如果有赠品
+        //如果有赠品,赠品订单
         $gift = [];
         if(!empty($package_info['gift_lesson_id']) && !empty($package_info['gift_sessions'])){
             $gift = $data;
@@ -377,6 +377,16 @@ class Lesson extends Api
         $pay_order['table_id'] = 0;
         $pay_order['args'] = json_encode(['lesson_order_id'=>$lesson_order_id]);//用来支付完成回调时,扣除N节课,并改掉预约单的状态
 
+        //拉起支付
+        $notify_url = config('notify_cdnurl');
+        $hitpay_return = $this->hitpay_payment($pay_order['out_trade_no'],$pay_order['order_amount'],$notify_url);
+        if($hitpay_return['status'] !== true){
+            $this->error($hitpay_return['msg']);
+        }
+        //支付请求id
+        $pay_order['payment_request_id'] = $hitpay_return['id'];
+
+
         //入库
         Db::startTrans();
         $order_id = Db::name('package_order')->insertGetId($data);
@@ -404,10 +414,55 @@ class Lesson extends Api
 
         Db::commit();
 
-        //拉起支付
+        unset($hitpay_return['status']);
+        unset($hitpay_return['msg']);
+        $this->success(1,$hitpay_return);
+
+    }
+
+    public function hitpay_payment($out_trade_no,$money,$notifyurl)
+    {
+        $return = [
+            'status' => false,
+            'msg'  => '',
+            'url' => '',
+            'id' => 0,
+        ];
+
+        $apiKey = config('hitpay.apikey');
+
+        try {
+            $hitPayClient = new \HitPay\Client($apiKey, true);
 
-        $this->success(1);
+            $request = new \HitPay\Request\CreatePayment();
+
+            $request->setAmount($money)
+                ->setCurrency('SGD')
+                ->setWebhook($notifyurl)
+                ->setReferenceNumber($out_trade_no);
+
+            $result = $hitPayClient->createPayment($request);
+
+            $return['status'] = true;
+            $return['url'] = $result->getUrl();
+            $return['id']  = $result->getId();
+
+
+            //print_r($result);
+
+            /*$data = $hitPayClient->getPaymentStatus($result->getId());
+            dump($data);
+            dump($data->status);*/
+
+            /*$data = $hitPayClient->deletePaymentRequest($data->getId());
+            print_r($data);*/
+
+
+        } catch (\Exception $e) {
+            $return['msg'] = $e->getMessage();
+        }
 
+        return $return;
     }