shipu / php-aamarpay-payment
适用于 Aamarpay 支付网关 API 的 PHP 客户端
v2.0.0
2021-08-09 21:15 UTC
Requires
- php: >=5.6.4
- guzzlehttp/guzzle: ^6.2|^7.0
Requires (Dev)
- symfony/var-dumper: ^4.3
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"
配置
此包需要三个配置。
- store_id = Aamarpay 支付网关中的您的商店 ID。
- signature_key = Aamarpay 支付网关中的您的签名密钥
- sandbox = 使用
true表示沙盒,使用false表示实时 - redirect_url = 在
success和fail后应用程序重定向的 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 上支持
嘿,伙计!帮我买几杯 🍻!