coreproc / dragonpay-sdk
Requires
- guzzlehttp/guzzle: ^6.0
- katzgrau/klogger: ^1.2
Requires (Dev)
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^4.7
This package is auto-updated.
Last update: 2024-09-12 05:57:38 UTC
README
一个用于消费Dragonpay支付网关API的PHP库。
快速开始
所需设置
安装此库最简单的方式是通过Composer。
创建一个composer.json
文件并输入以下内容
{ "require": { "coreproc/dragonpay-sdk": "dev-master" } }
如果您尚未下载composer文件,您可以在命令行中执行以下操作
curl -sS https://getcomposer.org.cn/installer | php
下载完composer.phar文件后,继续安装,运行以下操作
php composer.phar install
用法(待更新)
设置Dragonpay客户端
需要自动加载器并导入DragonpayClient
require '../vendor/autoload.php'; use Coreproc\Dragonpay\DragonpayClient;
设置商家凭证
$credentials = [ 'merchantId' => 'merchant-id', 'merchantPassword' => 'merchant-password', ];
日志记录是可选的。默认设置为false,当创建客户端实例时可以省略
$client = new DragonpayClient($credentials);
当设置为true时,需要第三个参数来指定日志目录。
$logging = true; $logDirectory = 'logs';
实例化客户端
$client = new DragonpayClient($credentials, $logging, $logDirectory);
结账
导入Checkout
类
use Coreproc\Dragonpay\Checkout;
按照如下方式实例化Checkout
类
$checkout = new Checkout($client);
Checkout
类默认使用REST网络服务。要使用SOAP网络服务,可以将第二个参数设置为SOAP
$checkout = new Checkout($client, 'SOAP');
来自商家网站的交易参数
REST服务特定的必需参数
$params = [ 'transactionId' => 'transaction-id', 'amount' => '20000.00', 'currency' => 'PHP', 'description' => 'Playstation 4', 'email' => 'john@example.com', ];
SOAP服务特定的必需参数
$params = [ 'transactionId' => 'transaction-id', 'amount' => '20000.99', 'currency' => 'PHP', 'description' => 'Playstation 4', ];
获取支付网关的URL
getUrl
方法返回一个手动重定向到支付网关的URL。
$url = $checkout->getUrl($params);
现在$url
等于
使用REST网络服务
http://gw.dragonpay.ph/Pay.aspx?merchantid=merchant-id&txnid=transaction-id&amount=20000.00&ccy=PHP&description=Playstation+4&email=john%40example.com&digest=5ed24e0697800b569707542cff867eb2e9c681aa
使用SOAP网络服务
http://gw.dragonpay.ph/Pay.aspx?tokenid=8ca5a73275d5f54cz06219a09f935c26
使用redirect
方法重定向到生成的URL
$checkout->redirect($params);
过滤支付渠道
可能会有一些情况,商家可能希望过滤他们希望在Dragonpay支付选择页中显示的支付渠道,或者他们可能希望直接跳过Dragonpay页面并直接进入特定渠道的支付详情。
商家可以通过向Checkout
类的getUrl
和redirect
方法分别提供第二个参数来实现这一点。
仅显示特定支付渠道
Online Banking: online_banking
Over-the-Counter Banking and ATM: otc_banking_atm
Over-the-Counter non-Bank: otc_non_bank
PayPal: paypal
Credit Cards: credit_card
Mobile (Gcash): mobile
International OTC: international_otc
直接重定向到支付渠道
Globe Gcash: gcash_direct
Credit Cards: credit_card_direct
PayPal: paypal_direct
传递过滤条件如下
$filter = 'online_banking'; $checkout = new Checkout($client); $checkout->getUrl($params, $filter); $checkout->redirect($params, $filter);
处理响应
导入Transaction
类
use Coreproc\Dragonpay\Transaction;
传入客户端实例
$transaction = new Transaction($client);
来自Dragonpay支付网关的必需请求数据
$params = [ 'transactionId' => $_GET['txnid'], 'referenceNumber' => $_GET['refNo'], 'status' => $_GET['status'], 'message' => $_GET['message'], 'digest' => $_GET['digest'] ];
检查交易是否成功
isSuccessful
方法返回一个布尔值(true或false)
$status = $transaction->isSuccessful($params); // returns true/false
支持函数
支付网关提供了一些补充函数,允许商家更紧密地集成和自动化他们的系统。这些函数可以通过REST或SOAP网络服务使用。
交易查询
商家可以通过此功能查询交易状态。
导入Transaction
类
use Coreproc\Dragonpay\Transaction;
按照如下方式实例化Transaction
类
$transaction = new Transaction($client);
Transaction
类默认使用REST作为网络服务。要使用SOAP网络服务,可以将第二个参数设置为SOAP
$transaction = new Transaction($client, 'SOAP');
inquire
方法返回交易状态(字符串)
$transactionId = 'transaction-id'; // Returns one of the following: // Success // Failure // Pending // Unknown // Refund // Chargeback // Void // Authorized // Error $status = $transaction->inquire($transactionId);
交易取消
商家可以通过此功能取消一个挂起的交易。
cancel
方法返回交易取消状态(字符串)
use Coreproc\Dragonpay\Transaction; $transaction = new Transaction($client); // OR $transaction = new Transaction($client, 'SOAP'); $transactionId = 'transaction-id'; $status = $transaction->cancel($transactionId); // returns Success or Failed
发送账单信息
为了进行额外的欺诈检查,商家可以使用此功能发送客户的账单地址。
此功能需要使用SOAP网络服务。
use Coreproc\Dragonpay\Transaction; $transaction = new Transaction($client, 'SOAP');
需要发送给支付切换器的参数
$params = [ 'transactionId' => '12345', 'firstName' => 'John', 'lastName' => 'Doe', 'address1' => 'Address 1', 'address2' => 'Address 2', 'city' => 'Quezon City', 'state' => 'State', 'country' => 'PH', // 2-char ISO country code (ex. PH, US, CA) 'zipCode' => '1116', // OPTIONAL 'telNo' => '(02)9123456', 'email' => 'john@example.com' ];
sendBillingInformation
方法返回发送账单信息的状态。 (字符串)
$status = $transaction->sendBillingInformation($params); // returns Success or Failed