reflexece/systempay-bundle

此软件包最新版本(v0.3)没有可用的许可证信息。

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

v0.3 2015-06-27 09:40 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:26:30 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:启用插件

在内核中启用软件包

<?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>