为了账号安全,请及时绑定邮箱和手机立即绑定

自定义支付方式的 PostProcessPayment 不重定向到支付网关 URL

自定义支付方式的 PostProcessPayment 不重定向到支付网关 URL

C#
千巷猫影 2022-12-24 14:20:58
我正在为 Nopcommerce 网站开发自定义支付方式插件。这是支付处理器类代码: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正确形成。但是页面没有重定向到url在CONFIRM结帐页面上单击按钮的时间。它只是停留在页面上或有时会清空购物车。这意味着正在创建订单而不去支付网关。
查看完整描述

4 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

重定向必须是操作结果。例如在控制器的动作中我们这样写:

return Redirect("http://www.google.com");

没有return关键字,它不会重定向。

要从插件的控制器重定向,请检查开箱即用的PayPalStandard插件的\Plugins\Nop.Plugin.Payments.PayPalStandard\Controllers\PaymentPayPalStandardController.cs类中的类似实现


查看完整回答
反对 回复 2022-12-24
?
撒科打诨

TA贡献1934条经验 获得超2个赞

如果您正在尝试开发插件,最好不要更改 nopCommerce 源代码。ConfirmOrder您可以在插件本身中执行重定向,不要更改CheckoutController. 将您的代码更改为:


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");

}


查看完整回答
反对 回复 2022-12-24
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

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



查看完整回答
反对 回复 2022-12-24
?
大话西游666

TA贡献1817条经验 获得超14个赞

将 PaymentMethodType 更改为 PaymentMethodType.Redirection 它会起作用



查看完整回答
反对 回复 2022-12-24
  • 4 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信