【问题标题】:JMS custom payment plugin - Symfony2JMS 自定义支付插件 - Symfony2
【发布时间】:2013-10-11 10:18:22
【问题描述】:

我正在尝试为 Symfony2 使用 JMS 支付包创建自定义支付方式。 我已经很好地设置了贝宝捆绑包 - 但是我想要通过银行转帐支付的第二个选项。

下面是我的代码 - 但这没有显示新的付款选项。

表单类:

namespace JMS\Payment\BanktransferBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class BanktransferType extends AbstractType {

public function buildForm(FormBuilderInterface $builder, array $options) {

    $builder
            ->add('holder', 'text', array('required' => false))
            ->add('number', 'text', array('required' => false))
            ->add('expires', 'date', array('required' => false))
            ->add('code', 'text', array('required' => false))
    ;
}

public function getName() {
    return 'credit_card';
}

}

插件类:

namespace JMS\Payment\BanktransferBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class BanktransferType extends AbstractType {

public function buildForm(FormBuilderInterface $builder, array $options) {

    $builder
            ->add('holder', 'text', array('required' => false))
            ->add('number', 'text', array('required' => false))
            ->add('expires', 'date', array('required' => false))
            ->add('code', 'text', array('required' => false))
    ;
}

public function getName() {
    return 'credit_card';
}

}

Services.yml

services:
payment.plugin.banktransfer:
    class: JMS\Payment\BanktransferBundle\Plugin\BanktransferPlugin
    tags: [{name: payment.plugin}]

credit_card_type:
    class: JMS\Payment\BanktransferBundle\Form\BanktransferType
    tags:
        - { name: form.type, alias: credit_card }
        - { name: payment.method_type }

我需要做什么才能让 JMS 支付包找到我的插件?

【问题讨论】:

    标签: php symfony jms


    【解决方案1】:

    好的。我似乎通过使用 XML 而不是 YML 来显示它。

    Services.xml

    <?xml version="1.0" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema  /dic/services/services-1.0.xsd">
    
    <parameters>
        <parameter key="payment.plugin.cash_checkout.class">JMS\Payment\CashBundle\Plugin\CashPlugin</parameter>
        <parameter key="payment.form.cash_checkout_type.class">JMS\Payment\CashBundle\Form\CashType</parameter>
    </parameters>
    
    <services>
        <service id="payment.form.cash_checkout_type" class="%payment.form.cash_checkout_type.class%">
            <tag name="payment.method_form_type" />
            <tag name="form.type" alias="cash_checkout" />
        </service>
    </services>
    </container>
    

    【讨论】:

      【解决方案2】:

      你能告诉我们真正的插件类吗?我认为您发布了错误的内容。 我遇到了同样的问题,我按照基于 JMS documentation 的说明进行操作。

      我的插件类(最小):

          <?php
          //...
      
          use \JMS\Payment\CoreBundle\Plugin\AbstractPlugin;
      
          class DebitPlugin extends AbstractPlugin {
              public function processes($name) {
              return 'debit' === $name;
            }
          }
      

      您必须在控制器中添加名称,具体取决于您的插件(在我的情况下为“借方”)。

         <?php
         //...
         $form = $this->getFormFactory()->create('debit', null, array());
         //...
      

      希望有帮助!

      【讨论】:

        猜你喜欢
        • 2015-06-14
        • 1970-01-01
        • 2022-12-25
        • 2014-03-31
        • 2017-03-02
        • 2011-09-08
        • 2017-08-05
        • 2014-06-06
        • 2017-04-02
        相关资源
        最近更新 更多