Magento 2在发送到付款网关之前下订单?

时间:2017-03-23 23:53:38

标签: redirect payment magento2

我正在开发一个付款网关,付款将通过将浏览器重定向到银行网站完成,付款将在那里完成,成功后它将被重定向回网站

我可以成功使用付款渲染器中的JavaScript代码重定向,但问题是订单未在重定向之前放置到银行

如何在将用户发送到银行之前下订单并获取 Order_ID

以下是我的js Code,它将用户重定向到处理重定向的特定控制器

        continueToMellat: function () {

                //update payment method information if additional data was changed

                $.mage.redirect(url.build('redirect/redirect'));
                this.selectPaymentMethod();
                setPaymentMethodAction(this.messageContainer);
                return false;

        }

由于

2 个答案:

答案 0 :(得分:0)

我可以在重定向之前通过将代码更改为以下内容来下订单,这将在发送到支付网关之前下订单 我现在正在尝试获取用户刚刚订购的订单ID

continueToMellat: function () {


                if (this.validate() && additionalValidators.validate()) {
                this.isPlaceOrderActionAllowed(false);

                this.getPlaceOrderDeferredObject()
                    .fail(
                        function () {
                            self.isPlaceOrderActionAllowed(true);
                        }
                    ).done(
                        function () {
                            self.afterPlaceOrder();

                            if (self.redirectAfterPlaceOrder) {
                                redirectOnSuccessAction.execute();
                            }
                        }
                    );
            }
                //update payment method information if additional data was changed

                $.mage.redirect(url.build('redirect/redirect'));
                this.selectPaymentMethod();
                setPaymentMethodAction(this.messageContainer);
                return false;

        }

答案 1 :(得分:0)

您也许可以使用购物车ID:像

中使用的那样:getQuoteId()
//vendor/magento/module-checkout/view/frontend/web/js/action/get-payment-information.js


define([
'jquery',
'Magento_Checkout/js/model/quote',
...
], function ($, quote, ...) {
'use strict';

return function (deferred, messageContainer) {
    var serviceUrl;

    deferred = deferred || $.Deferred();

    /**
     * Checkout for guest and registered customer.
     */
    if (!customer.isLoggedIn()) {
        serviceUrl = urlBuilder.createUrl('/guest-carts/:cartId/payment-information', {
            cartId: quote.getQuoteId()
        });
    }

尽管可以在传递给客户端处理之前在服务器中保留订单增量ID:

__construct(\Magento\Checkout\Model\Session $checkoutSession){
    $this->quote = $checkoutSession->getQuote();
}

...

$this->quote->reserveOrderId();
$orderId = $this->quote->getReservedOrderId();