Laravel 中间件支付包装器 Midtrans

dev-master 2018-12-27 09:22 UTC

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。

配置

在使用包之前,最好首先发布配置文件,以便您可以设置 environmentserver_keyclient_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(首选 stringinteger),用于请求支付状态。

Midtrans::approve($order_id);

approve 函数将接受任何类型的 order_id(首选 stringinteger),并返回 status_code

Midtrans::cancel($order_id);

cancel 函数将接受任何类型的 order_id(首选 stringinteger),并返回 status_code

Midtrans::expire($order_id);

expire 函数将接受任何类型的 order_id(首选 stringinteger)。