baptiste-dulac / systempay-bundle
此包的最新版本(1.0.0-rc2)没有可用的许可信息。
Banque Populaire 和 Caisse d'épargne 的支付网关。
1.0.0-rc2
2020-04-10 10:25 UTC
Requires
- php: ^7.1.3
- ext-json: *
- doctrine/orm: ^2.6
- symfony/config: ^4.0|^5.0
- symfony/dependency-injection: ^4.0|^5.0
- symfony/http-kernel: ^4.0|^5.0
- twig/twig: ^2.0
README
此包允许在 symfony 项目中实现与 SystemPay 一起工作的支付解决方案。此支付解决方案使用 Systempay。Systempay 是以下银行公司提供的支付网关:
- Banque Populaire (Cyberplus)
- Caisse d'épargne (SPPlus)
安装
步骤 1:使用 Composer 导入
使用 composer
{ "require": { "baptiste-dulac/systempay-bundle": "master" } }
步骤 2:启用插件
在 kernel 中启用包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Tlconseil\SystempayBundle\TlconseilSystempayBundle(), ); }
步骤 3:配置包
必填字段
tlconseil_systempay: # Credentials site_id: XXXXX # Keys key_dev: XXXXX key_prod: XXXXX # Return url_return: http://www.example.com/payment_return
可选字段(此处字段具有默认值)
# Debug values : ON / OFF debug: ON # Return mode return_mode: GET # Possible values for ctx_mode : TEST / PRODUCTION ctx_mode: TEST # Language language: fr # Success redirect_success_timeout: 1 redirect_success_message: Redirection vers Les Annonces de la Seine dans quelques instants # Error redirect_error_timeout: 1 redirect_error_message: Redirection vers Les Annonces de la Seine dans quelques instants
如何使用
控制器
创建交易
要实例化新的交易,您需要在控制器中创建一个操作并调用 tlconseil_systempay
服务。所有必填字段都使用其默认值。您可以在 app/config/config.yml
文件中配置交易的所有常见字段。
要查看可用的字段,请参阅: Systempay 文档(第 2.3.1 节)
服务方法
init($currency = 978, $amount = 1000)
允许您指定交易的金额和货币。setOptionnalFields(array)
允许您指定任何 System Pay 网关字段。
示例
/** * @Route("/initiate-payment/id-{id}", name="pay_online") * @Template() */ public function payOnlineAction($id) { // ... $systempay = $this->get('tlconseil.systempay') ->init() ->setOptionnalFields(array( 'shop_url' => 'http://www.example.com' )) ; return array( 'paymentUrl' => $systempay->getPaymentUrl(), 'fields' => $systempay->getResponse(), ); }
处理服务器的响应
此路由将由 Systempay 服务调用以更新支付状态。这是正确处理支付验证的唯一方法。
服务方法
responseHandler(Request)
用于更新交易状态(数据库中)
示例
/** * @Route("/payment/verification") * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function paymentVerificationAction(Request $request) { // ... $this->get('tlconseil.systempay') ->responseHandler($request) ; return new Response(); }
模板
这是 payOnlineAction()
的模板可能的样子。您可以使用 systempayForm
twig 函数自动生成基于服务中创建的字段和由 getResponse()
函数返回的字段生成的表单。
<div class="row"> <div class="col-sm-8 col-sm-offset-2"> <div class="widget widget-white text-center"> <i class="fa fa-refresh fa-spin margin-top margin-bottom" style="font-size: 50px"></i> <h3>Redirection vers la page de paiement en cours...</h3> <form action="{{ paymentUrl }}" method="POST" id="systempay-form"> {{ systempayForm(fields) | raw }} </form> </div> </div> </div> <script type="text/javascript"> document.getElementById('systempay-form').submit(); </script>