iranrenter-group / laravel-online-payment
为 Laravel 应用程序提供伊朗支付网关处理程序
v5.9
2022-08-09 19:05 UTC
Requires
- php: >=7.0
- illuminate/support: ^5.2|^6.0|^7.0|^8.0|^9.0
This package is auto-updated.
Last update: 2024-09-09 23:35:29 UTC
README
Laravel Online Payment :: LaraPay 组件
适用于 Laravel 5+ 的在线支付模块处理程序,称为 LaraPay 组件,与 banktest.ir 模拟器完全兼容
什么是 Banktest?
当前支持
- Mellat Bank Gateway - Laravel 的银行 Melli 网关
- Saman Bank Gateway - Laravel 的银行 Saman 网关
- Saderat Bank Gateway - Laravel 的银行 Saderat 网关
- Pasargad Bank Gateway - Laravel 的银行 Pasargad 网关
- Parsian Bank Gateway - Laravel 的银行 Parsian 网关
- Melli Bank Gateway (Sadad) - Laravel 的银行 Melli / Sadad 网关
- Pay.ir Gateway / 支付网关
安装
1. 通过 composer 安装
composer require tartan/laravel-online-payment:"^5.0"
2. 将此添加到您的 Laravel 版本 < 5.4 的应用程序服务提供者中
Tartan\Larapay\LarapayServiceProvider::class,
3. 将此添加到您的别名字符集中
'Larapay' => Tartan\Larapay\Facades\Larapay::class,
4. 发布软件包资源和配置
php artisan vendor:publish
-
为 larapay 集成准备您的数据库(Eloquent)模型
- 您的交易/发票(Eloquent)模型必须实现
namespace App\Model; use Tartan\Larapay\Transaction; class Transaction extends Model implements TransactionInterface { // set order reference Id public function setReferenceId($referenceId, $save = true){} // check if you transaction is ready for requesting payment token public function checkForRequestToken(){} // check if transaction is ready for requesting verify transaction public function checkForVerify(){} // check if transaction is ready for requesting inqury transaction (if supported by gateway) public function checkForInquiry(){} // check if transaction is ready for requesting reverse transaction (if supported by gateway) public function checkForReverse(){} // check if transaction is ready for requesting settle/... transaction (if needed by gateway) public function checkForAfterVerify(){} // update transaction by paid card number (if provided by gateway) public function setCardNumber($cardNumber){} // mark transaction as verified public function setVerified(){} // mark transaction as settled/... public function setAfterVerified(){} // mark transaction as completed public function setSuccessful($flag){} // mark transaction as reversed public function setReversed(){} // get transaction amount public function getAmount(){} // set transactions's paid tme public function setPaidAt($time = 'now'){} // set transaction's extra details public function setExtra($key, $value, $save = false){} }
- 准备在线支付
public function payOnline (Request $request, Transaction $transaction) { // check if the selected payment is active or not from your gateways table $paymentGateway = Gateway::activeGate() ->where('slug', $request->input('by_online_gateway')) ->first(); if (empty($paymentGateway)) { return view('gateway.notfound'); } // get some additional parameters for updating transaction $parameters = [ 'description' => $request->input('by_online_description', ''), 'bank' => $request->input('by_online_gateway'), ]; // update transaction payment method $transaction = $this->transactionsRepository->setTransactionPaid( $transaction, TransactionPayment::ONLINE, $parameters ); // make larapay payment gateway instance $paymentGatewayHandler = Larapay::make($paymentGateway->slug, $transaction); // set payment params $paymentParams = [ 'order_id' => $transaction->getBankOrderId(), 'redirect_url' => route('payment.callback', [ 'bank' => $paymentGateway->slug, 'transactionId' => $transaction->guid ]), 'amount' => $transaction->amount, 'submit_label' => trans('larapay::larapay.goto_gate') ]; try { // get goto gate form $form = $paymentGatewayHandler->form($paymentParams); } catch (\Exception $e) { // could not generate goto gate form Log::emergency($paymentGateway->slug . ' #' . $e->getCode() . '-' . $e->getMessage()); Session::flash('alert-danger', trans('trans.could_not_create_goto_bank_form', ['gateway' => $paymentGateway->name])); return redirect()->back()->withInput(); } if (is_null($form)) { return redirect()->back()->withInput(); } // view goto gate view return view('gateway.gotogate', [ 'gateway' => $paymentGateway, 'form' => $form, ]); }
组件配置
return [ /* |-------------------------------------------------------------------------- | Tartan e-payment component`s operation mode |-------------------------------------------------------------------------- | | *** very important config *** | please do not change it if you don't know what BankTest is | | > production: component operates with real payments gateways | > development: component operates with simulated "BankTest" (banktest.ir) gateways | */ 'mode' => env('LARAPAY_MODE', 'production'), /* |-------------------------------------------------------------------------- | ready to serve gateways |-------------------------------------------------------------------------- | | specifies ready to serve gateways. | gateway characters are case sensitive and should be exactly same as their folder name. | eg, "Jahanpay" is correct not "JahanPay" or "jahanpay" | the gateways list is comma separated | */ 'gateways' => env('LARAPAY_GATES', 'Mellat,Saman,Pasargad'), /* |-------------------------------------------------------------------------- | Mellat gateway configuration |-------------------------------------------------------------------------- */ 'mellat' => [ 'username' => env('MELLAT_USERNAME', ''), 'password' => env('MELLAT_PASSWORD',''), 'terminal_id' => env('MELLAT_TERMINAL_ID', ''), 'callback_url' => env('MELLAT_CALLBACK_URL', '') ], /* |-------------------------------------------------------------------------- | Parsian gateway configuration |-------------------------------------------------------------------------- */ 'parsian' => [ 'pin' => env('PARSIAN_PIN', ''), ], /* |-------------------------------------------------------------------------- | Pasargad gateway configuration |-------------------------------------------------------------------------- */ 'pasargad' => [ 'terminalId' => env('PASARGAD_TERMINAL_ID', ''), 'merchantId' => env('PASARGAD_MERCHANT_ID', ''), 'certificate_path' => storage_path(env('PASARGAD_CERT_PATH', 'payment/pasargad/certificate.xml')), 'callback_url' => env('PASARGAD_CALLBACK_URL', '') ], /* |-------------------------------------------------------------------------- | Sadad gateway configuration |-------------------------------------------------------------------------- */ 'sadad' => [ 'merchant' => env('SADAD_MERCHANT', ''), 'transaction_key' => env('SADAD_TRANS_KEY', ''), 'terminal_id' => env('SADAD_TERMINAL_ID', ''), 'callback_url' => env('SADAD_CALLBACK_URL', ''), ], 'saderat' => [ 'MID' => env('SADERAT_MID', ''), 'TID' => env('SADERAT_TID', ''), 'public_key_path' => storage_path(env('SADERAT_CERT_PATH', 'payment/saderat/public.key')), 'private_key_path' => storage_path(env('SADERAT_CERT_PATH', 'payment/saderat/private.key')), ], /* |-------------------------------------------------------------------------- | Saman gateway configuration |-------------------------------------------------------------------------- */ 'saman' => [ 'merchant_id' => env('SAMAN_MERCHANT_ID', ''), 'merchant_pass' => env('SAMAN_MERCHANT_PASS', ''), ], /* |-------------------------------------------------------------------------- | Zarinpal gateway configuration |-------------------------------------------------------------------------- | | types: acceptable values --- zarin-gate or normal | server: acceptable values --- germany or iran or test | */ 'zarinpal' => [ 'merchant_id' => env('ZARINPAL_MERCHANT_ID', ''), 'type' => env('ZARINPAL_TYPE', 'zarin-gate'), 'callback_url' => env('ZARINPAL_CALLBACK_URL', ''), 'server' => env('ZARINPAL_SERVER', 'germany'), 'email' => env('ZARINPAL_EMAIL', ''), 'mobile' => env('ZARINPAL_MOBILE', '09xxxxxxxxx'), 'description' => env('ZARINPAL_MOBILE', 'powered-by-TartanPayment'), ], /* |-------------------------------------------------------------------------- | Pay.ir gateway configuration |-------------------------------------------------------------------------- */ 'pay_ir' => [ 'api' => env('PAY_IR_API_KEY', ''), ], /* |-------------------------------------------------------------------------- | SoapClient Options |-------------------------------------------------------------------------- | | useOptions: true/false | options: soapClient Options | */ 'soap' => [ 'useOptions' => env('SOAP_HAS_OPTIONS', false), 'options' => [ 'proxy_host' => env('SOAP_PROXY_HOST', ''), 'proxy_port' => env('SOAP_PROXY_PORT', ''), 'stream_context' => stream_context_create( [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, ], ] ), ] ] ];
团队
此组件由以下人员开发和一群 出色的贡献者 开发。
支持此项目
许可证
Laravel Online Payment 模块是开源软件,根据 MIT 许可证 发布。