2

私は magento で開発された電子商取引サイトを持っており、支払い方法としてペイパルを使用しています。ユーザーがカートに「ドレス」という商品の 2 つのアイテムを追加し、チェックアウト ページに移動して [注文] ボタンをクリックすると、ユーザーは支払いのためにペイパル サイトにリダイレクトされます。しかし、支払いを断念してペイパルページを離れてしまうユーザーもいます。

注文をクリックすると、magento はバックエンドで注文を生成し、そのステータスを保留中のままにします。paypal の支払いが完了し、ユーザーがサイトにリダイレクトされると、支払いが完了したため、その注文のステータスが [処理中] に更新されます。しかし、ユーザーが支払いをせずにpyapal支払いページから離れた場合、私の製品在庫が減少し、ジャンク注文をキャンセルするまで他のユーザーは注文できません.

このプロセスを自動化する方法はありますか? ユーザーがペイパルで支払いをしない場合、在庫/在庫は通常に戻りますか?

助けてください、ありがとう!

4

2 に答える 2

3

これは、過去数か月から使用している cron です。このコードは、7 分を超えて 30 分経過した未決注文をチェックし、それらをキャンセルします。私にとって、これはインベントリを復元します。

       public function cancelPending()
        {


        $orderCollection = Mage::getResourceModel('sales/order_collection');
        $orderCollection
            ->addFieldToFilter('status', 'pending')
            ->addFieldToFilter('created_at', array('lt' =>  new Zend_Db_Expr("DATE_ADD('".now()."', INTERVAL -'0:07' HOUR_MINUTE)"),
                                            'gt' => new Zend_Db_Expr("DATE_ADD('".now()."', INTERAL -'0:30' HOUR_MINUTE)")));

        foreach($orderCollection->getItems() as $order)
        {
            $orderModel = Mage::getModel('sales/order');
            $orderModel->load($order['entity_id']);

            if(!$orderModel->canCancel())
                continue;

            $orderModel->cancel();
            $orderModel->setStatus('canceled');
            $orderModel->save();

}

支払い保留中の注文のデフォルトのステータスは「保留中」です。それを変更する必要があるかもしれません。

于 2012-07-27T10:24:33.333 に答える
1

magento cronジョブを設定する必要があると思います。このジョブは、保留状態の注文を20分以上取得し、それらを元に戻して、在庫を再び有効にします。

グーグルしようとしましたが、何も見つかりませんでした。このようなものが存在すると確信しています

「cron」は、UNIXシステムで定期的に(たとえば、10分ごとに)スケジュールを設定する方法です。Magentoはこの用語を継承しています。詳細については、http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_jobを参照してください。

したがって、アルゴリズム計画:

  • 10分ごと
    • 保留状態にあり、(current_time -20分)より古い注文を確認します
    • これらの注文を自動的に元に戻す

(たぶん、10分以上前に注文した人にメールを送ることができますね。支払いませんか?)

于 2012-07-27T10:07:25.727 に答える