1.9.0.1 CEはプログラムで承認してからキャプチャする
承認して、いくつかのサードパーティAPI呼び出しを行う必要があります。それらの呼び出しから何が返されるかに基づいて、承認を取得またはキャンセルします。 現在、authorize.netのみを使用していますが、できるだけ多くの支払いゲートウェイでこれを使用できるようにしたいと考えています。authorize.netをAuthorize Onlyに設定しました。私のオブザーバーはsales_order_payment_place_endイベントを実行します。 これが私のオブザーバーでやっていることです(まだ抽象化されていませんが、まだ概念実証が必要です)。 if(/*API calls return ok*/) { $observer->getPayment()->getMethod_instance()->capture($observer->getPayment(),$observer->getPayment()->getAmount()); } else { Mage::dispatchEvent('Mainstreethost_MicrosOrder_Failure'); $observer->getPayment()->getMethod_instance()->cancel($observer->getPayment()); } capture()を呼び出すと、支払いが事前承認されたかどうかが確認されます。これは、私たちが達成しようとしていることです。 public function capture(Varien_Object $payment, $amount) { if ($amount <= 0) { Mage::throwException(Mage::helper('paygate')->__('Invalid amount for capture.')); } $this->_initCardsStorage($payment); if ($this->_isPreauthorizeCapture($payment)) { $this->_preauthorizeCapture($payment, $amount); } else if ($this->isPartialAuthorization($payment)) { $this->_partialAuthorization($payment, $amount, self::REQUEST_TYPE_AUTH_CAPTURE); } else { …