itsrafsanjani / laravel-bkash
Bkash支付网关的Laravel插件
1.0.0
2023-09-21 15:57 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^9.0 || ^10.0
- spatie/laravel-data: ^3.9
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
This package is auto-updated.
Last update: 2024-09-08 21:33:03 UTC
README
Laravel Bkash是一个为Bkash支付网关设计的Laravel插件。它使用了Bkash的Token化API。
安装
您可以通过composer安装此包
composer require itsrafsanjani/laravel-bkash
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="laravel-bkash-config"
这是发布后的配置文件内容
return [ 'sandbox' => env('BKASH_SANDBOX', true), // true for testing, false for production 'app_key' => env('BKASH_APP_KEY', ''), 'app_secret' => env('BKASH_APP_SECRET', ''), 'username' => env('BKASH_USERNAME', ''), 'password' => env('BKASH_PASSWORD', ''), // bkash will send data to this url 'callbackURL' => env('BKASH_CALLBACK_URL', 'http://127.0.0.1:8000/bkash/callback'), 'timezone' => 'Asia/Dhaka', ];
配置
- 设置
.env
# true for testing, false for production BKASH_SANDBOX=true BKASH_APP_KEY= BKASH_APP_SECRET= BKASH_USERNAME= BKASH_PASSWORD= # bkash will send data to this url BKASH_CALLBACK_URL=http://127.0.0.1:8000/bkash/callback
- 在
routes/web.php
中为bkash创建路由
Route::get('/bkash/callback', [PaymentController::class, 'callback']);
- 在
app\Http\Middleware\VerifyCsrfToken.php
中添加异常处理
protected $except = [ 'bkash/*', ];
使用方法
支付和回调(控制器示例代码)
use Illuminate\Http\Request; use ItsRafsanJani\Bkash\Data\CreatePaymentData; use ItsRafsanJani\Bkash\Facades\Bkash; class PaymentController extends Controller { public function pay() { // .. // save payment related data in your database or anything // .. $invoiceId = uniqid(); // could be any string $response = Bkash::createPayment( new CreatePaymentData( amount: 20.50, payerReference: $invoiceId, ) ); // dd($response); return redirect()->away($response->bkashURL); } public function callback(Request $request) { // first you need to execute $executeResponse = Bkash::executePayment($request->paymentID); // then query $queryResponse = Bkash::queryPayment($request->paymentID); // .. // update payment status // .. } }
可用方法和响应
创建支付
$invoiceId = uniqid(); // could be any string $response = Bkash::createPayment( new CreatePaymentData( amount: 20.50, payerReference: $invoiceId, ) ); return response()->json($response);
示例响应
{ "statusCode": "0000", "statusMessage": "Successful", "paymentID": "TR0011J9EMqSy16948652*****", "bkashURL": "https://sandbox.payment.bkash.com/redirect/tokenized/?paymentID=TR0011J9EMqSy16948652*****&hash=4kRP(RZBQ8Xn15a_0x4gW79V0EUZoaJJJv!UJmd10(s1Cl3ciz8aolIOsQ!3vlOno*vkq3jO-76BCoN7f4c8Zfykw1vaPsarABG21694865217269&mode=0011&apiVersion=v1.2.0-beta", "callbackURL": "https://:8000/api/bkash-callback", "successCallbackURL": "https://:8000/api/bkash-callback?paymentID=TR0011J9EMqSy16948652*****&status=success", "failureCallbackURL": "https://:8000/api/bkash-callback?paymentID=TR0011J9EMqSy16948652*****&status=failure", "cancelledCallbackURL": "https://:8000/api/bkash-callback?paymentID=TR0011J9EMqSy16948652*****&status=cancel", "amount": "10", "intent": "sale", "currency": "BDT", "paymentCreateTime": "2023-09-16T17:53:37:268 GMT+0600", "transactionStatus": "Initiated", "merchantInvoiceNumber": "65059731*****" }
执行支付
$response = Bkash::executePayment($request->paymentID); return response()->json($response);
示例响应
{ "statusCode": "0000", "statusMessage": "Successful", "paymentID": "TR0011f0CE1zl16944532*****", "payerReference": "64ff4dd*****", "customerMsisdn": "018777*****", "trxID": "AIB10*****", "amount": "10", "transactionStatus": "Completed", "paymentExecuteTime": "2023-09-11T23:31:24:581 GMT+0600", "currency": "BDT", "intent": "sale", "merchantInvoiceNumber": "64ff4dd6*****" }
查询支付
$response = Bkash::queryPayment($request->paymentID); return response()->json($response);
示例响应
{ "paymentID": "TR0011f0CE1zl16944532*****", "mode": "0011", "paymentCreateTime": "2023-09-11T23:26:49:676 GMT+0600", "paymentExecuteTime": "2023-09-11T23:31:24:581 GMT+0600", "amount": "10", "currency": "BDT", "intent": "sale", "merchantInvoice": "64ff4dd6*****", "trxID": "AIB10DO2ON", "transactionStatus": "Completed", "verificationStatus": "Complete", "statusCode": "0000", "statusMessage": "Successful", "payerReference": "64ff4dd*****" }
搜索交易
$searchTransactionResponse = Bkash::searchTransaction($response['trxID']); return response()->json($searchTransactionResponse);
示例响应
{ "trxID": "AIB10*****", "initiationTime": "2023-09-11T23:31:22:000 GMT+0600", "completedTime": "2023-09-11T23:31:22:000 GMT+0600", "transactionType": "bKash Tokenized Checkout via API", "customerMsisdn": "018777*****", "transactionStatus": "Completed", "amount": "10", "currency": "BDT", "organizationShortCode": "50***", "statusCode": "0000", "statusMessage": "Successful" }
测试
./vendor/bin/pest
更新日志
请参阅更新日志以获取最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查看我们的安全策略了解如何报告安全漏洞。
致谢
许可协议
MIT许可(MIT)。请参阅许可文件以获取更多信息。