【问题标题】:Stripe Checkout Redirection Only Works SometimesStripe Checkout 重定向仅在某些时候有效
【发布时间】:2020-09-14 05:00:15
【问题描述】:

我正在使用 ASP.NET Core 和 Stripe Checkout 创建一个网上商店。

但是,重定向到 Stripe Checkout有时会起作用

我正在尝试重定向到 window.onload 上的 Stripe Checkout,并且我还实现了一个锚标记,该标记指向用户可以单击的相同功能,以防不发生重定向。但是,当重定向在 window.onload 上不起作用时,锚标记重定向也不起作用。

我尝试将 console.log 放入 redirectToCheckout() 并且可以确认该函数在 window.onload 和单击锚标记上都被触发。但遗憾的是,大部分时间都不会重定向到 Stripe Checkout。奇怪的是它有时会起作用。

剃刀页面:

@page
@model {MODEL_PATH}
@{
    ViewData["Title"] = "Payment";
}
@section Header{
    <partial name="_ShopHeader" />
}
<div class="container">

    <!-- Some HTML -->

    <div class="row mt-2 justify-content-center">
        <div class="col-lg-8 col-11">
            <div class="bg-white">
                <div class="m-0 p-3">
                    <h5 style="color:blue;">Redirecting to Stripe Checkout</h5>
                        <div class="row justify-content-center">
                            <div class="col-12 text-center">
                                <div class="spinner-border mt-3" role="status">
                                </div>
                                <p class="mt-4">If nothing happens, click <a href="#" onclick="redirectToCheckout()">here</a></p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

@section Styles {
    <link rel="stylesheet" href="@Url.Content("~/css/custom-index.css")" type="text/css" />
    <link rel="stylesheet" href="@Url.Content("~/css/custom-shop.css")" type="text/css" />
}

@section Scripts {
    <script src="https://js.stripe.com/v3/"></script>
    <script>
        var stripe = Stripe('{MY_STRIPE_PUBLISHABLE_KEY}');
        var stripeSessionId = '@Model.CheckoutSessionId';

        window.onload = redirectToCheckout();

        function redirectToCheckout() {
            stripe.redirectToCheckout({
                sessionId: stripeSessionId,
            }).then(function (result) {
                console.log(result.error.message);
            });
        };
    </script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script src="~/js/Shop/cart.js"></script>
}

代码隐藏:

public class PaymentModel : PageModel
{
    private readonly AppDbContext _context;

    public PaymentModel(AppDbContext context)
    {
        _context = context;
    }

    public string CheckoutSessionId { get; set; }

    public IActionResult OnGet()
    {
        CartViewModel cart = new CartManager(_context, HttpContext.Session).GetCart();
        CustomerViewModel customer = new CustomerManager(HttpContext.Session).GetCustomer();

        string orderReference = DateTime.Now.ToOADate().ToString().Replace(",", string.Empty);

        Customer stripeCustomer = new StripeCustomerManager().CreateStripeCustomer(customer);
        Session stripeSession = new StripeSessionManager().CreateStripeSession(cart, stripeCustomer, orderReference);

        CheckoutSessionId = stripeSession.Id;

        return Page();
    }
}

【问题讨论】:

    标签: c# asp.net asp.net-core stripe-payments


    【解决方案1】:

    通过在 Visual Studio 中启动解决方案而不进行调试,每次都会重定向到 Stripe Checkout。

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      相关资源
      最近更新 更多