萨吉拉 / 第一数据
FirstData在Laravel中的集成
v1.0
2021-07-15 13:15 UTC
README
本包提供工具,用于在Laravel项目中集成firstdata支付。
安装
需要此包
composer require sargilla/firstdata
发布配置文件
php artisan vendor:publish --tag=firstdata
使用您的商店数据配置.env文件
FIRSTDATA_FORM_URL=
FIRSTDATA_STORE_ID=
FIRSTDATA_SHARED_SECRET=
FIRSTDATA_RESPONSE_FAILURE=
FIRSTDATA_RESPONSE_SUCCESS=
FIRSTDATA_RESPONSE_NOTIFICATION=
FIRSTDATA_TIMEZONE=
使用方法
您可以在blade模板中使用Firstdata门面调用两个方法
Firstdata::getDateTime() // It returns formated datetime Firstdata::createExtendedHash($totalcharge,$currency,$invoiceNumber)
示例表单请求
这是一个测试集成的示例表单
<html> <head> <title>IPG Connect Sample for PHP</title> </head> <body> <h1>Order Form</h1> <form method="post" action="{{config('firstdata.form_url')}}"> <input type="hidden" name="txntype" value="sale"> <input type="hidden" name="timezone" value="{{config('firstdata.timezone')}}" /> <input type="hidden" name="txndatetime" value="{{ Firstdata::getDateTime() }}" /> <input type="hidden" name="hash_algorithm" value="HMACSHA256" /> <input type="hidden" name="hashExtended" value="{{ Firstdata::createExtendedHash('13.00','032','50') }}" /> <input type="hidden" name="storename" value="{{ config('firstdata.store_id') }}" /> <input type="hidden" name="mode" value="payonly" /> <input type="hidden" name="paymentMethod" value="M" /> <input type="hidden" name="chargetotal" value="13.00" /> <input type="hidden" name="currency" value="032" /> <input type="hidden" name="invoicenumber" value="50" /> <input type="hidden" name="responseFailURL" value="{{ config('firstdata.response_failure') }}" /> <input type="hidden" name="responseSuccessURL" value="{{ config('firstdata.response_success') }}" /> <input type="hidden" name="transactionNotificationURL" value="{{ config('firstdata.response_notification') }}" /> <input type="submit" value="Submit"> </form> </body> </html>
路由
推荐的响应路由
Route::get('first-data', 'Payments\FirstDataController@showForm'); Route::post('first-data/response/success', 'Payments\FirstDataController@success'); Route::post('first-data/response/failure', 'Payments\FirstDataController@failure'); Route::post('first-data/response/notification', 'Payments\FirstDataController@notification');
控制器
推荐控制器
namespace App\Http\Controllers\Payments; use Carbon\Carbon; use Illuminate\Support\Facades\Log; class FirstDataController { public function success() { // PROCESS SUCCESS AND REDIRECT Log::notice('OPERATION SUCCESS'); Log::info(request()->all()); dd(request()->all()); } public function failure() { // PROCESS FAILURE AND REDIRECT Log::notice('OPERATION FAILED'); Log::info(request()->all()); dd(request()->all()); } public function notification() { // PROCESS NOTIFICATION Log::notice('OPERATION NOTIFICATION'); Log::info(request()->all()); dd(request()->all()); } }