首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Nopcommerce -自定义支付方式的PostProcessPayment未重定向到支付网关URL

Nopcommerce -自定义支付方式的PostProcessPayment未重定向到支付网关URL
EN

Stack Overflow用户
提问于 2019-04-23 00:34:44
回答 3查看 373关注 0票数 0

我正在开发一个没有商业网站的自定义支付方法插件。以下是付款处理程序分类代码:

public class CODBookingPaymentProcessor : BasePlugin, IPaymentMethod
{
    private IShoppingCartService _shoppingCartService;
    private IOrderService _orderService;
    private IHttpContextAccessor _httpContextAccessor;

    #region Ctor
    public CODBookingPaymentProcessor(IShoppingCartService shoppingCartService,
        IOrderService orderService, IHttpContextAccessor httpContextAccessor)
    {
        this._shoppingCartService = shoppingCartService;
        this._orderService = orderService;
        this._httpContextAccessor = httpContextAccessor;
    }
    #endregion

    ~~~~~~~~~~~~~~~~ SOME CODE ~~~~~~~~~~~~~~~~~~~~~
public void PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
    {
          // some code
          string url = protocol + host + "/" + "PaymentCODBooking/ProcessInternetPayment";

        _httpContextAccessor.HttpContext.Response.Redirect(url);
    }

断点出现在最后一行,url格式正确。但是当在Checkout页面上单击CONFIRM按钮时,页面不会重定向到url。它只是停留在页面上,或者有时清空购物车。这意味着正在创建订单,而不是去支付网关。

更新

重定向在CheckoutControllerConfirmOrder操作中也不起作用。

if (_webHelper.IsRequestBeingRedirected || _webHelper.IsPostBeingDone)
{
    //redirection or POST has been done in PostProcessPayment
    //return Content("Redirected");

    return Redirect("http://localhost:15536/PaymentCODBooking/ProcessInternetPayment");
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-28 13:37:37

谢谢大家的帮助。你的回答给了我一些提示,并找到了问题所在。问题是我忘了设置public PaymentMethodType PaymentMethodType => PaymentMethodType.Redirection;。它被设置为Standard,导致了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2019-04-23 17:55:20

如果你正在尝试开发一个插件,最好不要修改nopCommerce的源代码。您可以在插件本身中执行重定向,不要更改CheckoutControllerConfirmOrder操作。将您的代码更改为:

public void PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
{
      // some code
      string url = protocol + host + "/" + "PaymentCODBooking/ProcessInternetPayment";

    _httpContextAccessor.HttpContext.Response.Redirect(url);
    return;
}

您可以在ConfirmOrder操作中找到这些行。在PostProcessPayment之后,应用程序将在此处变得丰富。重定向在以下位置执行:

if (_webHelper.IsRequestBeingRedirected || _webHelper.IsPostBeingDone)
{
    //redirection or POST has been done in PostProcessPayment
    return Content("Redirected");
}
票数 1
EN

Stack Overflow用户

发布于 2021-01-02 00:25:45

将PaymentMethodType更改为PaymentMethodType.Redirection,它将正常工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55797747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档