したがって、horray - 私は新しいカスタムPayment Gatewayを作成しようとしています。サードパーティのAPIを使用して認証/取得を行うように設計されていますが、サードパーティのサイトにリダイレクトする必要はありません。Magentoカスタム支払いゲートウェイが「承認」または「キャプチャ」メソッドを起動しない
私が理解しているように、Magentoで注文が確定/ファイナライズされ、ゲートウェイが「Authorize and Capture」に設定されている場合、ゲートウェイモデルから「キャプチャ」メソッドを起動する必要があります。現在、これは行っていません。
もちろん、私が管理者オーダービューから具体的に取得すると、キャプチャが試みられますが、これはチェックアウト時に直ちに実行する必要があります。私のゲートウェイモデルで
、私が持っている、以下の(読みやすくするために切り捨て):
<?php
class Example_Gateway_Model_Payment extends Mage_Payment_Model_Method_Cc
{
protected $_code = 'example';
protected $_isGateway = true;
protected $_canAuthorize = true;
protected $_canCapture = true;
protected $_canUseInternal = true;
protected $_canUseCheckout = true;
// This is an empty block class that extends Mage_Payment_Block_Form_Cc
protected $_formBlockType = 'example/form_example';
public function authorize(Varien_Object $payment, $amount)
{
Mage::log('Authorizing!');
}
public function capture(Varien_Object $payment, $amount)
{
Mage::log('** Capturing **');
// Third-party API stuff would go here, with exceptions being thrown if the gateway determines they've provided an invalid card, etc.
}
public function assignData($data)
{
Mage::log('Assigning Data');
}
}
この支払モデル自体は間違いなく動作します - 私はそれを追加した場合、私は同様__construct()
として、assignData()
とvalidate()
のためのログ出力を取得。しかし、私が何をするにしても、実際に注文をするときには、キャプチャメソッドや権限メソッドは起動しません。私は、追加のテーブルを必要としないとしてリソース・モデルの必要性があると信じていません
<?xml version="1.0"?>
<config>
<modules>
<Example_Gateway>
<version>0.0.5</version>
</Example_Gateway>
</modules>
<global>
<blocks>
<gateway>
<class>Example_Gateway_Block</class>
</gateway>
</blocks>
<models>
<gateway>
<class>Example_Gateway_Model</class>
</gateway>
</models>
<helpers>
<gateway>
<class>Example_Gateway_Helper</class>
</gateway>
</helpers>
</global>
<frontend>
<!-- Snip.. Nothing special here -->
</frontend>
<default>
<payment>
<gateway>
<sort_order>0</sort_order>
<model>gateway/payment</model>
<enabled>1</enabled>
<order_staus>processing</order_status>
<payment_action>authorize_capture</payment_action>
<cctypes>VI,MC,AE,DI</cctypes>
<useccv>1</useccv>
</gateway>
</payment>
</default>
</config>
;:
私のconfig.xmlには、多少のように読み込みます私は、単にsales_flat_order_payment
とそれに関連するテーブルを使用して、ゲートウェイ関連の/提供データ(txn idなど)を格納することを期待しています。
同様に、デフォルトのCCブロックを拡張して標準支払いフォームを取得します。
私には何が欠けていますか?それは私が見落としているような小さくてシンプルなものでなければなりません。
ありがとうございます!
UPDATE: はこれまでのところ、私は手動でキャプチャ()メソッドを呼び出しますcheckout_type_onepage_save_orderイベントにオブザーバーを使用し、回避策を実装している - しかし、私は、これは正しい方法ではないかなり確信しています行く。
Magentoが自動的にcapture()
を呼び出すべきであると私は間違っていません。ゲートウェイがauthorize_captureに設定されていれば、最初の注文時に保存されます。
他の支払いゲートウェイに対して 'authorize()'や 'capture()'が呼び出されているかどうか、またいつログを記録することができますか? – nachito
あなたの 'config.xml'の中でヘルパークラスを' Example_Gateway_Model'から 'Example_Gateway_Helper'に変更しようとしましたか?また、 'system.xml'はどのように見えますか、サードパーティのチェックアウトモジュールがインストールされていますか? Magentoのバージョンも同様に役立つかもしれません。 – B00MER
@ B00MER - 申し訳ありませんが、それはタイプミスでした。それは私の実際のコードでは適切に 'ヘルパー'です。これはエンタープライズ1.11インスタンスです。サードパーティのチェックアウトモジュールはインストールされていません。私はsystem.xmlを投稿しますが、それが何かにあまりにも多くの光を当てるとは想像できません。 – Morgon