mahedi250/bkash

bKash支付网关,适用于Laravel v.1

v1.0.0 2023-11-05 05:51 UTC

This package is auto-updated.

Last update: 2024-09-05 07:47:44 UTC


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);