PayPal IPNモデルと状態の変更を自動的に注文します
-
22-10-2019 - |
質問
まず第一に、私は行動的な機能について説明します:
- 顧客はPayPal経由でショップで購入します
- ショップオペレーターは外部ソフトウェア(WAWI; ENで知らない)から注文を呼び出し、ソフトウェアは注文状態を設定して完了するように設定します
- ショップオペレーターは、顧客から売り手アカウントに基づいて、PayPalでお金を集めます
- その後、PayPalはしばらくして自動IPNリクエストをMagentoに返送し、注文を保留中に戻します
問題は、PayPal(またはIPNモデル)が状態から状態が終了して保留中に設定するのを防ぐことです。
私たちはすでにクラスにいくつかの変更を行いました:mage_paypal_model_ipn in mage/paypal/model/ipn.php。私の意見では、_registerpaymentcapture()に責任あるコードがあります。編集は次のとおりです(編集でマークされています):
if ($this->getRequestData('transaction_entity') == 'auth') {
return;
}
$this->_importPaymentInformation();
$payment = $this->_order->getPayment();
/* Edit: check if order state is complete */
$orderStateComplete = (Mage_Sales_Model_Order::STATE_COMPLETE == $this->_order->getState());
$orderStatusBefore = $this->_order->getStatus();
$payment->setTransactionId($this->getRequestData('txn_id'))
->setPreparedMessage($this->_createIpnComment(''))
->setParentTransactionId($this->getRequestData('parent_txn_id'))
->setShouldCloseParentTransaction('Completed' === $this->getRequestData('auth_status'))
->setIsTransactionClosed(0)
->registerCaptureNotification($this->getRequestData('mc_gross'));
/* Edit: reset state and status, if order was already complete before */
if ($orderStateComplete) {
$this->_order->setState(Mage_Sales_Model_Order::STATE_COMPLETE)
->setStatus($orderStatusBefore);
}
$this->_order->save();
// notify customer
$invoice = $payment->getCreatedInvoice();
if ($invoice && !$this->_order->getEmailSent()) {
$this->_order->sendNewOrderEmail()->addStatusHistoryComment(
Mage::helper('paypal')->__('Notified customer about invoice #%s.', $invoice->getIncrementId())
)
->setIsCustomerNotified(true)
->save();
}
問題はまだそこにあり、順序状態の変更を防ぐためにファイルを編集する場所がわかりません。
GreetZ&Arstant Afruct
解決
私たちはそれを管理しました。問題は、Order Stateがステータスだけで設定しなかったERPソフトウェアが、条件が滅ぼなかったことでした。
所属していません magento.stackexchange