Why does my custom payment module wrongly redirect a customer to the cart page (instead of the success page) on a successfull payment?

I make module custom payment
and my module have been redirect to payment gateway
but when payment gateway redirect to response page and reponse page redirect to success page
magento redirect again to cart page
I have been debug
my response get invalid from session model checkout
here my code

web-method.js:
    define(
        [
            'Magento_Checkout/js/view/payment/default',
            'jquery',
            'Magento_Checkout/js/model/quote',
            'Magento_Checkout/js/model/url-builder',
            'mage/storage',
            'Magento_Checkout/js/model/error-processor',
            'Magento_Customer/js/model/customer',
            'Magento_Checkout/js/model/full-screen-loader',
            'web/js/action/set-payment-method',
            'Magento_Checkout/js/model/payment/additional-validators',
            'mage/url'
        ],
        function (Component, $, quote, urlBuilder, storage, errorProcessor, customer, fullScreenLoader, setPaymentMethodAction, additionalValidators, url) {
            'use strict';

            return Component.extend({
                defaults: {
                    template: 'web/payment/web'
                },

                /** Redirect to Web */
                placeOrder: function () {
                    if (additionalValidators.validate()) {
                        //update payment method information if additional data was changed
                        this.selectPaymentMethod();
                        setPaymentMethodAction(this.messageContainer);
                        return false;
                    }
                }
            });
        }
    );

here my set-payment-method.js

    define(
        [
            'jquery',
            'Magento_Checkout/js/model/quote',
            'Magento_Checkout/js/model/url-builder',
            'mage/storage',
            'Magento_Checkout/js/model/error-processor',
            'Magento_Customer/js/model/customer',
            'Magento_Checkout/js/model/full-screen-loader'
        ],
        function ($, quote, urlBuilder, storage, errorProcessor, customer, fullScreenLoader) {
            'use strict';

            return function (messageContainer) {
                var serviceUrl,
                    payload,
                    paymentData = quote.paymentMethod();

                /**
                 * Checkout for guest and registered customer.
                 */
                if (!customer.isLoggedIn()) {
                    serviceUrl = urlBuilder.createUrl('/guest-carts/:cartId/selected-payment-method', {
                        cartId: quote.getQuoteId()
                    });
                    payload = {
                        cartId: quote.getQuoteId(),
                        method: paymentData
                    };
                } else {
                    serviceUrl = urlBuilder.createUrl('/carts/mine/selected-payment-method', {});
                    payload = {
                        cartId: quote.getQuoteId(),
                        method: paymentData
                    };
                }
                fullScreenLoader.startLoader();

                return storage.put(
                        serviceUrl, JSON.stringify(payload)
                    ).done(
                    function () {
                        $.mage.redirect('/web/payment/redirect');
                    }
                ).fail(
                    function (response) {
                        errorProcessor.process(response, messageContainer);
                        fullScreenLoader.stopLoader();
                    }
                );
            };
        }
    );

magento 2.1