zfhassaan / alfa
Laravel 9 银行 Alfalah 包
v1.0.1
2022-10-12 19:40 UTC
Requires
- php: ^8.0.2
This package is auto-updated.
Last update: 2024-09-16 10:32:47 UTC
README
这是Bank Alfalah支付网关包,用于通过Alfa钱包、银行账户号码或信用卡(信用卡尚未实现)进行支付。您可以通过composer使用此包与Laravel或任何PHP框架。
安装
您可以通过composer安装此包
composer require zfhassaan/alfa
设置.env配置
您可以从Bank Alfalah商户门户获取这些值
ALFAPAY_URL= ALFAPAY_MODE=sandbox ALFAPAY_CHANNEL_ID= ALFAPAY_MERCHANT_ID= ALFAPAY_STORE_ID= ALFAPAY_RETURN_URL= ALFAPAY_MERCHANT_USERNAME= ALFAPAY_MERCHANT_PASSWORD= ALFAPAY_MERCHANT_HASH= ALFAPAY_KEY_1= ALFAPAY_KEY_2=
配置
将这些文件添加到app/config.php
/* * Package Service Providers... */ \zfhassaan\Alfapay\AlfapayServiceProvider::class,
并在app/config.php
中添加别名
'aliases' => Facade::defaultAliases()->merge([ 'Alfapay' => \zfhassaan\Alfapay\AlfapayFacade::class, ])->toArray(),
用法
首先,您需要通过提供唯一的交易号码或订单号码来获取认证令牌,然后可以提交请求以获取金额信息,并附带一些验证。请参考YouTube视频以获取完整理解。
use zfhassaan\Alfapay\AlfaPay; public function get_token(){ // generate random transaction/order number $transNum = rand(0,17866120); // get AuthToken from AlfaPay API $alfa = new AlfaPay(); $response = $alfa->setTransactionReferenceNumber($transNum)->getToken(); // if( $response != null && $response->success == 'true' ) { return $response->AuthToken; } else { // log error if( $response == null ) { abort(403, 'Error: Timeout connection. Auth Token not generated.'); } else { abort(403, 'Error: '.$response->ErrorMessage.'. Auth Token does not generated.'); } } }
交易进行中的代码片段
public function process(){ $alfa->setAuthToken($this->get_token()); $alfa->setCurrency('PKR'); $alfa->setTransactionReferenceNumber($request->TransctionReferenceNumber); $alfa->setTransactionType($request->TransactionTypeId); $alfa->setAmount($request->Amount); $alfa->setMobileNumber($request->MobileNumber); $alfa->setEmail($request->Email); $alfa->setCountryCode('164'); // Pakistan = 164 $alfa->sendTransactionRequest(); // return $alfa->sendTransactionRequest(); $transactionResponse = $alfa->sendTransactionRequest(); if($transactionResponse != null && $transactionResponse->success = 'true') { $TransactionReferenceNumber = $transactionResponse->TransactionReferenceNumber; $TransactionTypeId = $transactionResponse->TransactionTypeId; $HashKey = $transactionResponse->HashKey; $AuthToken = $request->AuthToken; // Can return it in a view to send next request for OTP // It depends on the developer how to utilize it. } abort(404,$transactionResponse); }
OTP请求(或继续支付)
public function otp(Request $request) { $this->validate($request,[ 'OTP' => 'required', 'HashKey' => 'required', 'TransactionTypeId'=>'required', 'TransactionReferenceNumber'=>'required', ]); $alfa = new AlfaPay(); $alfa->setCurrency('PKR'); $alfa->setTransactionReferenceNumber($request->TransactionReferenceNumber); $alfa->setTransactionType($request->TransactionTypeId); $alfa->setHashKey($request->HashKey); $alfa->setSMSOTP($request->OTP); $alfa->setAuthToken($request->AuthToken); $processResponse = $alfa->processTransaction(); if($processResponse != null && property_exists($processResposne, 'response_code')) { try{ $currency = $alfa->getCurrency('PKR'); $paidAmount = $processResponse->transaction_amount; $apiResponse = serialize($processResponse); session()->flash('success', 'Payment Success'); // Return with currency, paid Amount , apiResponse, ProcessResponse or // compact it in views to show Thank you ( Order Confirmation page ) } catch(\Exception $e) { abort(403, 'Error: ', $e->getMessage()); } } else { abort(403, 'Error: '.$processResponse->ErrorMessage.'. Transaction OTP not completed'); } }
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
安全性
如果您发现任何安全相关的问题,请通过naeemins@gmail.com发送电子邮件,而不是使用问题跟踪器。
致谢
The repository is forked from codesocolock and fixed to work with PHP 8.1 and Laravel 9
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。