mahedi250 / bkash
bKash支付网关,适用于Laravel v.1
v1.0.0
2023-11-05 05:51 UTC
Requires
- php: ^7.4|^8.0|^8.1
- illuminate/support: ~6|~7|~8|~9
README
欢迎使用bKash Laravel插件包!本插件包可轻松集成bKash支付网关,使交易变得简单。
安装
composer require mahedi250/bkash
发布供应商(配置)
php artisan vendor:publish --provider="Mahedi250\Bkash\bkashServiceProvider"
设置.env配置文件
BKASH_SANDBOX=true BKASH_CHECKOUT_URL_USER_NAME = '' BKASH_CHECKOUT_URL_PASSWORD = '' BKASH_CHECKOUT_URL_APP_KEY = '' BKASH_CHECKOUT_URL_APP_SECRET = '' BKASH_CALLBACK_URL='Your defined Callback URl //defualt Callback url => http://127.0.0.1:8000/bkash/callback'
生成控制器
php artisan make:controller Payment/BkashPaymentController
CHECKOUT(基于URL)
1. 创建支付
<?php
namespace App\Http\Controllers\Payment;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Mahedi250\Bkash\Facade\CheckoutUrl;
class BkashPaymentController extends Controller
{
public function pay(Request $request)
{
$amount = 100;
$response = CheckoutUrl::Create($amount);
return redirect($response->bkashURL);
}
}
传递额外的正文参数
$response = CheckoutUrl::Create(1000,['payerReference'=>"01877722345",'merchantInvoiceNumber'=>"Inv_123"]);
return redirect($response->bkashURL);
2. 添加回调函数
public function callback(Request $request)
{
$status = $request->input('status');
$paymentId = $request->input('paymentID');
if ($status === 'success')
{
$response = CheckoutUrl::MakePayment($paymentId);
if ($response->statusCode !== '0000')
{
return CheckoutUrl::Failed($response->statusMessage);
}
if (isset($response->transactionStatus)&&($response->transactionStatus=='Completed'||$response->transactionStatus=='Authorized'))
{
//Database Insert Operation
return CheckoutUrl::Success($response->trxID."({$response->transactionStatus})");
}
else if($response->transactionStatus=='Initiated')
{
return CheckoutUrl::Failed("Try Again");
}
}
else
{
return CheckoutUrl::Failed($status);
}
}
3. 在Web.php中添加路由
Route::group(['middleware' => ['web']], function () {
Route::post("bkash/pay",[BkashPaymentController::class,'pay'])->name('bkash.pay');
Route::get("bkash/callback",[BkashPaymentController::class,'Callback']);
});
4. 在blade中使用route('bkash.pay')
<form action="{{ route('bkash.pay') }}" method="POST">
@csrf
<button type="submit">Pay with bkash</button>
</form>
退款交易
public function refund(Request $request)
{
return CheckoutUrl::Refund(paymentID,$trxID,$amountToRefund);
}
AUTH & CAPTURE(URL)
创建支付
$amount = 200;
$response = CheckoutUrl::Create($amount,['intent'=>'authorization']);
return redirect($response['bkashURL']);
捕获
CheckoutUrl::Capture($paymentID);
作废
CheckoutUrl::Void($paymentID);