×

Tích hợp các cổng thanh toán trực tuyến trong PHP

Ngành thương mại điện tử đang phát triển mạnh mẽ, đòi hỏi các doanh nghiệp phải liên tục cải thiện trải nghiệm thanh toán trực tuyến. Để cạnh tranh, việc tích hợp các cổng thanh toán trực tuyến là không thể thiếu. Bài viết này sẽ giới thiệu cách tích hợp một số cổng thanh toán phổ biến trong ngôn ngữ lập trình PHP.

Lợi ích của việc tích hợp cổng thanh toán trực tuyến

Tích hợp cổng thanh toán có nhiều lợi ích khác nhau:

  1. Tăng doanh thu: Cho phép khách hàng dễ dàng thanh toán trực tuyến.
  2. Tính tiện lợi: Giúp khách hàng không phải mất thời gian cho các giao dịch phức tạp.
  3. Bảo mật: Hầu hết các cổng thanh toán đều có tính năng bảo mật cao giúp bảo vệ thông tin của khách hàng.
  4. Quốc tế hóa: Giao dịch dễ dàng với các khách hàng quốc tế.

Các bước cơ bản để tích hợp cổng thanh toán

  1. Lựa chọn cổng thanh toán phù hợp: Một số cổng thanh toán phổ biến là PayPal, Stripe, VnPay, v.v.
  2. Đăng ký tài khoản: Tạo tài khoản doanh nghiệp trên cổng thanh toán mà bạn lựa chọn.
  3. Nhận tích hợp API: Hầu hết các cổng thanh toán sẽ cung cấp tài liệu và các khoá API cần thiết cho việc lập trình.
  4. Viết mã tích hợp: Sử dụng PHP để gửi yêu cầu và xử lý phản hồi từ cổng thanh toán.

Tích hợp PayPal

Bước 1: Cấu hình PayPal SDK

Bạn cần cài đặt thư viện SDK của PayPal thông qua Composer:

composer require paypal/rest-api-sdk-php

Bước 2: Thiết lập cấu hình

require 'vendor/autoload.php';

$apiContext = new \PayPal\Rest\ApiContext(
    new \PayPal\Auth\OAuthTokenCredential(
        'client_id',     // Thay bằng ClientID của bạn
        'client_secret'      // Thay bằng ClientSecret của bạn
    )
);

Bước 3: Tạo yêu cầu thanh toán

use PayPal\Api\Payer;
use PayPal\Api\Amount;
use PayPal\Api\Transaction;
use PayPal\Api\RedirectUrls;
use PayPal\Api\Payment;

$payer = new Payer();
$payer->setPaymentMethod('paypal');

$amount = new Amount();
$amount->setTotal('10.00');
$amount->setCurrency('USD');

$transaction = new Transaction();
$transaction->setAmount($amount);
$transaction->setDescription("Payment description");

$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("http://example.com/success")
    ->setCancelUrl("http://example.com/cancel");

$payment = new Payment();
$payment->setIntent('sale')
    ->setPayer($payer)
    ->setRedirectUrls($redirectUrls)
    ->setTransactions(array($transaction));

try {
    $payment->create($apiContext);
    echo $payment->getApprovalLink();
} catch (PayPal\Exception\PayPalConnectionException $ex) {
    echo $ex->getData();
}

Tích hợp Stripe

Bước 1: Cấu hình Stripe SDK

Cài đặt thư viện Stripe thông qua Composer:

composer require stripe/stripe-php

Bước 2: Thiết lập cấu hình

require 'vendor/autoload.php';

\Stripe\Stripe::setApiKey('your_secret_key'); // Thay bằng khoá bí mật của bạn

Bước 3: Tạo yêu cầu thanh toán

header('Content-Type: application/json');

$YOUR_DOMAIN = 'http://example.com';

$checkout_session = \Stripe\Checkout\Session::create([
  'payment_method_types' => ['card'],
  'line_items' => [[
    'price_data' => [
      'currency' => 'usd',
      'product_data' => [
        'name' => 'T-shirt',
      ],
      'unit_amount' => 2000,
    ],
    'quantity' => 1,
  ]],
  'mode' => 'payment',
  'success_url' => $YOUR_DOMAIN . '/success.html',
  'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
]);

echo json_encode(['id' => $checkout_session->id]);

Tích hợp VnPay

Bước 1: Thiết lập tài khoản và cấu hình

Đăng ký tài khoản trên VnPay và lấy các thông tin cấu hình cần thiết.

Bước 2: Tạo yêu cầu thanh toán

$vnp_TmnCode = "YOUR_TMN_CODE"; //Mã website tại VNPAY 
$vnp_HashSecret = "YOUR_HASH_SECRET"; //Chuỗi bí mật

$vnp_Url = "http://sandbox.vnpayment.vn/paymentv2/vpcpay.html";
$vnp_Returnurl = "http://yourdomain.com/return_vnpay.php";
$vnp_TxnRef = "123456"; //Mã hóa đơn
$vnp_OrderInfo = "Noi dung thanh toan";
$vnp_OrderType = "billpayment";
$vnp_Amount = 2000000 * 100;
$vnp_Locale = "vn";
$vnp_IpAddr = $_SERVER['REMOTE_ADDR'];

$inputData = array(
    "vnp_Version" => "2.1.0",
    "vnp_TmnCode" => $vnp_TmnCode,
    "vnp_Amount" => $vnp_Amount,
    "vnp_Command" => "pay",
    "vnp_CreateDate" => date('YmdHis'),
    "vnp_CurrCode" => "VND",
    "vnp_IpAddr" => $vnp_IpAddr,
    "vnp_Locale" => $vnp_Locale,
    "vnp_OrderInfo" => $vnp_OrderInfo,
    "vnp_OrderType" => $vnp_OrderType,
    "vnp_ReturnUrl" => $vnp_Returnurl,
    "vnp_TxnRef" => $vnp_TxnRef,
);

ksort($inputData);
$query = "";
$i = 0;
$hashdata = ""; 
foreach ($inputData as $key => $value) {
    if ($i == 1) {
        $hashdata .= '&';
        $query .= '&';
    }
    $hashdata .= urlencode($key) . "=" . urlencode($value);
    $query .= urlencode($key) . "=" . urlencode($value);
    $i = 1;
}

$vnp_Url = $vnp_Url . "?" . $query;
if (isset($vnp_HashSecret)) {
    $vnpSecureHash = hash_hmac('sha512', $hashdata, $vnp_HashSecret);
    $vnp_Url .= '&vnp_SecureHash=' . $vnpSecureHash;
}

header('Location: ' . $vnp_Url);
die();

Kết luận

Việc tích hợp các cổng thanh toán trực tuyến trong PHP không quá phức tạp nếu bạn làm theo các bước cơ bản và sử dụng đúng các thư viện hỗ trợ. Lựa chọn cổng thanh toán phù hợp sẽ giúp doanh nghiệp của bạn tăng cường trải nghiệm khách hàng và mở rộng quy mô kinh doanh.

Comments