質問

クレジット カードの支払いトランザクションで問題が発生しています。原因は quote_id であると確信しています。問題は、自分が正しいか間違っているかを確認するために、quote_id を手動で増やす方法がわからないことです。

役に立ちましたか?

解決 2

まず第一に、私が抱えていた問題は「ABORTED」という答えを得ることでした。その理由は、1つのフィールドが常に同じ値で送信され、その値がorderidであったためです(注文IDがまだ送信されていないため、実際にはquote_idです)その時点で作成されます)、データベース内の一意のフィールドであるため、これは禁止されています。Magento は、現在のトランザクションが完了するまで (または、別のセッションが作成されるときはまだわかりませんが)、あるユーザーに対して新しい見積もりを作成することはありません。そのユーザーに対して、quote_id が同じ値で (orderid として) 何度も送信されます。繰り返し実行されるため、すべてのトランザクションは中止されます。

ソリューション:クレジット カード ゲートウェイが文字列「APPROVED」で応答しない場合は、現在の見積もりを無効にするだけです。 sales_flat_quote 設定するだけ is_active 0 に設定すると、Magento はユーザーに新しい見積もりを提供します。問題は、ユーザーにとってカート内のすべてが失われることです (レコードはまだ存在しますが、ユーザーはアクセスできなくなります)。そのため、Magento は見積を複製し、現在の見積を非アクティブにして両方を保存する必要があります。複製された見積は現在の見積になりますが、内容は異なります。 quote_id.

// get the current quote
$current_quote = Mage::getModel('sales/quote')->load(23);

// create a new one
$cloned_quote = Mage::getModel('sales/quote');

// copy the content of the current one into the new one
$cloned_quote->merge($current_quote);

// deactive the current quote
$current_quote->setIsActive(false);

// save the cloned quote
$cloned_quote->collectTotals()->save();

// and save the changes of the current quote
$current_quote->save();

// now the current save is inactive 
// and the cloned one is the "new" current quote

解決策はここから取られました ある見積(カート項目のみ)を別の見積(項目のみ)にコピーする方法

最後のステップ (または最初のステップ) は、 quote_id 手動で、なぜですか?クレジット カード ゲートウェイにはすでに多くの注文 ID がこの e ショップに登録されており、正確には 149 個です (ちなみに Magento 1.7 を使用)。ほぼすべてを Magento 1.9 に移行しましたが、新しいデータベースでは引用符がゼロに設定されていたため、生成された最初の引用符は CC ゲートウェイから拒否されます。これが解決策です:

ALTER TABLE sales_flat_quote AUTO_INCREMENT = 149;

基本的に、これが私の問題の解決策を要約したものです。これが他の人にとって役立つことを願っています。

他のヒント

最初の

テーブルのquote_idであるため、auto incrementprimary keyを手動で行うことはできません。

SO QUOTEが作成されると、quote_idは自動増分であるため自動的に作成され、sqlルールに従って一意の一意である必要があります。

あなたの問題に

credit card paymentに問題がある場合は、paymentセクションでデバッグする必要があります。支払いシステムに外部拡張子を使用している場合は、それらに連絡してください。あるいは、Magentoはデフォルトですべての支払いをエラーなしで処理します。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top