PayController.php
3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
namespace App\Http\Controllers\V1;
use App\Http\Controllers\Controller;
use App\Models\Order;
use App\Payment\PaymentFactory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Jiannei\Response\Laravel\Support\Facades\Response;
class PayController extends Controller
{
public function index(Request $request,PaymentFactory $factory)
{
$order_sn = $request->get('order_sn');
$pay_type = $request->get('pay_type');
$order = Order::query()->where('order_sn', $order_sn)->first();
if ($order->status != Order::UNPAID) return Response::fail('订单错误!');
// if ($order->pay_amount <= 0) return $this->paid($order_sn); 0元购应该单独写一套
$payment = $factory->init($pay_type)->prepare($order);
return Response::success($payment);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Payment\PaymentFactory $factory
* @return \Illuminate\Http\JsonResponse
*/
public function store(Request $request, PaymentFactory $factory)
{
// 回调
$order_sn = $request->post('order_sn');
$pay_type = $request->post('pay_type');
$token = $request->post('token');
// $order = Order::query()->where('order_sn', $order_sn)->first();
//
// if ($order->status != Order::UNPAID) return Response::fail('订单错误!');
$payment = $factory->init($pay_type)->notify($order_sn, $token);
if ($payment) return Response::success(['order_sn' => $order_sn], '支付成功');
else return Response::fail('订单错误!');
}
/**
* Display the specified resource.
*
* @param int $id
* @param Request $request
* @param PaymentFactory $factory
* @return \Illuminate\Http\JsonResponse
* @throws \Exception
*/
public function show($id, Request $request, PaymentFactory $factory)
{
$pay_type = $request->get('pay_type');
$capture = $factory->init($pay_type)->capture($id);
return Response::success($capture);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
public function iapCallback(Request $request, PaymentFactory $factory, $service)
{
$all = $request->all();
if ($service == 'apple') {
$factory->init($service)->notify($all['signedPayload']);
}elseif ($service == 'apple-sandbox'){
$factory->init($service)->notifySandbox($all['signedPayload']);
} else {
$factory->init($service)->notify($all['message']['data']);
}
return Response::ok();
}
}