Khi tạo một ứng dụng web thương mại điện tử, việc tích hợp thanh toán trực tuyến là rất quan trọng để cung cấp cho khách hàng của bạn một trải nghiệm mua sắm thuận tiện và an toàn. Một trong những phương thức thanh toán phổ biến hiện nay là Stripe. Stripe cung cấp một API mạnh mẽ và dễ sử dụng cho phép bạn nhận thanh toán từ khách hàng trên toàn thế giới. Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách viết một class trong PHP để tích hợp thanh toán Stripe. Chúng ta sẽ đi qua từng bước, từ việc thiết lập môi trường đến viết mã cần thiết cho việc xử lý thanh toán.
Giới thiệu về Stripe
Stripe là một nền tảng xử lý thanh toán trực tuyến được sử dụng rộng rãi bởi nhiều doanh nghiệp lớn nhỏ trên toàn cầu. Với tính năng dễ dàng tích hợp, Stripe cho phép các lập trình viên xây dựng các phương thức thanh toán tùy chỉnh cho ứng dụng của họ. SDK của Stripe hỗ trợ nhiều ngôn ngữ lập trình, và trong bài viết này, chúng ta sẽ tập trung vào PHP.
Cài đặt và cấu hình Stripe
Trước khi bắt đầu viết mã, bạn cần thực hiện một số bước để thiết lập tài khoản và môi trường làm việc.
Tạo tài khoản Stripe
- Truy cập trang web Stripe và tạo một tài khoản miễn phí.
- Sau khi tạo tài khoản, bạn sẽ nhận được các khóa API (Publishable Key và Secret Key) mà bạn sẽ cần để thực hiện các yêu cầu thanh toán.
Cài đặt SDK Stripe
Stripe cung cấp một thư viện PHP mà bạn có thể cài đặt thông qua Composer. Để làm điều này, bạn cần có Composer được cài đặt trên máy tính của bạn.
composer require stripe/stripe-php
Sau khi cài đặt, bạn có thể tự do sử dụng thư viện trong ứng dụng của mình.
Viết class tích hợp thanh toán
Bây giờ chúng ta sẽ viết một class PHP để xử lý việc thanh toán bằng Stripe.
Tạo class StripePayment
Dưới đây là một ví dụ về class StripePayment
với các phương thức cần thiết để xử lý thanh toán.
<?php
require 'vendor/autoload.php'; // Đảm bảo autoload được gọi
class StripePayment {
private $stripe;
private $secretKey;
public function __construct($secretKey) {
$this->secretKey = $secretKey;
\Stripe\Stripe::setApiKey($this->secretKey);
}
public function createCharge($amount, $currency, $source, $description) {
try {
$charge = \Stripe\Charge::create([
'amount' => $amount,
'currency' => $currency,
'source' => $source,
'description' => $description,
]);
return $charge;
} catch (\Stripe\Exception\CardException $e) {
// Xử lý lỗi khi thẻ không hợp lệ
return ['error' => $e->getMessage()];
} catch (\Exception $e) {
// Xử lý các lỗi khác
return ['error' => $e->getMessage()];
}
}
}
Giải thích mã
- Constructor: Chúng ta khởi tạo class với
secretKey
và thiết lập khóa API cho Stripe. - Phương thức
createCharge
: Nhận thông tin chi tiết về thanh toán như số tiền, loại tiền tệ, nguồn thanh toán (token thẻ tín dụng) và mô tả. Nó sẽ gọi API của Stripe để tạo một khoản phí.
Sử dụng class StripePayment
Bây giờ chúng ta hãy xem cách sử dụng class StripePayment
mà chúng ta đã tạo để tiến hành thanh toán.
// Ví dụ sử dụng
$secretKey = 'sk_test_XXXXXXXXXXXXXXXXXXXXXXXX'; // Thay bằng Secret Key của bạn
$stripePayment = new StripePayment($secretKey);
// Các thông tin thanh toán
$amount = 5000; // Số tiền cần thanh toán (tính bằng cents, ở đây là 50.00 USD)
$currency = 'usd';
$source = 'tok_visa'; // Token mà bạn nhận được từ frontend
$description = 'Test Charge';
// Thực hiện thanh toán
$response = $stripePayment->createCharge($amount, $currency, $source, $description);
if (isset($response['error'])) {
echo 'Lỗi: ' . $response['error'];
} else {
echo 'Thanh toán thành công! ID giao dịch: ' . $response->id;
}
Ghi chú về bảo mật
- Đảm bảo không để Secret Key của bạn rò rỉ. Nên lưu trữ nó trong một biến môi trường hoặc tệp cấu hình, không để lộ trong mã nguồn công khai.
- Chỉ sử dụng Publishable Key cho phần phía client (điện thoại hoặc trình duyệt).
Thực hiện thanh toán từ phía client
Để hoạt động hiệu quả, phần phía client (frontend) của bạn cũng cần thiết lập để thu thập thông tin thẻ tín dụng và tạo token cho nó.
Thêm Stripe.js vào trang của bạn
<script src="https://js.stripe.com/v3/"></script>
Tạo form thanh toán
<form id="payment-form">
<div id="card-element"><!-- Một nơi để nhúng Element --></div>
<button type="submit">Pay</button>
<div id="payment-result"></div>
</form>
<script>
var stripe = Stripe('pk_test_XXXXXXXXXXXXXXXXXXXXXXXX'); // Khóa di động
var elements = stripe.elements();
var cardElement = elements.create('card');
cardElement.mount('#card-element');
document.getElementById('payment-form').addEventListener('submit', function(event) {
event.preventDefault();
stripe.createToken(cardElement).then(function(result) {
if (result.error) {
// Hiển thị lỗi
document.getElementById('payment-result').innerText = result.error.message;
} else {
// Gửi token đến server của bạn
fetch('/your-server-endpoint', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({token: result.token.id}),
}).then(function(response) {
return response.json();
}).then(function(paymentResponse) {
document.getElementById('payment-result').innerText = paymentResponse.message;
});
}
});
});
</script>
Kết luận
Trên đây là hướng dẫn tích hợp thanh toán Stripe trong ứng dụng PHP của bạn bằng cách tạo một class đơn giản nhưng hiệu quả. Quy trình này sẽ giúp bạn triển khai nhanh chóng và an toàn các phương thức thanh toán cho khách hàng của mình. Hãy nhớ kiểm tra các yêu cầu bảo mật khi xử lý thanh toán, đồng thời luôn tuân thủ các quy định về bảo mật dữ liệu khi làm việc với thông tin thẻ tín dụng. Với những bước này, bạn có thể dễ dàng triển khai và quản lý thanh toán trực tuyến thông qua Stripe!
Comments