【问题标题】:Getting error with Stripe: No such payment_intent: 'my payment intent id'Stripe 出错:没有这样的 payment_intent: 'my payment intent id'
【发布时间】:2021-01-20 20:36:34
【问题描述】:

对不起,我对编码很陌生,所以我不知道很多缩写/速记的东西。 因此,我正在使用 React 和 C# 尝试使用 Stripe 来处理付款,我已经到了可以取回 payment_intent idclient_secret 和付款方式 ID 的地步,但是当我运行代码时:

const result = await stripe.confirmCardPayment(this.state.clientSecret, {
      payment_method: paymentMethodRQ.paymentMethod.id,
    });

我得到错误:

没有这样的支付意图。这是 /v1/payment_intent/confirm 的 404

我猜这意味着付款意图实际上并没有被创建,因为它也没有显示在 Stripe 仪表板上。不太确定如何解决这个问题。大多数其他类似的问题要么使用不同的语言,要么没有解决如何解决我的特定问题。我遵循了收款然后付款的文档,在https://stripe.com/docs/connect/collect-then-transfer-guide#setup

这是我提交的 React 代码:

handleSubmit = async (event) => {
    event.preventDefault();

    const { stripe, elements } = this.props;

    if (!stripe || !elements) {
      _logger("Stripe.js has not yet loaded.");
      // Make  sure to disable form submission until Stripe.js has loaded.
      return;
    }
    const paymentMethodRQ = await stripe.createPaymentMethod({
      type: "card",
      card: elements.getElement(CardElement),
    });

    const result = await stripe.confirmCardPayment(this.state.clientSecret, {
      payment_method: paymentMethodRQ.paymentMethod.id,
    });

    if (result.error) {
      toast.error("payment not processed");
      _logger(result.error.message, "payment not processed");
    } else {
      toast.success("The payment processing!");
      if (result.paymentIntent.status === "succeeded") {
        _logger("payument successful");
        // havent gotten to this part yet
      }
    }
  };

我从 React 传递了 PaymentIntentCreateOptions 的金额和货币。 这是我在 Visual Studio 中的付款意图控制器:

[HttpPost("paymentintent")]
        public async Task<IActionResult> PaymentIntent(PaymentIntentCreateOptions options)
        {
            StripeConfiguration.ApiKey = "my test secret key";

            ItemResponse<PaymentIntentModel> response = new ItemResponse<PaymentIntentModel>();
            var service = new PaymentIntentService();
            var paymentIntent = service.Create(options);

            Logger.LogInformation(paymentIntent.ToString());

            var paymentIntentModel = new PaymentIntentModel();
            paymentIntentModel.Id = paymentIntent.Id;
            paymentIntentModel.ClientSecretKey = paymentIntent.ClientSecret;
            response.Item = paymentIntentModel;

            return Ok200(response);
        }

【问题讨论】:

  • "No such..." 错误通常是由于 API 密钥不匹配(例如使用测试和实时密钥的混合)或尝试访问存在于不同帐户上的对象引起的.我会仔细检查您的密钥和可发布密钥是否用于同一帐户。
  • @PaulAsjes 哇,我一定是在某个时候创建​​了一个不同的帐户,因为复制我的密钥并重新粘贴它们实际上解决了它。谢谢!

标签: c# reactjs stripe-payments http-status-code-404


【解决方案1】:

您必须确保您在前端声明的公钥与您在条带帐户中的公钥匹配,否则您将收到此错误。

【讨论】:

  • 是的,其他人也提到过一段时间,我应该关闭这个问题哈哈。感谢您的回复!
猜你喜欢
  • 2019-12-28
  • 2021-06-09
  • 2020-10-05
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
  • 2021-06-17
  • 2016-07-02
  • 2016-08-27
相关资源
最近更新 更多