Laravel 中间件支付包装器 Midtrans
Requires
- php: >=5.6.4
- guzzlehttp/guzzle: ^6.3
- illuminate/support: 5.1.x|5.2.x|5.3.x|5.4.x|5.5.x|5.6.x|5.7.x
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0|~5.0
- vlucas/phpdotenv: ^2.4
This package is not auto-updated.
Last update: 2024-09-27 12:53:16 UTC
README
安装
首先,通过以下方式在 composer.json 中要求包:
composer require pw/laramidtrans
要求包之后,打开 config/app.php
,根据以下说明添加 ServiceProvider 和 Facade
Pw\Midtrans\MidtransServiceProvider::class,
为了方便使用该包,您可以选择性地添加 Facade,方法如下:
'Midtrans' => Pw\Midtrans\Facades\Midtrans::class,
'Veritrans' => Pw\Midtrans\Facades\Veritrans::class,
有两个 Facade,因为 Midtrans 服务端点不同(Veritrans 是旧的),并且它们已经将名称更改为 Midtrans。因此,根据您与 Midtrans 的合作选择合适的 Facade。
配置
在使用包之前,最好首先发布配置文件,以便您可以设置 environment
、server_key
和 client_key
php artisan vendor:publish --provider="Pw\Midtrans\MidtransServiceProvider"
运行上述命令将复制配置文件到您的项目目录 config/midtrans.php
,您可以设置变量。为了设置变量,最好将其放在 .env 文件中而不是直接在配置文件上更改,因此在您的 .env 文件中放入
`MIDTRANS_IS_PRODUCTION`, `MIDTRANS_CLIENT_KEY` and `MIDTRANS_SERVER_KEY`
根据您的 midtrans 控制台上的 key。
使用
您可以通过以下方式轻松创建包实例:
App::make('Midtrans');
这取决于您将要使用的支付方式类型。
如果您想通过使用 Facade 来使用最简单的方法,但请确保在文件顶部使用 Facade。
Midtrans Facade 示例
<?php
namespace you/project/namespace/controller;
use Midtrans;
class Payment extends Controller {
public function purchase() {
$transaction_details = [
'order_id' => time(),
'gross_amount' => 10000
];
$customer_details = [
'first_name' => 'User',
'email' => 'user@gmail.com',
'phone' => '08238493894'
];
$custom_expiry = [
'start_time' => date("Y-m-d H:i:s O", time()),
'unit' => 'day',
'duration' => 2
];
$item_details = [
'id' => 'PROD-1',
'quantity' => 1,
'name' => 'Product-1',
'price' => 10000
];
// Send this options if you use 3Ds in credit card request
$credit_card_option = [
'secure' => true,
'channel' => 'migs'
];
$transaction_data = [
'transaction_details' => $transaction_details,
'item_details' => $item_details,
'customer_details' => $customer_details,
'expiry' => $custom_expiry,
'credit_card' => $credit_card_option,
];
$token = Midtrans::getSnapToken($transaction_data);
return $token;
}
}
Veritrans Facade 示例
<?php
namespace you/project/namespace/controller;
use Veritrans;
class Payment extends Controller {
public function purchase() {
$transaction_details = [
'order_id' => time(),
'gross_amount' => 10000
];
$customer_details = [
'first_name' => 'User',
'email' => 'user@gmail.com',
'phone' => '08238493894'
];
$custom_expiry = [
'start_time' => date("Y-m-d H:i:s O", time()),
'unit' => 'day',
'duration' => 2
];
$item_details = [
'id' => 'PROD-1',
'quantity' => 1,
'name' => 'Product-1',
'price' => 10000
];
$transaction_data = [
'payment_type' => 'vtweb',
'vtweb' => [
'credit_card_3d_secure' => true
],
'transaction_details' => $transaction_details,
'item_details' => $item_details,
'customer_details' => $customer_details
];
$redirect_url = Veritrans::vtwebCharge($transaction_data);
return $redirect_url;
}
}
可用功能
Midtrans
Midtrans::getSnapToken($data);
getSnapToken
将接受 array
数据作为参数,传递给函数,并返回 string
类型的令牌。
Midtrans::status($order_id);
status
函数将接受任何类型的 order_id
(首选 string
或 integer
),用于请求支付状态。
Midtrans::approve($order_id);
approve
函数将接受任何类型的 order_id
(首选 string
或 integer
),并返回 status_code
。
Midtrans::cancel($order_id);
cancel
函数将接受任何类型的 order_id
(首选 string
或 integer
),并返回 status_code
。
Midtrans::expire($order_id);
expire
函数将接受任何类型的 order_id
(首选 string
或 integer
)。