duitkupg / duitku-php
Duitku PHP
dev-master
2022-07-08 08:06 UTC
Requires
- php: >=5.6
- ext-curl: *
- ext-json: *
Requires (Dev)
This package is auto-updated.
Last update: 2024-08-29 06:07:41 UTC
README
欢迎使用 Duitku PHP 示例项目实现页面,将此 Duitku PHP 集成到您的网站或应用程序中以开始使用 Duitku 进行交易。
演示项目
转到 Duitku-Pop 演示完整步骤文档
转到 Duitku 文档 Duitku-Pop安装
使用以下命令通过 composer 安装 duitku-php
composer require duitkupg/duitku-php:dev-master
或手动在您的 composer.json
文件中添加。
"duitkupg/duitku-php": "dev-master"
配置设置
$duitkuConfig = new \Duitku\Config("YOUR_MERCHANT_KEY", "YOUR_MERCHANT_CODE"); // false for production mode // true for sandbox mode $duitkuConfig->setSandboxMode(false); // set sanitizer (default : true) $duitkuConfig->setSanitizedMode(false); // set log parameter (default : true) $duitkuConfig->setDuitkuLogs(false);
Duitku POP
创建发票(Duitku-Pop)
paymentMethod 参数是可选的,
您可以在 createInvoice 参数上放置支付方式('paymentMethod'),作为设置直接支付到特定支付方式的步骤。客户将被引导到所需的支付方式,无需进行选择。
// $paymentMethod = ""; // PaymentMethod list => https://docs.duitku.com/pop/id/#payment-method $paymentAmount = 10000; // Amount $email = "customer@gmail.com"; // your customer email $phoneNumber = "081234567890"; // your customer phone number (optional) $productDetails = "Test Payment"; $merchantOrderId = time(); // from merchant, unique $additionalParam = ''; // optional $merchantUserInfo = ''; // optional $customerVaName = 'John Doe'; // display name on bank confirmation display $callbackUrl = 'http://YOUR_SERVER/callback'; // url for callback $returnUrl = 'http://YOUR_SERVER/return'; // url for redirect $expiryPeriod = 60; // set the expired time in minutes // Customer Detail $firstName = "John"; $lastName = "Doe"; // Address $alamat = "Jl. Kembangan Raya"; $city = "Jakarta"; $postalCode = "11530"; $countryCode = "ID"; $address = array( 'firstName' => $firstName, 'lastName' => $lastName, 'address' => $alamat, 'city' => $city, 'postalCode' => $postalCode, 'phone' => $phoneNumber, 'countryCode' => $countryCode ); $customerDetail = array( 'firstName' => $firstName, 'lastName' => $lastName, 'email' => $email, 'phoneNumber' => $phoneNumber, 'billingAddress' => $address, 'shippingAddress' => $address ); // Item Details $item1 = array( 'name' => $productDetails, 'price' => $paymentAmount, 'quantity' => 1 ); $itemDetails = array( $item1 ); $params = array( 'paymentAmount' => $paymentAmount, 'merchantOrderId' => $merchantOrderId, 'productDetails' => $productDetails, 'additionalParam' => $additionalParam, 'merchantUserInfo' => $merchantUserInfo, 'customerVaName' => $customerVaName, 'email' => $email, 'phoneNumber' => $phoneNumber, 'itemDetails' => $itemDetails, 'customerDetail' => $customerDetail, 'callbackUrl' => $callbackUrl, 'returnUrl' => $returnUrl, 'expiryPeriod' => $expiryPeriod ); try { // createInvoice Request $responseDuitkuPop = \Duitku\Pop::createInvoice($params, $duitkuConfig); header('Content-Type: application/json'); echo $responseDuitkuPop; } catch (Exception $e) { echo $e->getMessage(); }
检查交易状态(Duitku-Pop)
try { $merchantOrderId = "YOUR_MERCHANTORDERID"; $transactionList = \Duitku\Pop::transactionStatus($merchantOrderId, $duitkuConfig); header('Content-Type: application/json'); $transaction = json_decode($transactionList); // var_dump($transactionList); if ($transaction->statusCode == "00") { // Action Success } else if ($transaction->statusCode == "01") { // Action Pending } else { // Action Failed Or Expired } } catch (Exception $e) { echo $e->getMessage(); }
回调(Duitku-Pop)
try { $callback = \Duitku\Pop::callback($duitkuConfig); header('Content-Type: application/json'); $notif = json_decode($callback); // var_dump($callback); if ($notif->resultCode == "00") { // Action Success } else if ($notif->resultCode == "01") { // Action Failed } } catch (Exception $e) { http_response_code(400); echo $e->getMessage(); }
获取支付方式(Duitku-Pop)
try { $paymentAmount = "10000"; //"YOUR_AMOUNT"; $paymentMethodList = \Duitku\Pop::getPaymentMethod($paymentAmount, $duitkuConfig); header('Content-Type: application/json'); echo $paymentMethodList; } catch (Exception $e) { echo $e->getMessage(); }
前端集成(Duitku-Pop)
$.ajax({ type: "POST", data:{ // paymentMethod: '', paymentAmount: amount, productDetail: productDetail, email: email, phoneNumber: phoneNumber }, url: 'http://domain.com/createInvoice.php', dataType: "json", cache: false, success: function (result) { console.log(result.reference); console.log(result); checkout.process(result.reference, { successEvent: function(result){ // Add Your Action console.log('success'); console.log(result); alert('Payment Success'); }, pendingEvent: function(result){ // Add Your Action console.log('pending'); console.log(result); alert('Payment Pending'); }, errorEvent: function(result){ // Add Your Action console.log('error'); console.log(result); alert('Payment Error'); }, closeEvent: function(result){ // Add Your Action console.log('customer closed the popup without finishing the payment'); console.log(result); alert('customer closed the popup without finishing the payment'); } }); } });
Duitku API
创建发票(Duitku-Api)
$paymentAmount = 10000; // Amount $paymentMethod = "BT"; // Permata Bank Virtual Account $email = "customer@gmail.com"; // your customer email $phoneNumber = "081234567890"; // your customer phone number (optional) $productDetails = "Test Payment"; $merchantOrderId = time(); // from merchant, unique $additionalParam = ''; // optional $merchantUserInfo = ''; // optional $customerVaName = 'John Doe'; // display name on bank confirmation display $callbackUrl = 'http://YOUR_SERVER/callback'; // url for callback $returnUrl = 'http://YOUR_SERVER/return'; // url for redirect $expiryPeriod = 60; // set the expired time in minutes // Customer Detail $firstName = "John"; $lastName = "Doe"; // Address $alamat = "Jl. Kembangan Raya"; $city = "Jakarta"; $postalCode = "11530"; $countryCode = "ID"; $address = array( 'firstName' => $firstName, 'lastName' => $lastName, 'address' => $alamat, 'city' => $city, 'postalCode' => $postalCode, 'phone' => $phoneNumber, 'countryCode' => $countryCode ); $customerDetail = array( 'firstName' => $firstName, 'lastName' => $lastName, 'email' => $email, 'phoneNumber' => $phoneNumber, 'billingAddress' => $address, 'shippingAddress' => $address ); // Item Details $item1 = array( 'name' => $productDetails, 'price' => $paymentAmount, 'quantity' => 1 ); $itemDetails = array( $item1 ); $params = array( 'paymentAmount' => $paymentAmount, 'paymentMethod' => $paymentMethod, 'merchantOrderId' => $merchantOrderId, 'productDetails' => $productDetails, 'additionalParam' => $additionalParam, 'merchantUserInfo' => $merchantUserInfo, 'customerVaName' => $customerVaName, 'email' => $email, 'phoneNumber' => $phoneNumber, 'itemDetails' => $itemDetails, 'customerDetail' => $customerDetail, 'callbackUrl' => $callbackUrl, 'returnUrl' => $returnUrl, 'expiryPeriod' => $expiryPeriod ); try { // createInvoice Request $responseDuitkuApi = \Duitku\Api::createInvoice($params, $duitkuConfig); header('Content-Type: application/json'); echo $responseDuitkuApi; } catch (Exception $e) { echo $e->getMessage(); }
检查交易状态(Duitku-Api)
try { $merchantOrderId = "YOUR_MERCHANTORDERID"; $transactionList = \Duitku\Api::transactionStatus($merchantOrderId, $duitkuConfig); header('Content-Type: application/json'); $transaction = json_decode($transactionList); // var_dump($transactionList); if ($transaction->statusCode == "00") { // Action Success } else if ($transaction->statusCode == "01") { // Action Pending } else { // Action Failed Or Expired } } catch (Exception $e) { echo $e->getMessage(); }
回调(Duitku-Api)
try { $callback = \Duitku\Api::callback($duitkuConfig); header('Content-Type: application/json'); $notif = json_decode($callback); // var_dump($callback); if ($notif->resultCode == "00") { // Action Success } else if ($notif->resultCode == "01") { // Action Failed } } catch (Exception $e) { http_response_code(400); echo $e->getMessage(); }
获取支付方式(Duitku-Api)
try { $paymentAmount = "10000"; //"YOUR_AMOUNT"; $paymentMethodList = \Duitku\Api::getPaymentMethod($paymentAmount, $duitkuConfig); header('Content-Type: application/json'); echo $paymentMethodList; } catch (Exception $e) { echo $e->getMessage(); }
测试
测试 Duitku-Pop
创建发票测试
php vendor\bin\phpunit tests\CreateInvoiceTest.php
交易状态测试
php vendor\bin\phpunit tests\TransactionStatusTest.php
回调测试
php vendor\bin\phpunit tests\CallbackTest.php
测试 Duitku-Api
创建发票 API 测试
php vendor\bin\phpunit tests\CreateInvoiceApiTest.php
交易状态 API 测试
php vendor\bin\phpunit tests\TransactionStatusApiTest.php
回调 API 测试
php vendor\bin\phpunit tests\CallbackApiTest.php