nanatty32/laravelhubtelmerchantaccountcedibet

Laravel Hubtel 商户账户集成(纯 Laravel CediBet)

v1.0.2 2020-09-16 12:49 UTC

This package is auto-updated.

Last update: 2024-09-18 21:26:32 UTC


README

ico-version

基于 https://developers.hubtel.com/documentations/merchant-account-api

关于

laravel-hubtel-merchant-account-cedibet 包允许您在 Laravel 应用程序中直接使用 Hubtel 商户账户 API 接受和处理支付。

特性

  • 接收移动货币
  • 发送移动货币
  • 检查交易状态
  • 在线结账

安装

在您的 composer.json 中添加 nanatty32/laravelhubtelmerchantaccountcedibet 包,并更新依赖项

$ composer require nanatty32/laravelhubtelmerchantaccountcedibet

如果您正在使用 Laravel 5.5,这样就完成了。

如果您仍在使用更早版本的 Laravel,您需要添加包的服务提供者和别名。为此,请打开您的 config/app.php 文件。

HubtelMerchantAccount\ServiceProvider 添加到 providers 数组中

Nanatty32\HubtelMerchantAccount\ServiceProvider::class,

并在 aliases 数组中添加新行

'aliases' => [
      ...
      'HubtelMerchantAccount' => Nanatty32\HubtelMerchantAccount\HubtelMerchantAccountFacade::class,
      ...
 ]

使用在线结账功能

假设您正在从控制器方法使用此功能,您可以这样做

namespace App\Http\Controllers;

use Nanatty32\HubtelMerchantAccount\OnlineCheckout\Item;
use HubtelMerchantAccount;
use App\Stake;
use Illuminate\Http\Request;

class CheckoutController extends Controller
{
  
  ...
  
  public function payOnline(Request $request)
    {
        $stake = Stake::where('session_id', $request->session()->getId())->latest()->first();

        if (!$stake) {
            abort(404, 'Invalid stake!');
        }

        // Initiate online checkout
        $ocRequest = new \Nanatty32\HubtelMerchantAccount\OnlineCheckout\Request();
        $ocRequest->invoice->description = "Invoice description";
        $ocRequest->invoice->total_amount = $stake->total;
        $ocRequest->business->name = "CediBet";
        $ocRequest->business->logo_url = asset('/img/logo.png');// Can be changed by developers 
        $ocRequest->business->phone = "0243XXXXXX";
        $ocRequest->business->postal_address = "P. O. Box ******";
        $ocRequest->business->tagline = "Best online Betting Company In Ghana";
        $ocRequest->business->website_url = env('APP_URL');
        $ocRequest->actions->cancel_url = url('/checkout/done');
        $ocRequest->actions->return_url = url('/checkout/done');

        foreach ($stake->items as $item) {

            $invoiceItem = new Item();
            $invoiceItem->name = $item->product_name;
            $invoiceItem->description = "";
            $invoiceItem->quantity = $item->quantity;
            $invoiceItem->unit_price = $item->price;
            $invoiceItem->total_price = $item->price * $item->quantity;

            $ocRequest->invoice->addItem($invoiceItem);
        }
       
        HubtelMerchantAccount::onlineCheckout($ocRequest);
    }

接收移动货币

以下是从控制器方法请求移动货币支付的方法

namespace App\Http\Controllers;

use HubtelMerchantAccount;
use Nanatty32\HubtelMerchantAccount\MobileMoney\Receive\Request as ReceiveMobileMoneyRequest;

class CheckoutController extends Controller
{
  
  ...
  
  public function payOnline(Request $request)
    {
        $request = new ReceiveMobileMoneyRequest();
        $request->Amount = $this->transaction->amount;
        $request->Channel = $this->transaction->channel;
        $request->CustomerMsisdn = $this->transaction->mobile_wallet_number;
        $request->CustomerName = "N/A";
        $request->Description = "Bet Amount";
        $request->PrimaryCallbackURL = "https://my-application.com/handle" . $this->transaction->id;
        $request->SecondaryCallbackURL = "https://my-application.com/handle/" . $this->transaction->id;
        $response = HubtelMerchantAccount::receiveMobileMoney($request);
    }

配置

默认值在 config/hubtelmerchantaccount.php 中设置。将此文件复制到您的配置目录以修改值。您可以使用以下命令发布配置

$ php artisan vendor:publish --provider="Nanatty32\HubtelMerchantAccount\ServiceProvider"
return [

    /**
     * Merchant account number
     */
    "account_number" => env('HUBTEL_MERCHANT_ACCOUNT_NUMBER'),

    /**
     * Login credentials for hubtel api
     *
     */
    "api_key" => [
        "client_id" => env('HUBTEL_MERCHANT_ACCOUNT_CLIENT_ID'),
        "client_secret" => env('HUBTEL_MERCHANT_ACCOUNT_CLIENT_SECRET')
    ],

    /**
     * business details
     */
    "business" => [
        "name" => env('APP_NAME')
    ]
];

许可证

在 MIT 许可证下发布,请参阅 LICENSE