Silent 6 years ago
parent
commit
c5b35ac579

+ 36 - 5
app/Http/Controllers/WeChat/ApiController.php

xqd xqd xqd
@@ -623,12 +623,12 @@ class ApiController extends Controller
         $money = $form_set->money;
 
         if($type == 'pay' && !empty($money)) {
-            return $this->makeOrder($request, $money);
+            return $this->makeOrder($request, $money, $res->id);
         }
         return response()->json(['status' => 'success', 'info' => '提交成功']);
     }
 
-    public function makeOrder(Request $request, $money)
+    public function makeOrder(Request $request, $money, $form_data_id)
     {
         if(empty($request->input('id')) || empty($we_chat_user = WeChatUser::find($request->input('id')))) {
             return response()->json(['status' => 'fail', 'info' => '找不到用户']);
@@ -638,18 +638,29 @@ class ApiController extends Controller
 
         $out_trade_no = (new Order())->getOutTradeNo();
 
+        $order = Order::create([
+            'out_trade_no' => $out_trade_no,
+            'pay_position' => $request->input('mode', 1),
+            'pay_status' => 1,
+            'pay_method' => 1,
+            'money' => $money,
+            'form_data_id' => $form_data_id
+        ]);
+
+        if(empty($order)) {
+            return response()->json(['status' => 'fail', 'info' => '订单创建失败']);
+        }
+
         $result = $app->order->unify([
             'body' => '钢琴时间',
             'out_trade_no' => $out_trade_no,
 //            'total_fee' => $request->input('money'),
             'notify_url' => url('/api/payNotify'),
-            'total_fee' => 1,
+            'total_fee' => $money,
             'trade_type' => 'JSAPI',
             'openid' => $we_chat_user->open_id,
         ]);
 
-        Log::info($result);
-
         if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS'){
             $prepayId = $result['prepay_id'];
             $config = [
@@ -670,4 +681,24 @@ class ApiController extends Controller
         }
         return response()->json(['status' => 'success', 'data' => $json]);
     }
+
+    public function payNotify(Request $request)
+    {
+        $app = app('wechat.payment');
+
+        $response = $app->handlePaidNotify(function ($message, $fail) {
+            if($message['return_code'] === 'SUCCESS' && $message['result_code'] === 'SUCCESS' ) {
+                $order = Order::where('out_trade_no', $message['out_trade_no'])->first();
+                if(!empty($order) && $order->money  == $message['total_fee']) {
+                    $order->pay_status = 2;
+                    $order->save();
+                }
+            } else {
+                return $fail('通信失败,请稍后再通知我');
+            }
+            return true;
+        });
+
+        return $response;
+    }
 }

+ 30 - 0
database/migrations/2018_08_18_205757_add_form_data_id_to_orders.php

xqd
@@ -0,0 +1,30 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class AddFormDataIdToOrders extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('orders', function (Blueprint $table) {
+            $table->unsignedInteger('form_data_id')->nullable()->after('money')->comment('表单ID');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //
+    }
+}

+ 2 - 1
routes/wechat.php

xqd
@@ -19,4 +19,5 @@ Route::post('updateUserInfo', 'ApiController@updateUserInfo');
 Route::get('bindPhone', 'ApiController@bindPhone');
 Route::post('getPhone', 'ApiController@getPhone');
 Route::get('getFormSet', 'ApiController@getFormSet');
-Route::post('submitForm', 'ApiController@submitForm');
+Route::post('submitForm', 'ApiController@submitForm');
+Route::any('payNotify', 'ApiController@payNotify');

+ 1 - 1
wechat/app.json

xqd
@@ -1,7 +1,7 @@
 {
   "pages": [
-    "pages/index/index",
     "pages/form/index",
+    "pages/index/index",
     "pages/article/article",
     "pages/announce/announce",
     "pages/announce-detail/index",

+ 9 - 8
wechat/pages/form/index.js

xqd
@@ -108,14 +108,15 @@ Page({
         console.log(res)
         if (res.data.status == 'success') {
           if(value.type == 'pay') {
-            // wx.requestPayment({
-            //   timeStamp: '',
-            //   nonceStr: '',
-            //   package: '',
-            //   signType: '',
-            //   paySign: '',
-            // })
-            console.log(res);
+            data = JSON.parse(res.data.data)
+            console.log(data)
+            wx.requestPayment({
+              timeStamp: data.timeStamp,
+              nonceStr: data.nonceStr,
+              package: data.package,
+              signType: data.signType,
+              paySign: data.paySign,
+            })
           } else {
             wx.showToast({
               icon: 'none',