| 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' => '找不到用户']);
|
| xqd
@@ -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 = [
|
| xqd
@@ -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;
|
|
|
+ }
|
|
|
}
|