【问题标题】:MERN Stack Development - StripeAuthenticationErrorMERN 堆栈开发 - StripeAuthenticationError
【发布时间】:2021-10-04 05:01:58
【问题描述】:

当我去结帐时,它给出了错误。发生以下错误。请有人帮忙。

错误: { "type": "StripeAuthenticationError", “生的”: { "message": "您没有提供 API 密钥。您需要在 Authorization 标头中提供您的 API 密钥,使用 Bearer 身份验证(例如 'Authorization: Bearer YOUR_SECRET_KEY')。有关详细信息,请参阅https://stripe.com/docs/api#authentication,或者我们可以在https://support.stripe.com/.", "type": "invalid_request_error", “标题”:{ “服务器”:“nginx”, “日期”:“格林威治标准时间 2021 年 10 月 4 日星期一 04:55:24”, “内容类型”:“应用程序/json”, “内容长度”:“343”, “连接”:“保持活动”, “访问控制允许凭据”:“真”, "access-control-allow-methods": "GET, POST, HEAD, OPTIONS, DELETE", “访问控制允许来源”:“”, "access-control-expose-headers": "Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required", “访问控制最大年龄”:“300”, “缓存控制”:“无缓存,无存储”, "www-authenticate": "基本领域="Stripe"", “严格传输安全”:“max-age=31556926;includeSubDomains;预加载” }, “状态代码”:401 }, "rawType": "invalid_request_error", “标题”:{ “服务器”:“nginx”, “日期”:“格林威治标准时间 2021 年 10 月 4 日星期一 04:55:24”, “内容类型”:“应用程序/json”, “内容长度”:“343”, “连接”:“保持活动”, “访问控制允许凭据”:“真”, "access-control-allow-methods": "GET, POST, HEAD, OPTIONS, DELETE", “访问控制允许来源”:“”, "access-control-expose-headers": "Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required", “访问控制最大年龄”:“300”, “缓存控制”:“无缓存,无存储”, "www-authenticate": "基本领域="Stripe"", “严格传输安全”:“max-age=31556926;includeSubDomains;预加载” }, “状态代码”:401 }

const Cart = () => {
  const cart = useSelector((state) => state.cart);
  const [stripeToken, setstripeToken] = useState(null);
  const history = useHistory();

  const onToken = (token) => {
    setstripeToken(token);
    console.log(token);
  };

  useEffect(() => {
    const makeRequest = async () => {
      try {
        const res = await userRequest.post("/checkout/payment", {
          tokenId: stripeToken.id,
          amount: cart.total,          
        });
        
        history.push("/success", { data: res.data });
      } catch (err) {
        console.log(err);
      }
    };
    stripeToken && makeRequest();
  }, [stripeToken, cart.total, history]);

  console.log(stripeToken);
  
  return (
    <Container>
      <Navbar />
      <Announcement />
      <Wrapper>
        <Title>YOUR BAG</Title>
        <Top>
          <TopButton>CONTINUE SHOPPING</TopButton>
          <TopTexts>
            <TopText></TopText>
            <TopText></TopText>
          </TopTexts>

          <TopButton type="filled">CHECKOUT NOW</TopButton>
        </Top>
        <Bottom>
          <Info>
            {cart.products.map((product) => (
              <Product>
                <ProductDetail>
                  <Image src={product.img} />
                  <Details>
                    <ProductName>
                      <b>Product: </b>
                      {product.title}
                    </ProductName>
                    <ProductId>
                      <b>ID: </b>
                      {product._id}
                    </ProductId>
                    <ProductColor color={product.color}></ProductColor>
                    <ProductSize>
                      <b>Size: </b>
                      {product.size}
                    </ProductSize>
                  </Details>
                </ProductDetail>
                <PriceDetail>
                  <ProductAmountContainer>
                    <Add />
                    <ProductAmount>{product.quantity}</ProductAmount>
                    <Remove />
                  </ProductAmountContainer>
                  <ProductPrice>
                    Rs.{product.price * product.quantity}
                  </ProductPrice>
                </PriceDetail>
              </Product>
            ))}
            <Hr />
          </Info>
          <Summary>
            <SummaryTitle>ORDER SUMMARY</SummaryTitle>
            <SummaryItem>
              <SummaryItemText>Subtotal</SummaryItemText>
              <SummaryItemPrice>Rs.{cart.total}</SummaryItemPrice>
            </SummaryItem>
            <SummaryItem>
              <SummaryItemText>Estimated Shipping</SummaryItemText>
              <SummaryItemPrice>$58</SummaryItemPrice>
            </SummaryItem>
            <SummaryItem>
              <SummaryItemText>Shipping Discount</SummaryItemText>
              <SummaryItemPrice>- 48</SummaryItemPrice>
            </SummaryItem>
            <SummaryItem type="total">
              <SummaryItemText>Total</SummaryItemText>
              <SummaryItemPrice>Rs.{cart.total}</SummaryItemPrice>
            </SummaryItem>
            <StripeCheckout
              stripeKey={process.env.REACT_APP_STRIPE}
              name="Abdul Rasheed Azar"
              billingAddress
              shippingAddress
              image="https://lh3.googleusercontent.com/ogw/ADea4I5yCEiXHB4_cZLjQevNUl8jMyGCJsUYPDecFVaA6Q=s83-c-mo"
              description={`Your total is Rs.${cart.total}`}
              amount={cart.total * 100}
              token={onToken}
              
            >
              <Button>CHECKOUT NOW</Button>
            </StripeCheckout>
          </Summary>
        </Bottom>
      </Wrapper>

      <Footer />
    </Container>
  );
};

`

【问题讨论】:

  • 能否请您控制台日志 process.env.REACT_APP_STRIPE
  • 这也是 Stripe 的传统用法,你真的不应该以这种方式使用它。 (stripe.com/docs/legacy-checkout)

标签: stripe-payments


【解决方案1】:

和你有同样的问题,我的修复,假设你的代码是正确的,你必须在你的 API 文件夹中更改它的 env 文件。 stripe 最近很可能已经实现了一个更改,它具有特定的名称,它需要您用于某些密钥,特别是在这种情况下,您需要将其在 API 文件夹 env 文件中的密钥名称更新为 STRIPE_SECRET_KEY_MY , 更多详情https://github.com/stripe/stripe-react-native/blob/ef674b2b87b8e453a077a5565859d6489870386f/example/server/index.ts#L50-L74

【讨论】:

    猜你喜欢
    • 2022-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 2020-03-20
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    相关资源
    最近更新 更多