crocodicstudio / dokularavel
此包是Laravel的DOKU支付网关库
README
这是已编译为Package的DOKU支付网关库,适用于Laravel。DOKU API是DOKU官方的API,属于Merchant Hosted类型,即使用DOKU生成的支付表单,而不是跳转到DOKU页面的表单,而是在我们的服务器上显示DOKU表单,支付就像在我们的服务器上完成一样。
基本需求
- SHARED_KEY,从DOKU获取,请联系 DOKU
- MALL_ID,从DOKU获取,请联系 DOKU
- PERMATA_CODE,从DOKU获取,如果启用了Permata银行支付选项,则需要此代码
- TABLE_ORDER,与订单/发票相关的表,并具有以下至少字段:no_invoice,customer_name,customer_phone,customer_email,customer_address,total,payment_status,payment_date,payment_channel,payment_approval_code,payment_session_id
1. Laravel 5.x的安装
composer require crocodicstudio/dokularavel
2. 添加到Service Provider (config/app.php)
crocodicstudio\dokularavel\DokuLaravelServiceProvider::class,
3. 发布配置文件
php artisan vendor:publish --provider="crocodicstudio\dokularavel\DokuLaravelServiceProvider"
4. 设置基本配置
在config/文件夹中,将会有一个名为 dokularavel.php 的新文件,内容如下
需要填写或修改的项包括SHARED_KEY、MALL_ID以及TABLE的设置
return [
/*
| ---------------------------------------------------------
| Setting the payment mode is Sandbox Mode or Live Mode
| ---------------------------------------------------------
| if set false it means sandbox mode, else it means live mode
| ** PLEASE BE CAREFULL ABOUT CHANGE THE LIVE MODE
|
*/
'LIVE_MODE' => FALSE,
/*
| ---------------------------------------------------------
| Setting the payment route in PAYMENT_PATH, SHARED_KEY & MALL_ID is code that you get from DOKU Merchant Page.
| ---------------------------------------------------------
|
*/
'PAYMENT_PATH' => 'dokularavel',
'SHARED_KEY' => NULL,
'MALL_ID' => NULL,
'PERMATA_CODE' => NULL,
'CURRENCY' => 360,
'NOTIFY_SCREET_CODE'=>'123456',
/*
| ---------------------------------------------------------
| Define your table of order and the fields
| ---------------------------------------------------------
|
*/
'TABLE_ORDER' => NULL,
'TABLE_FIELD_NO_ORDER' => NULL,
'TABLE_FIELD_AMOUNT' => NULL,
'TABLE_FIELD_CUSTOMER_NAME' => NULL,
'TABLE_FIELD_CUSTOMER_PHONE' => NULL,
'TABLE_FIELD_CUSTOMER_EMAIL' => NULL,
'TABLE_FIELD_CUSTOMER_ADDRESS' => NULL,
'TABLE_FIELD_PAYMENT_DATE' => NULL,
'TABLE_FIELD_PAYMENT_STATUS' => NULL,
'TABLE_FIELD_PAYMENT_CHANNEL' => NULL,
'TABLE_FIELD_PAYMENT_APPROVAL_CODE' => NULL,
'TABLE_FIELD_PAYMENT_SESSION_ID' => NULL,
/*
| ---------------------------------------------------------
| DOKU PAYMENT AVAILABLE CHANNEL
| ---------------------------------------------------------
| 15 = Credit Card
| 04 = Doku Wallet
| 02 = Mandiri Clickpay
| 05 = Permata Bank / ATM Bersama
|
| This setting is for default payment channel otherwise you can set the payment channel on the fly by url parameter "payment_channel"
*/
'AVAILABLE_PAYMENT_CHANNEL'=> ['15','04','02','05'],
'DEFAULT_PAYMENT_CHANNEL'=> '15',
/*
| ---------------------------------------------------------
| This setting is for set the product name in doku transaction
| Basicly "DOKULARAVEL" package only send 1 basket to DOKU, that is global invoice.
| ---------------------------------------------------------
| Alias that you can use :
| [invoice_no] to generate your invoice number / trans_id
|
*/
'PRODUCT_NAME_FORMAT' => 'Invoice For Order No. [invoice_no]',
/*
| ---------------------------------------------------------
| Set redirect page DOKU
| ---------------------------------------------------------
| [Default] or SHOW_DOKU_SUCCESS_PAGE set TRUE, SHOW_FINISH_PAGE set TRUE, YOUR_OWN_FINISH_PAGE set NULL
| - Payment Flow : USER DATA -> PROCESSING -> DOKU SUCCESS PAGE -> FINISH PAGE
|
| If SHOW_DOKU_SUCCESS_PAGE set TRUE, SHOW_FINISH_PAGE set FALSE, YOUR_OWN_FINISH_PAGE set NULL
| - Payment Flow : USER DATA -> PROCESSING -> DOKU SUCCESS PAGE
|
| If SHOW_DOKU_SUCCESS_PAGE set FALSE, SHOW_FINISH_PAGE set TRUE, YOUR_OWN_FINISH_PAGE set NULL
| - Payment Flow : USER DATA -> PROCESSING -> FINISH PAGE
|
| If SHOW_DOKU_SUCCESS_PAGE set FALSE, SHOW_FINISH_PAGE set TRUE, YOUR_OWN_FINISH_PAGE set not NULL / set your own URL PAGE
| - Payment Flow : USER DATA -> PROCESSING -> YOUR OWN FINISH PAGE
|
*/
'SHOW_DOKU_SUCCESS_PAGE' => TRUE, //it means the page that generated from DOKU
'SHOW_FINISH_PAGE' => TRUE, //it means the page that generated from "dokularavel" package.
'YOUR_OWN_FINISH_PAGE' => NULL, //it means the page that generated by your self
/*
| ---------------------------------------------------------
| This setting is for Develope Mode only, you can view DOKULARAVEL Session, also doPrePayment, or doPayment response
| ---------------------------------------------------------
| Access the debug url at /debug
|
| will be available if DEBUG_MODE set TRUE
|
*/
'DEBUG_MODE' => FALSE,
];
请根据上面的说明先设置好上面的配置 :) .
5. 测试
要访问DokuLaravel页面,需要在URL参数中填写两个参数。
基本URL:/dokularavel(这是默认的PAYMENT_PATH,可以在配置中更改)
参数1:trans_id(这是您的表中交易号的编号)
参数2:payment_channel(这是支付类型,根据上面的说明选择相应的数字,如果为空或未包含此参数,则将显示支付类型选择页面)
示例URL
https:///projek_anda/public/dokularavel?trans_id=INV0001
或者,如果您想直接选择payment_channel,只需添加payment_channel参数,例如
https:///projek_anda/public/dokularavel?trans_id=INV0001&payment_channel=04
6. HOOK函数
在"DokuLaravel"包中提供了HOOK功能,可以在支付完成或支付之前执行任何命令。在Laravel的controller目录中有一个名为"DokuLaravelHookController.php"的controller。有两个方法:beforePayment 和 afterPayment。
1. beforePayment($data)
您可以在该方法中添加命令,在执行支付操作之前或位于DokuLaravel的首页时运行。数组变量 $data 中包含了您可以使用的 values。更详细的信息请参阅 HOOK 文件。
2. afterPayment($status,$dataPayment)
您可以在该方法中添加命令,支付完成后将执行。变量 $status 是一个表示支付是否成功的 boolean 变量。变量 $dataPayment 是一个包含您可以进一步使用的 values 的 array。更详细的信息请参阅 HOOK 文件。
通知URL
此URL用于使DOKU能够向我们的服务器发送通知,通常用于特定类型的支付,如Permata Bank,您可以在DokuMerchant仪表板上的“通知URL”列中写入以下URL格式:
http://yourdomain.com/dokularavel/notify/[NOTIFY_SCREET_CODE]
[NOTIFY_SCREET_CODE] 可在配置文件中设置。用于防止未经授权的活动。
支持的支付类型(支付渠道)
以下是DOKU当前支持的支付类型以及集成到“DokuLaravel”包中的类型:
- 15 = 信用卡
- 04 = Doku钱包
- 02 = Mandiri Clickpay
- 05 = Permata Bank / ATM共同
使用案例
- 移动应用,对于需要移动应用使用的您,只需创建 WebView 并输入上述DokuLaravel的URL即可
- 网站,对于需要网站使用的您,只需提供 链接 并将其重定向到上述DokuLaravel的URL即可
关于DOKU - http://doku.com
自2007年成立以来,原名PT. Nusa Satu Inti Artha的DOKU在印度尼西亚被公认为首家提供电子支付服务和风险管理的公司。DOKU以辛勤工作和全面支持在线商户需求的精神,越来越受到商户的信任,并成为国内外商户首选的电子支付服务。