4

Payum 支払い方法を作成しました。支払いの詳細を保存する支払いフォームを設定し、支払いセキュリティ トークンを生成します。ここまでは問題ないようで、payum はストレージにトークンを生成します。

しかし、登録できないようです。アクションを追加する場所がわからないため、支払い方法が読み込まれるときに使用されます。

次の質問があります。

  • PaymentFactory への参照はどこに追加すればよいですか? 現時点では、バンドル ビルド メソッドで payum 拡張機能をロードし、PayumFactory のインスタンスを拡張機能に追加します。これだけでいいですか?
  • キャプチャとステータス アクションを作成しました。これらのアクションを支払いゲートウェイのどこに追加すればよいですか? それらを PaymentFactory に登録しますか? 両方のクラスにダンプと終了を追加しました。ブラウザで支払いを実行すると、アクションにヒットせず、設定した時点で終了するようです。

どんな助けでもいただければ幸いです

前もって感謝します :)

4

1 に答える 1

3

支払いにアクションを追加するには、いくつかの方法があります。

  • 最も速いのは、カスタム ファクトリを使用することです。

    payum:
        contexts:
            you_name_it:
                custom:
                    actions:
                        - your.action.service.from.container
                        - your.another.action.service.from.container
    
  • 支払いファクトリーを作成します。これは高度な技術であり、カスタム構成が必要な場合に役立ちます。そのためには、Payum 拡張機能PaymentFactoryInterfaceを実装して登録する必要があります。ファクトリにアクションを直接追加できます (symfony コンテナーをよく理解している必要があります)。

    <?php
    
    function create(ContainerBuilder $container, $contextName, array $config)
    {
        $paymentDefinition = new Definition;
        $paymentId = 'paymentId';
    
        $container->setDefinition($paymentId, $paymentDefinition);
    
        $paymentDefinition->addMethodCall('addAction', array(
            new Reference('your.action.service.from.container')
        ));
    }
    

    または、アクションを含む xml ファイルをロードできます。アクション サービスにはタグが必要payum.actionです。タグには がfactory定義されている必要があります。作成したファクトリの名前と一致する必要があります。例: paypal_express_checkout_nvp.xml

    <service
        id="your.action.service.from.container"
        class="%your.action.service.from.container.class%"
        public="false"
    >
        <tag name="payum.action" factory="your_factory_name" />
    </service>
    
于 2014-06-02T14:41:02.080 に答える