cmiecom / cmi-pay-bundle

CMI网关支付库

安装: 384

依赖项: 0

建议者: 0

安全: 0

星星: 2

关注者: 0

分支: 4

开放问题: 0

类型:symfony-bundle

v1.0 2019-04-10 15:09 UTC

This package is auto-updated.

Last update: 2024-09-29 05:21:42 UTC


README

将CMI支付模块直接集成到Symfony应用中。

  • CMI支付流程是如何工作的?*

    客户在您的网站上填写表单并提交。然后客户将被重定向到CMI支付页面完成支付。一旦支付完成,客户可以选择返回您的网站,同时Cmi将向您的回调URL发送回调。

设置

此包允许您通过最小修改将cmi支付流程添加到您的代码中。这些说明还将指导您安装该包。

安装

使用Composer安装

composer require cmiecom/cmi-pay-bundle

routes.xml包含在您的路由文件中

// config/routes.yaml

_cmi_pay:
    resource: '@CmiPayBundle/Resources/config/routes.xml'

用法

渲染表单并将客户重定向到CMI页面支付

在默认路由中配置

// src/Resources/config/routes.xml
	<route id="cmi_pay_request" controller="cmi.pay.controller::requestPay" path="/cmi/requestpayment" />

并一个渲染表单的控制器操作

namespace CmiPayBundle\Controller;

......

class CmiPayController extends AbstractController
{
    public function requestPay(Request $request)
    {
        $params = new CmiPay();
        // Setup new payment parameters
        $okUrl = $this->generateUrl('cmi_pay_okFail', [], UrlGeneratorInterface::ABSOLUTE_URL);
        $shopUrl = $baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
        $failUrl = $this->generateUrl('cmi_pay_okFail', [], UrlGeneratorInterface::ABSOLUTE_URL);
        $callbackUrl = $this->generateUrl('cmi_pay_callback', [], UrlGeneratorInterface::ABSOLUTE_URL);
        $rnd = microtime();
	//Sample Order Data:
        $params->setGatewayurl('https://....')// Provided by CMI
            ->setclientid('600000000')// Provided by CMI
            ->setTel('05000000')
            ->setEmail('email@domaine.ma')
            ->setBillToName('BillToName')
            ->setBillToCompany('BillToCompany')
            ->setBillToStreet1('BillToStreet1')
            ->setBillToStateProv('BillToStateProv')
            ->setBillToPostalCode('BillToPostalCode')
	//.................
        ;
	//.................        
    }
}

twig模板

// src/Resources/views/payrequest.html.twig
{% extends 'base.html.twig' %}

{% block title %}Hello {% endblock %}

{% block body %}

    <form name="payForm"  id="payForm" method="post" action="{{url}}">
        {% for name, value in data %}
            <input type="hidden" name="{{ name }}" value="{{ value }}" />
        {% endfor %}
    </form>

{% endblock %}
............

回调

在默认路由中配置

// src/Resources/config/routes.xml
	<route id="cmi_pay_callback" controller="cmi.pay.controller::callback" path="/cmi/callback" />

并一个控制器操作:回调

namespace CmiPayBundle\Controller;

......

class CmiPayController extends AbstractController
{
..........
    public function callback(Request $request)
    {
        .......
    }
}

twig模板

// src/Resources/views/callback.html.twig
{{response}} 

OK / FAIL URL

在默认路由中配置

// src/Resources/config/routes.xml
	<route id="cmi_pay_okFail" controller="cmi.pay.controller::okFail" path="/cmi/okFail" />

并一个控制器操作:okFail

namespace CmiPayBundle\Controller;

......

class CmiPayController extends AbstractController
{
..........
    public function okFail(Request $request)
    {
        ........
    }
}

twig模板

// src/Resources/views/okFail.html.twig
{{response}}

计算哈希值

控制器操作:hashValue

namespace CmiPayBundle\Controller;

......

class CmiPayController extends AbstractController
{
..........
   public function hashValue($data)
    {
        $params = new CmiPay();
        $params->setSecretKey('TEST1234');//Secret key generated from CMI Backoffice
        ..........        
        return $hash;
    }
}