phpawcom/thawani_laravel

将 Thawani 支付添加到 Laravel 项目

1.0.1 2024-03-23 17:41 UTC

This package is auto-updated.

Last update: 2024-09-23 18:53:07 UTC


README

此包用于将 Thawani 支持添加到 Laravel

安装

composer require phpawcom/thawani_laravel

然后迁移以添加 Thawani 表

php artisan migrate

发布配置

php artisan vendor:publish --provider "S4D\Laravel\Thawani\ThawaniServiceProvider"

The S4D\Laravel\Thawani\ThawaniServiceProvider 是默认自动发现和注册的。如果您想自己注册它,请将 ServiceProvider 添加到 config/app.php

'providers' => [
    S4D\Laravel\Thawani\ThawaniServiceProvider::class,
]

别名

'aliases' => [
    S4D\Laravel\Thawani\Thawani::class,
]

用法

首先您需要将路由添加到您的 routes/web.php

// To generate payment URL and redirect to Thawani
Route::get('pay', [\App\Http\Controllers\TestThawaniController::class, 'pay'])->name('thawani.pay');
// To check payment and update the status
Route::get('check/{session_id?}', [\App\Http\Controllers\TestThawaniController::class, 'check'])->name('thawani.check');
// To show cancellation message
Route::get('cancel/{session_id?}', [\App\Http\Controllers\TestThawaniController::class, 'cancel'])->name('thawani.cancel');

在您的控制器中

<?php

namespace App\Http\Controllers;

use S4D\Laravel\Thawani\Thawani;

class TestThawaniController extends Controller
{
    public function pay(){
        // Note that we use Routes names in setReturnUrls() method
        Thawani::setClientReference(1)->setReturnUrls('thawani.check', 'thawani.cancel')->setProducts([
            ['name' => 'test test test test test test test test test test test test ', 'unit_amount' => 100, 'quantity' => 1],
            ['name' => 'test', 'unit_amount' => 100, 'quantity' => 1],
        ])->setMetadata([
            'customer_name' => 'Fulan Al Fulani',
            'customer_phone' => '90000000',
            'customer_email' => 'email@domain.tld',
        ])->redirectToPayment();
    }
    public function check($session_id){
        return Response('Payment is '.(Thawani::paymentStatus($session_id) == 1? 'successful' : 'failed'));
    }
    public function cancel($session_id){
        Thawani::cancelPayment($session_id);
        return Response('has been cancelled');
    }
}

请注意,您可以通过这种方式获取支付 URL 而不进行重定向

$url = Thawani::setClientReference(1)->setReturnUrls('thawani.check', 'thawani.cancel')->setProducts([
    ['name' => 'test test test test test test test test test test test test ', 'unit_amount' => 100, 'quantity' => 1],
    ['name' => 'test', 'unit_amount' => 100, 'quantity' => 1],
])->setMetadata([
    'customer_name' => 'Fulan Al Fulani',
    'customer_phone' => '90000000',
    'customer_email' => 'email@domain.tld',
])->getPaymentUrl();

如果您在 setReturnUrls() 方法中未指定 URL,该包将使用其默认视图