shipu/php-aamarpay-payment

适用于 Aamarpay 支付网关 API 的 PHP 客户端

v2.0.0 2021-08-09 21:15 UTC

This package is auto-updated.

Last update: 2024-08-31 00:35:30 UTC


README

php-aamarpay-payment 是 Aamarpay 支付网关 API 的 PHP 客户端。此包还支持 Laravel 和 Lumen。

安装

转到终端并运行以下命令

composer require shipu/php-aamarpay-payment

请稍等片刻。Composer 会自动为您项目安装此包。

Laravel 使用方法

对于低于 Laravel 5.5 的版本,打开 config/app 并在 providers 部分添加以下行

Shipu\Aamarpay\AamarpayServiceProvider::class,

为了支持 Facade,您需要在 aliases 部分添加以下行。

'Aamarpay'   =>  Shipu\Aamarpay\Facades\Aamarpay::class,

然后运行以下命令

php artisan vendor:publish --provider="Shipu\Aamarpay\AamarpayServiceProvider"

配置

此包需要三个配置。

  1. store_id = Aamarpay 支付网关中的您的商店 ID。
  2. signature_key = Aamarpay 支付网关中的您的签名密钥
  3. sandbox = 使用 true 表示沙盒,使用 false 表示实时
  4. redirect_url = 在 successfail 后应用程序重定向的 URL。

php-aamarpay-payment 使用数组作为配置文件。服务配置

use Shipu\Aamarpay\Aamarpay;

$config = [
    'store_id' => 'Your store id',
    'signature_key' => 'Your signature key',
    'sandbox' => true,
    'redirect_url' => [
        'success' => [
            'route' => 'payment.success'
        ],
        'cancel' => [
            'route' => 'payment.cancel' 
        ]
    ]
];

$payment = new Aamarpay($config);

Laravel 使用方法

此包还支持 Laravel。对于 Laravel,您需要以 Laravel 风格配置它。

转到 config\aamarpay.php 并使用您的凭证进行配置。

return [
    'store_id' => 'Your store id',
    'signature_key' => 'Your signature key',
    'sandbox' => true,
    'redirect_url' => [
        'success' => [
            'route' => 'payment.success'
        ],
        'cancel' => [
            'route' => 'payment.cancel' 
        ]
    ]
];

用法

  • 必填输入字段名称
    • tran_id // 由该包自动生成
    • cus_name
    • cus_email
    • cus_phone
    • desc
    • currency // 由该包自动生成
    • amount

获取支付 POST URL

在 PHP 中

use \Shipu\Aamarpay\Aamarpay;

...

$payment = new Aamarpay($config);
return $payment->paymentUrl();

在 Laravel 中

use \Shipu\Aamarpay\Aamarpay;

...

$payment = new Aamarpay(config('aamarpay'));
return $payment->paymentUrl();

获取隐藏输入字段

use \Shipu\Aamarpay\Aamarpay;

...

$payment = new Aamarpay(config('aamarpay'));
return $payment->customer([
    'cus_name'  => 'Shipu Ahamed', // Customer name
    'cus_email' => 'shipuahamed01@gmail.com', // Customer email
    'cus_phone' => '01616022669' // Customer Phone
])->transactionId('21005455540')->amount(3500)->hiddenValue();

交易 ID 是随机值。您可以自己生成,或按照以下步骤进行

use \Shipu\Aamarpay\Aamarpay;

...

$payment = new Aamarpay(config('aamarpay'));
return $payment->customer([
    'cus_name'  => 'Shipu Ahamed', // Customer name
    'cus_phone' => '01616022669' // Customer Phone
    'cus_email' => 'shipuahamed01@gmail.com', // Customer email
])->transactionId()->amount(3500)->hiddenValue();

or 

return $payment->customer([
    'cus_name'  => 'Shipu Ahamed', // Customer name
    'cus_phone' => '01616022669' // Customer Phone
    'cus_email' => 'shipuahamed01@gmail.com', // Customer email
])->amount(3500)->hiddenValue();

默认货币是 BDT。要更改货币

return $payment->customer([
    'cus_name'  => 'Shipu Ahamed', // Customer name
    'cus_phone' => '01616022669' // Customer Phone
    'cus_email' => 'shipuahamed01@gmail.com', // Customer email
])->currency()->amount(3500)->hiddenValue();

生成交易 ID

use \Shipu\Aamarpay\Aamarpay;

...

$payment = new Aamarpay(config('aamarpay'));
return $payment->generateTransaction();

检查有效响应

use \Shipu\Aamarpay\Aamarpay;

...

$payment = new Aamarpay(config('aamarpay'));
return $payment->valid($request);

检查带金额的有效响应

use \Shipu\Aamarpay\Aamarpay;

...

$payment = new Aamarpay(config('aamarpay'));
return $payment->valid($request, '3500'); 

其中 $request 将在 POST 响应后出现。

在 Blade 中

获取支付 POST URL

{{ aamarpay_payment_url() }}

获取隐藏输入字段

{!!
    aamarpay_hidden_input([
        'tran_id'   => '21005455540', // random number. if you don't set this it will be auto generate.
        'cus_name'  => 'Shipu Ahamed', // Customer name
        'cus_email' => 'shipuahamed01@gmail.com', // Customer email
        'cus_phone' => '01616022669' // Customer Phone
    ], 3500) 
!!}
or
{!!
    aamarpay_hidden_input([
        'tran_id'   => '21005455540', // random number. if you don't set this it will be auto generate.
        'cus_name'  => 'Shipu Ahamed', // Customer name
        'cus_email' => 'shipuahamed01@gmail.com', // Customer email
        'cus_phone' => '01616022669' // Customer Phone
    ], 3500, 'T-shirt', 'BDT') 
!!}

完整的 POST 按钮视图

{!! 
aamarpay_post_button([
    'cus_name'  => 'Shipu Ahamed', // Customer name
    'cus_email' => 'shipuahamed01@gmail.com', // Customer email
    'cus_phone' => '01616000000' // Customer Phone
], 2000, '<i class="fa fa-money">Payment</i>', 'btn btn-sm btn-success') 
!!}

示例

路由
Route::post('payment/success', 'YourMakePaymentsController@paymentSuccess')->name('payment.success');
Route::post('payment/failed', 'YourMakePaymentsController@paymentFailed')->name('payment.failed');
Route::post('payment/cancel', 'YourMakePaymentsController@paymentCancel')->name('payment.cancel');

Route::post('payment/success', 'YourMakePaymentsController@paymentSuccessOrFailed')->name('payment.success');
Route::post('payment/failed', 'YourMakePaymentsController@paymentSuccessOrFailed')->name('payment.failed');
Route::post('payment/cancel', 'YourMakePaymentsController@paymentSuccessOrFailed')->name('payment.cancel');
控制器方法
use Shipu\Aamarpay\Facades\Aamarpay;

...

public function paymentSuccessOrFailed(Request $request)
{
    if($request->get('pay_status') == 'Failed') {
        return redirect()->back();
    }
    
    $amount = 3500;
    $valid  = Aamarpay::valid($request, $amount);
    
    if($valid) {
        // Successfully Paid.
    } else {
       // Something went wrong. 
    }
    
    return redirect()->back();
}

禁用 CSRF 令牌

打开 app/Http/Middleware/VerifyCsrfToken.php 并添加以下内容

protected $except = [
    ...
    'payment/*',
    ...
];

致谢

在 Beerpay 上支持

嘿,伙计!帮我买几杯 🍻!

Beerpay Beerpay