numericscoder / npay-laravel
适用于N-pay的Laravel 5.6软件包
Requires
- php: ^5.3.3 || ^7.0
- guzzlehttp/guzzle: ~6.0
This package is not auto-updated.
Last update: 2024-09-29 06:25:36 UTC
README
适用于无缝集成NPay的Laravel 5.6软件包
安装
需要PHP 5.4+和Composer。
要获取Npay-laravel的最新版本,只需使用Composer进行要求。
composer require numericscoder/npay-laravel
或者将以下行添加到您的composer.json文件的require块中。
"numericscoder/npay-laravel": "1.0.*"
然后,您需要运行composer install或composer update来下载它并更新自动加载器。
一旦Laravel Paystack安装完成,您需要注册服务提供者。打开config/app.php文件,并将以下内容添加到providers键中。
如果您使用的是Laravel >= 5.5,则可以跳过此步骤并转到
配置。
Numericscoder\Npay\NpayServiceProvider::class
此外,还可以注册外观如下
'aliases' => [ ... 'Npay' => Numericscoder\Npay\Facades\Npay::class, ... ]
配置
您可以使用此命令发布配置文件
php artisan vendor:publish --provider="Numericscoder\Npay\NpayServiceProvider"
一个名为npay.php的配置文件,其中包含一些合理的默认值,将被放置在您的config目录中
<?php return [ /** * Api Secret Key * */ 'secretKey' => getenv('NPAY_API_KEY'), /** * Npay Payment URL * */ 'paymentUrl' => getenv('NPAY_PAYMENT_URL'), /** * Optional email address of the merchant * */ 'merchantEmail' => getenv('MERCHANT_EMAIL'), ];
##一般支付流程
###1. 顾客被重定向到支付提供商的网站
当顾客完成结账流程并准备付款并点击付款按钮时,顾客必须被重定向到支付提供商的网站。
重定向是通过提交包含一些隐藏字段的表单来完成的。表单必须提交到支付提供商的网站。隐藏字段至少指定了必须支付的金额、订单ID和一个散列值。
散列值是通过隐藏表单字段和非公开的秘密计算得出的。支付提供商使用的散列值用于验证请求是否有效。
###2. 顾客在支付提供商的网站上付款
顾客到达支付提供商的网站,可以选择支付方式。所有必要的支付步骤都由支付提供商处理。
###3. 顾客被重定向回
付款订单后,顾客被重定向回。在重定向请求到商店网站时,会返回一些值。通常这些值是订单ID、支付结果和一个散列值。
散列值是通过返回的一些字段和非公开的秘密值计算得出的。此散列值用于验证请求是否有效且来自支付提供商。务必仔细检查此散列值。
NPAY_API_KEY=xxxxxxxxxxxxx NPAY_PAYMENT_URL=https://bvnpay.ng MERCHANT_EMAIL=merchant@gmail.com
用法
打开您的.env文件,并添加您的API密钥、商家电子邮件和付款URL,如下所示
// Laravel 5.1.17 and above Route::post('/setTransaction', 'PaymentController@redirectToGateway')->name('setTransaction');
Route::get('/payment/getTransaction', 'PaymentController@handleGatewayCallback');
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; use Npay; class PaymentController extends Controller { /** * Redirect the User to Npay Payment Page * @return Url */ public function redirectToGateway() { return Npay::getAuthorizationUrl()->redirectNow(); } /** * Obtain Npay payment information * @return void */ public function handleGatewayCallback() { $paymentDetails = Npay::getPaymentData(); dd($paymentDetails); // Now you can do whatever you want with the details; // you can save it in your database // you can then redirect or do whatever you want } }
设置路由和控制器方法如下
<form method="POST" action="{{ route('setTransaction') }}" accept-charset="UTF-8" class="form-horizontal" role="form"> @csrf <div class="row" style="margin-bottom:40px;"> <div class="col-md-8 col-md-offset-2"> <p> <div> Payment Details </div> </p> <input type="hidden" name="email" value="ndekepeter@gmail.com"> {{-- required --}} <input type="hidden" name="orderID" value="345"> <input type="hidden" name="amount" value="800"> {{-- required in kobo --}} <input type="hidden" name="quantity" value="3"> <input type="hidden" name="metadata" value="{{ json_encode($array = ['key_name' => 'value',]) }}" > {{-- For other necessary things you want to add to your payload. it is optional though --}} <input type="hidden" name="reference" value="{{ Npay::genTranxRef() }}"> {{-- required --}} <input type="hidden" name="key" value="{{ config('npay.secretKey') }}"> {{-- required --}} {{ csrf_field() }} {{-- works only when using laravel 5.1, 5.2 --}} <input type="hidden" name="callbackUrl" value="your-callback-url"> {{-- required --}} <p> <button class="btn btn-success btn-lg btn-block" type="submit" value="Pay Securely!"> <i class="fa fa-plus-circle fa-lg"></i> Pay Securely! </button> </p> </div> </div> </form>
注意:您必须提供您的回调URL /payment/getTransaction,因为我们在成功交易后会重定向您。您也可以将其作为表单中的一个参数提供,该表单将发送给我们
一个示例HTML表单看起来如下所示
单击提交按钮后,顾客将被重定向到Npay网站。