fix: payment

This commit is contained in:
tokumeikoi 2021-04-28 18:29:28 +09:00
parent 3bfa2180e6
commit 0333d62e6f
3 changed files with 9 additions and 7 deletions

View File

@ -11,11 +11,11 @@ use App\Http\Controllers\Controller;
class PaymentController extends Controller
{
public function notify($method, Request $request)
public function notify($method, $id, Request $request)
{
$paymentService = new PaymentService($method);
$paymentService = new PaymentService($method, $id);
$verify = $paymentService->notify($request->input());
if ($verify) abort(500, 'verify error');
if (!$verify) abort(500, 'verify error');
if (!$this->handle($verify['trade_no'], $verify['callback_no'])) {
abort(500, 'handle error');
}
@ -25,10 +25,10 @@ class PaymentController extends Controller
private function handle($tradeNo, $callbackNo)
{
$order = Order::where('trade_no', $tradeNo)->first();
if ($order->status === 1) return true;
if (!$order) {
abort(500, 'order is not found');
}
if ($order->status === 1) return true;
$orderService = new OrderService($order);
if (!$orderService->success($callbackNo)) {
return false;

View File

@ -21,7 +21,7 @@ class GuestRoute
// Telegram
$router->post('/telegram/webhook', 'Guest\\TelegramController@webhook');
// Payment
$router->match(['get', 'post'], '/payment/{method}', 'Guest\\PaymentController@notify');
$router->match(['get', 'post'], '/payment/{method}/{id}', 'Guest\\PaymentController@notify');
});
}
}

View File

@ -15,6 +15,8 @@ class PaymentService
if ($id) $payment = Payment::find($id)->toArray();
$this->config = [];
if (isset($payment) && $payment['config']) $this->config = json_decode($payment['config'], true);
$this->config['id'] = $id;
$this->config['enable'] = $payment['enable'];
$this->payment = new $this->class($this->config);
}
@ -27,8 +29,8 @@ class PaymentService
public function pay($order)
{
return $this->payment->pay([
'notify_url' => url('/api/v1/guest/payment/notify/' . $this->method),
'return_url' => config('v2board.app_url', env('APP_URL')) . '/#/order',
'notify_url' => url("/api/v1/guest/payment/notify/{$this->method}/{$this->config['id']}"),
'return_url' => config('v2board.app_url', env('APP_URL')) . '/#/order/' . $order['trade_no'],
'trade_no' => $order['trade_no'],
'total_amount' => $order['total_amount'],
'user_id' => $order['user_id'],