Hôm nay mình xin mạn phép giới thiệu thêm với mọi người 1 phương thức thanh toán là Stripe. Ở đây mình đã code trước phần CRUD sản phẩm, nên sẽ tập trung vào phần thanh toán.
Và giờ sẽ bắt đầu ngay và luôn 😁
Trước tiên, mọi người download Stripe bằng composer : composer require stripe/stripe-php
Tạo file stripe.php trong config\stripe.php
return [
'pk' => env('STRIPE_KEY'),
'sk' => env('STRIPE_SECRET'),
];
Mở file .env và thêm đoạn code này (lấy pk_test và sk_test ở link mình để bên dưới)
STRIPE_KEY=pk_test_xxxxxxxxxxxxxxxxxxx
STRIPE_SECRET=sk_test_xxxxxxxxxxxxxx
Sau khi lấy pk_test và sk_test, thì thay nó vào đây nhé
Tạo route để xử lý 3 việc : việc thanh toán - thanh toán thành công - cancel khi thanh toán
Tạo StripleController để xử lý việc thanh toán (Tuỳ vào từng dự án mà mọi người sẽ xử lý lại phần logic này nhé. Đây là phần xử lý cho việc thanh toán trong phạm vi project này)
public function session()
{
if (! auth()->check()) {
session(['checkout_after_login' => true]);
return redirect()->route('login');
} else {
$courseItems = [];
\Stripe\Stripe::setApiKey(config('stripe.sk'));
foreach (session('cart') as $id => $details) {
$name = $details['name'];
$price = (int) (float) str_replace('.', '', $details['price']);
$courseItems[] = [
'price_data' => [
'currency' => 'USD',
'unit_amount' => $price,
'product_data' => [
'name' => $name,
],
],
'quantity' => 1,
];
}
$checkoutSession = \Stripe\Checkout\Session::create([
'line_items' => $courseItems,
'mode' => 'payment',
'allow_promotion_codes' => true,
'metadata' => [
'user_id' => '0001',
],
'customer_email' => ! empty(auth()->user()) ? auth()->user()->email : null,
'success_url' => route('user.success'),
'cancel_url' => route('user.cancel'),
]);
return redirect()->away($checkoutSession->url);
}
}
Nhập tài khoản test mình đã ghim bên dưới và thực hiện thanh toán. Nếu hiển thị được màn hình này thì bạn đã thành công
Khi thành công / thất bại thì mọi người sẽ xử lý thêm logic ở phần route success / cancel nhé. Ví dụ nếu thành công thì chuyển sang trang list order với 1 toast message là “Bạn vừa order thành công” và đưa logic gửi email vào queue để tăng trải nghiệm người dùng
Các thông tin thêm mình có nhắc ở trên bài
+, Github : https://github.com/stripe/stripe-php
+, Tài khoản test : https://stripe.com/docs/testing
+, Lấy API Key pk_test & sk_test : https://dashboard.stripe.com/test/apikeys
+, Xem danh sách đơn hàng được thanh toán thành công : https://dashboard.stripe.com/test/payments?status[]=successful
Vì là bài đầu tiên chia sẻ, rất mong mọi người nhấn vào nút like để mình biết rằng mọi người đã đọc bài viết này. Xin cảm ơn!