crocodicstudio/dokularavel

此包已被废弃,不再维护。未建议替代包。

此包是Laravel的DOKU支付网关库

v1.6.6 2017-09-22 03:13 UTC

This package is auto-updated.

Last update: 2020-08-17 11:49:44 UTC


README

Total Downloads Latest Unstable Version License Monthly Downloads

Doku Laravel

这是已编译为Package的DOKU支付网关库,适用于Laravel。DOKU API是DOKU官方的API,属于Merchant Hosted类型,即使用DOKU生成的支付表单,而不是跳转到DOKU页面的表单,而是在我们的服务器上显示DOKU表单,支付就像在我们的服务器上完成一样。

基本需求

  1. SHARED_KEY,从DOKU获取,请联系 DOKU
  2. MALL_ID,从DOKU获取,请联系 DOKU
  3. PERMATA_CODE,从DOKU获取,如果启用了Permata银行支付选项,则需要此代码
  4. 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。有两个方法:beforePaymentafterPayment

1. beforePayment($data)

您可以在该方法中添加命令,在执行支付操作之前或位于DokuLaravel的首页时运行。数组变量 $data 中包含了您可以使用的 values。更详细的信息请参阅 HOOK 文件。

2. afterPayment($status,$dataPayment)

您可以在该方法中添加命令,支付完成后将执行。变量 $status 是一个表示支付是否成功的 boolean 变量。变量 $dataPayment 是一个包含您可以进一步使用的 valuesarray。更详细的信息请参阅 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共同

使用案例

  1. 移动应用,对于需要移动应用使用的您,只需创建 WebView 并输入上述DokuLaravel的URL即可
  2. 网站,对于需要网站使用的您,只需提供 链接 并将其重定向到上述DokuLaravel的URL即可

关于DOKU - http://doku.com

自2007年成立以来,原名PT. Nusa Satu Inti Artha的DOKU在印度尼西亚被公认为首家提供电子支付服务和风险管理的公司。DOKU以辛勤工作和全面支持在线商户需求的精神,越来越受到商户的信任,并成为国内外商户首选的电子支付服务。