2

私は多くの投稿を見てきましたが、私の質問に対する解決策はどこにも見つかりませんでした。新しい支払いゲートウェイを Sylius Payum Bundle に適切に追加する方法を説明している場所がインターネット上に 1 つもありません。

最新sylius 0.10.*バージョンを使用していますが、新しい支払いゲートウェイ (Rabobank Omnikassa、オランダの支払いエンドポイント) を追加したいと考えています。

に を追加する方法についての情報がありPaymentFactoryますPayumPayumBundleが、このバンドルのフォルダー構造はSyliusPayumBundle. Acme\Bundle\PayumBundleからオーバーライドする独自のものを作成しましたSyliusPayumBundle

PaypalExpressCheckoutPaymentFactoryと同様の方法で設定したいと思います。

config/payum.yml

ここでは、Sylius に自分のものを見つけてもらうために、いくつかのことをテストしています。

payum:
    contexts:
        rabobank:
            storages:
                Sylius\Component\Core\Model\Order:
                    doctrine:
                        driver: orm
                Sylius\Component\Core\Model\Payment:
                    doctrine:
                        driver: orm

            custom:
                actions:
                    - Shopfish\Bundle\PayumBundle\Payum\Rabobank\Action\CapturePaymentAction
                    - Shopfish\Bundle\PayumBundle\Payum\Rabobank\Action\NotifyOrderAction

config/services.xml

どこでどのサービスタグを使用すればよいかわかりません..

<parameters>
    <parameter key="shopfish.payum.rabobank.action.capture_payment.class">Shopfish\Bundle\PayumBundle\Payum\Rabobank\Action\CapturePaymentAction</parameter>
    <parameter key="shopfish.payum.rabobank.action.notify_order.class">Shopfish\Bundle\PayumBundle\Payum\Rabobank\Action\NotifyOrderAction</parameter>
    <parameter key="shopfish.payum.rabobank.action.payment_status.class">Shopfish\Bundle\PayumBundle\Payum\Rabobank\Action\PaymentStatusAction</parameter>
</parameters>

<services>
    <!-- Rabobank Omnikassa -->
    <service id="shopfish.payum.rabobank.action.capture_payment" class="%shopfish.payum.rabobank.action.capture_payment.class%" public="false">
        <tag name="payum.action" factory="omnipay" />
    </service>

    <service id="shopfish.payum.rabobank.action.notify_order" class="%shopfish.payum.rabobank.action.notify_order.class%" public="false">
        <argument type="service" id="event_dispatcher" />
        <argument type="service" id="sylius.manager.payment" />
        <argument type="service" id="finite.factory" />

        <tag name="payum.action" factory="paypal_express_checkout_nvp" />
    </service>
</services>

config/config.yml

もちろん、ゲートウェイをconfig.ymlファイルに登録しています

sylius_payment:
    gateways:
        rabobank: Rabobank Omnikassa

例外: パスの構成が無効です

Rabobank有効な型として認識されていないようです。新しいタイプはどこに登録しますか?

InvalidConfigurationException: Invalid configuration for path "payum.contexts.rabobank.omnipay": Given type Rabobank is not supported. These types AuthorizeNet_AIM, AuthorizeNet_SIM, Buckaroo, CardSave, Dummy, Eway_Rapid, GoCardless, Manual, Migs_ThreeParty, Migs_TwoParty, Mollie, MultiSafepay, Netaxept, NetBanx, PayFast, Payflow_Pro, PaymentExpress_PxPay, PaymentExpress_PxPost, PayPal_Express, PayPal_Pro, Pin, SagePay_Direct, SagePay_Server, SecurePay_DirectPost, Stripe, TargetPay_Directebanking, TargetPay_Ideal, TargetPay_Mrcash, TwoCheckout, WorldPay are supported.

支払いファクトリーの登録

このファイルでは、Payum に工場を登録する方法を確認できます。自分のバンドル内から Sylius で同じことをしたいと思います。

ここから取るべき良いステップは何ですか?

4

1 に答える 1

3

カスタム支払いソリューションを Payum\Sylius に追加するには、2 つの方法があります。

  • 最も速いのは、カスタム ファクトリを使用することです。それはあなたがしたことですが、actionsクラスではなくセクションにサービスを追加する必要があります。このタグは、 のpayum.actionようにこのアプローチで使用できます<tag name="payum.action" context="rabobank" />customこの場合、カスタム ファクトリによって作成されたすべてのコンテキストにアクションが追加されるため、タグでfactory を使用しませんでした。それは私たちが望むものではありません。

  • 2 番目の方法は、支払いファクトリーを作成することです。そのためにはPaymentFactoryInterface、Payum 拡張機能を実装して登録する必要があります。支払いを作成する前にいくつかのオプションを構成する必要がある場合は、これを選択する必要があります。タグは、や payum.actionのようにこのアプローチで使用できます。違いは次のとおりです。最初のタグは 1 つのコンテキストにのみアクションを追加し、2 番目のタグはファクトリによって作成されたすべてのコンテキストにアクションを追加します。<tag name="payum.action" context="rabobank" /><tag name="payum.action" factory="rabobank" />

いくつかの一般的な提案:

PayumBundle に PaymentFactory を追加する方法に関する情報がありますが、このバンドルのフォルダー構造は SyliusPayumBundle とはまったく異なります。

そうであってはなりません。SyliusPayumBundle は、Sylius と PayumBundle の間の薄い統合レイヤーです。

SyliusPayumBundle をオーバーライドする独自の Acme\Bundle\PayumBundle を作成しました。

あなたはそれをする必要はありません.これがなくてもすべてうまくいくはずです.

どこでどのサービスタグを使用すればよいかわかりません..

タグが不要なカスタム ファクトリを選択した場合は、actionsセクションを正しく構成します。

InvalidConfigurationException: パス "payum.contexts.rabobank.omnipay" の構成が無効です:

正しい設定を投稿したと確信していますか? あなたが投稿したものでは、この例外を取得できないと思います。メッセージが異なる別の例外が予想されます。

もちろん、ゲートウェイをconfig.ymlファイルに登録しています

また、テーブルにいくつかのデータを配置する必要がありますpayment_gateway(テーブル名を正しく思い出せば)。

このファイルでは、Payum に工場を登録する方法を確認できます。自分のバンドル内から Sylius で同じことをしたいと思います。

バンドルのビルド メソッドで同じことを行うだけです。

于 2014-06-02T14:12:18.103 に答える