Cấu hình tài khoản paypal developer

Trước hết để sử dụng được api của paypal các bạn cần phải có tài khoản paypal.

Sau khi có tài khoản paypal , các bạn hãy đăng nhập và vào link sau: https://developer.paypal.com/developer/accountStatus/

Active 2 thằng đầu tiên như trong hình là được rồi.

Vào tab dashboard > my apps & credentials , kéo xuống phần REST API apps , bấm create app để tạo app.

Chọn tài khoản seller đã khởi tạo bên phần account (đây là tài khoản người nhận tiền)

Quay về trang quản lý , chọn app vừa khởi tạo , lưu lại cái Client ID và Secret Key này để sử dụng trong việc call api
Kéo xuống dưới, tích các features như trong hình , lưu lại là xong.

Ok vậy là xong công đoạn setup app + account bên trang paypal , giờ đến phần tích hợp sdk của paypal.

Cài đặt package paypal sdk

Link package: https://github.com/paypal/PayPal-PHP-SDK

Chạy lệnh sau để cài đặt: composer require paypal/rest-api-sdk-php:*

Trước hết cần khai báo thằng Payer():

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

Tiếp đến là class Item() trong paypal để lưu những sản phẩm cần thanh toán:

$item1 = new \PayPal\Api\Item();
$item1->setName('Ground Coffee 40 oz')
->setDescription('Ground Coffee 40 oz')
->setCurrency('USD')
->setQuantity(2)
->setPrice(0.5);

$item2 = new \PayPal\Api\Item();
$item2->setName('Granola bars')
->setDescription('Granola Bars with Peanuts')
->setCurrency('USD')
->setQuantity(2)
->setPrice(0.5);

$list_item[] = $item1;
$list_item[] = $item2;

(Thuộc tính mỗi sản phẩm các bạn có thể đọc trong docs , ở đây mình chỉ demo những thuộc tính cơ bản )

Đối với những bạn có chức năng coupon,voucher giảm giá , các bạn chỉ cần setPrice * -1 (để tiền giá trị âm) cho item đó là được.

Sau khi đã có 1 list các item , các bạn cần ném nó vào class ItemList():

$itemList = new \PayPal\Api\ItemList();
$itemList->setItems($list_item);

Tiếp đến , set subtotal cho request (Lưu ý: subtotal phải = tổng giá trong hàm setQuantity() * setPrice() cộng lại , nếu lệch sẽ báo lỗi)

$details = new \PayPal\Api\Details();
$details->setSubtotal("2.00");

Tiếp đến khai báo total cho request , ở đây total của mình = subtotal luôn vì mình ko có các giá tiền khác như: thuế, chiết khấu ...

$amount = new \PayPal\Api\Amount();
$amount->setTotal('2.00')->setDetails($details);
$amount->setCurrency('USD');

Khai báo transaction:

$transaction = new \PayPal\Api\Transaction();
$transaction->setAmount($amount)->setItemList($itemList)->setDescription('Checkout online')->setCustom('sdfskdfklsdfjksdf');

(paypal_payment_id = $payment->getId() - (Đây là id giao dịch của paypal được dùng để get thông tin giao dịch)

return \Redirect::to($payment->getApprovalLink()); (redirect qua link thanh toán bên paypal)

}catch (\PayPal\Exception\PayPalConnectionException $ex) {
echo $ex->getData();
}

Vậy là xong, việc còn lại là của paypal , sau khi thao tác thanh toán xong các bạn sẽ được trả về 1 trong 2 url tương ứng đã khai báo phía trên.

Link trả về của paypal sẽ có dạng: domain?paymentId=&token=&PayerID=

$paypal_payment_id là thằng id paypal phía trên , các bạn lưu ở đâu đó xong qua bước này lấy ra là được.

$payment = \PayPal\Api\Payment::get($paypal_payment_id,$apiContext);
$paymentExecution = new \PayPal\Api\PaymentExecution();
$paymentExecution->setPayerId($_GET['PayerID']);

$paymentStatus = $payment->execute($paymentExecution, $apiContext);
$decode = json_decode($paymentStatus);

Dữ liệu trả về sẽ là dạng json xử lý sao tùy bạn.

Lưu ý: Để chạy được live , tài khoản paypal của các bạn phải từ business trở lên nhé.

 

Nếu thấy hữu ích , ngại gì mà không share bài viết này

Chia sẻ

Bình luận