matthv / laravel-atos-sips-gateway
Laravel Atos SIPS
v1.1.0
2022-02-13 14:37 UTC
Requires
- php: ^7.4|^8.0
- laravel/framework: ^7.0|^8.0|^9.0
README
此包使得与Atos SIPS支付系统集成变得简单,该系统在不同名称下被法国银行广泛使用:Mercanet、E-Transactions、Citelis、Sogenactif等。
请注意,此包仅支持Atos SIPS的版本2。
安装
1. composer
composer require matthv/laravel-atos-sips-gateway
2. 发布
php artisan vendor:publish --provider="Matthv\AtosSipsGateway\Providers\AtosSipsServiceProvider"
3. 配置
大部分值来自Atos仪表板。你应该将以下变量放入你的.env文件
- ATOS_TEST :
true
使用测试环境。默认为true。由Atos仪表板提供 - ATOS_MERCHANT_ID : 商户ID。
- ATOS_SECRET_KEY : 秘密密钥。
- ATOS_KEY_VERSION : 密钥版本。
- ATOS_INTERFACE_VERSION : 接口版本。
- ATOS_PRODUCTION_URL : 银行生产URL。默认为
https://payment-webinit.mercanet.bnpparibas.net/paymentInit
。 - ATOS_TEST_URL : 银行测试URL。默认为
https://payment-webinit-mercanet.test.sips-atos.com/paymentInit
。
你可以在 config/atos.php
中查看所有配置选项。
使用Mercanet BNP Paribas的示例
ATOS_TEST=true
ATOS_MERCHANT_ID=211000021310001
ATOS_SECRET_KEY=S9i8qClCnb2CZU3y3Vn0toIOgz3z_aBi79akR30vM9o
ATOS_KEY_VERSION=1
ATOS_INTERFACE_VERSION=HP_2.20
用法
1. 准备表单支付
要进行基本支付,您至少需要以下两个信息
- paymentNumber用于标识单个交易。这对应于Atos的
transactionReference
。 - 金额(以分格式化的整数)。例如10.50 € => 1050。默认货币为欧元。
此代码应在控制器中运行。它将返回一个视图,该视图将自动将客户重定向到银行网站。
return app()->make(AtosSipsAuthorization::class) ->setPaymentNumber('AABBAA'.rand(1000,9999)) ->setAmount(1000) ->paymentView();
您可以使用setCustomParameter
方法添加Atos SIPS自定义字段。
return app()->make(AtosSipsAuthorization::class) ->setPaymentNumber('AABBAA'.rand(1000,9999)) ->setCustomParameters( [ 'customerEmail' => 'j.doe@customer-email.com', 'customerId' => 123, 'orderId' => 456, ] ) ->setAmount(1000) ->paymentView();
2. 返回 & 回调路由
您需要在config/atos.php
中设置两个路由名称,每个名称都具有post
方法
customer_return_route_name
:允许您的用户在支付成功或取消时返回到您的网站。默认为atos.return
。customer_callback_route_name
:银行在交易完成后调用的路由。默认为atos.callback
。
您可能需要从您的VerifyCsrfToken中间件中排除这些路由。
3. 回调交易处理
此代码应在回调路由的控制器中运行。
$verify = app()->make(Verify::class); // you can access all callback data using $allParameters = $verify->getParameters(); // or specify a field using $paymentNumber = $verify->getParameter('transactionReference'); try { $success = $verify->isSuccess(); if ($success) { // handle successful payment } else { // handle error payment } echo "OK"; } catch (InvalidSignature $e) { Log::alert('Invalid payment signature detected'); }
许可证
此包受MIT许可证许可。