jetfueltw / ddbill-php
ddbill 支付网关 PHP 包
v1.3.1
2018-01-23 10:53 UTC
Requires
- php: >=5.6.4
- guzzlehttp/guzzle: ^6.3
Requires (Dev)
- fzaninotto/faker: ^1.7
- phpunit/phpunit: ^5.7
README
多得宝聚合支付 PHP 版本封装。
安装
使用 Composer 安装。
composer require jetfueltw/ddbill-php
使用方法
扫码支付下单
使用微信支付、QQ钱包、支付宝扫码支付,下单后返回支付网址,请自行转为 QR Code。
$merchantId = '1XXXXXXXX6'; // 商家號
$merchantPrivateKey = '-----BEGIN PRIVATE KEY-----XXX-----END PRIVATE KEY-----'; // 商家私鑰
$tradeNo = '20170101235959XXX'; // 商家產生的唯一訂單號
$channel = Channel::WECHAT; // 第三方支付,支援微信支付、QQ錢包,支付寶
$amount = 1.00; // 消費金額 (元)
$clientIp = 'XXX.XXX.XXX.XXX'; // 消費者端 IP 位址
$notifyUrl = 'https://XXX.XXX.XXX'; // 交易完成後異步通知接口
$payment = new DigitalPayment($merchantId, $merchantPrivateKey);
$result = $payment->order($tradeNo, $channel, $amount, $clientIp, $notifyUrl);
Result:
[
'interface_version' => 'V3.3', // 接口版本
'merchant_code' => '1XXXXXXXX6', // 商家號
'order_amount'=> '1.00'; // 消費金額 (元)
'order_no'=>'20170101235959XXX', // 商家產生的唯一訂單號
'order_time'=>'2017-01-01 12:23:59', // 下單時間
'qrcode'=> 'weixin://wxpay/bizpayurl?pr=XXXXXXX', // 支付網址
'resp_code'=>'SUCCESS', // SUCCESS 成功、FAIL 失敗
'resp_desc'=>'通讯成功', // 描述訊息
'result_code'=> '0', // 0 成功、1 失敗
'trade_no'=> 'CXXXXXXXXXX', // 聚合支付平台訂單號
'trade_time'=>'2017-01-01 13:00:00', // 交易時間
'sign_type'=> 'RSA-S', // 簽名方式
'sign'=> 'XXXXXXXXXXX', // 簽名
];
扫码支付交易成功通知
消费者支付成功后,平台会发出 HTTP POST 请求到您下单时填的 $notifyUrl,商家在收到通知并处理完毕后必须回复 "SUCCESS" 这 7 个字符,否则平台会认为通知失败,并最多重发 5 次通知。
- 商家必须正确处理重复通知的情况。
- 可以使用
NotifyWebhook@successNotifyResponse返回成功响应。 - 务必使用
NotifyWebhook@verifyNotifyPayload验证签名是否正确。
Post Data:
[
'interface_version' => 'V3.3', // 接口版本
'merchant_code' => '1XXXXXXXX6', // 商家號
'orginal_money' => '1.00', // 消費金額 (元)
'order_amount' => '1.00', // 實際支付金額 (元)
'order_no' => '20170101235959XXX', // 商家產生的唯一訂單號
'order_time' => '2017-01-01 12:23:59', // 下單時間
'trade_status' => 'SUCCESS', // SUCCESS 成功、FAILED 失敗
'trade_no' => 'CXXXXXXXXXX', // 聚合支付平台訂單號
'trade_time' => '2017-01-01 13:00:00', // 交易時間
'bank_seq_no' => 'WXXXXXXXXXXXXXXXXXXXXXXX', // 網銀交易流水號
'notify_type' => 'offline_notify', // 通知類型
'notify_id' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // 通知校驗 ID
'sign_type' => 'RSA-S', // 簽名方式
'sign' => 'XXXXXXXXXX', // 簽名
]
扫码支付订单查询
使用商家订单号查询一笔订单状态。
$merchantId = '1XXXXXXXX6'; // 商家號
$merchantPrivateKey = '-----BEGIN PRIVATE KEY-----XXX-----END PRIVATE KEY-----'; // 商家私鑰
$tradeNo = '20170101235959XXX'; // 商家產生的唯一訂單號
$tradeQuery = new TradeQuery($merchantId, $merchantPrivateKey);
$result = $tradeQuery->find($tradeNo);
Result:
[
'is_success' => 'T', // T 成功、F 失敗
'sign_type' => 'RSA-S', // 簽名方式
'sign' => 'XXXXXXXXXX', // 簽名
'trade' => [
'merchant_code' => '1XXXXXXXX6', // 商家號
'orginal_money' => '1.00', // 消費金額 (元)
'order_amount' => '1.00', // 實際支付金額 (元)
'order_no' => '20170101235959XXX', // 商家產生的唯一訂單號
'order_time' => '2017-01-01 12:23:59', // 下單時間
'trade_status' => 'UNPAY', // SUCCESS 成功、FAILED 失敗、UNPAY 未支付
'trade_no' => 'CXXXXXXXXXX', // 聚合支付平台訂單號
'trade_time' => '2017-01-01 13:00:00', // 交易時間
]
]
扫码支付订单支付成功查询
使用商家订单号查询一笔订单是否支付成功。
$merchantId = '1XXXXXXXX6'; // 商家號
$merchantPrivateKey = '-----BEGIN PRIVATE KEY-----XXX-----END PRIVATE KEY-----'; // 商家私鑰
$tradeNo = '20170101235959XXX'; // 商家產生的唯一訂單號
$tradeQuery = new TradeQuery($merchantId, $merchantPrivateKey);
$result = $tradeQuery->isPaid($tradeNo);
Result:
bool(true|false)
网银支付下单
使用网上银行支付,下单后返回跳转页面,请 render 到客户端。
$merchantId = '1XXXXXXXX6'; // 商家號
$merchantPrivateKey = '-----BEGIN PRIVATE KEY-----XXX-----END PRIVATE KEY-----'; // 商家私鑰
$tradeNo = '20170101235959XXX'; // 商家產生的唯一訂單號
$bank = Bank::PSBC; // 銀行編號
$amount = 1.00; // 消費金額 (元)
$notifyUrl = 'https://XXX.XXX.XXX'; // 交易完成後異步通知接口
(選填) $returnUrl = 'https://XXX.XXX.XXX'; // 交易完成後會跳轉到這個頁面
$payment = new BankPayment($merchantId, $merchantPrivateKey);
$result = $payment->order($tradeNo, $bank, $amount, $notifyUrl, $returnUrl);
Result:
跳轉用的 HTML,請 render 到客戶端
网银支付交易成功通知
与扫码支付交易成功通知相同
网银支付订单查询
与扫码支付订单查询相同
网银支付订单支付成功查询
与扫码支付订单支付成功查询相同