baptiste-dulac/systempay-bundle

此包的最新版本(1.0.0-rc2)没有可用的许可信息。

Banque Populaire 和 Caisse d'épargne 的支付网关。

1.0.0-rc2 2020-04-10 10:25 UTC

This package is auto-updated.

Last update: 2024-09-10 20:44:00 UTC


README

此包允许在 symfony 项目中实现与 SystemPay 一起工作的支付解决方案。此支付解决方案使用 Systempay。Systempay 是以下银行公司提供的支付网关:

  • Banque Populaire (Cyberplus)
  • Caisse d'épargne (SPPlus)

Total Downloads Latest Stable Version

安装

步骤 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>