【发布时间】: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