问题描述
我正在尝试按照此处的指南 ( https://stripe.com/docs/stripe-js/elements/payment-request-button ) 为网络和 Stripe 设置 Apple Pay。域验证和所有预设置等初始步骤已完成,但我在执行付款步骤时遇到问题。
Apple Pay 按钮显示在我的 Safari 浏览器中。单击按钮时,我触发了一个名为 Paymentmethode() 的事件,我在实时检查时遇到此错误。要么您没有将卡保存到您的电子钱包,要么当前域 (pwafe.devco.pk) 未为 Apple 注册支付。访问 https://dashboard.stripe.com/account/apple_pay 以注册此域。 main.js:25。和按钮隐藏 我在第 3 步后迷路了,不知道该怎么做。我正在向我的后端和后端发帖,创建付款意图并返回 client_secret
paymentMethod() {
// STEP 1 FROM GUIDE
var stripe = Stripe("pk_test_YxSI6F4QeV0XCofSgabilbTu00ChOmJWJ0",{
apiVersion: "2020-08-27",stripeAccount: "CONNECTED_STRIPE_ACCOUNT_ID",});
// STEP 2 FROM GUIDE
var paymentRequest = stripe.paymentRequest({
country: "US",currency: "usd",total: {
label: "Demo total",amount: 1099,},requestPayerName: true,requestPayerEmail: true,});
// STEP 3 FROM GUIDE
var elements = stripe.elements();
var prButton = elements.create("paymentRequestButton",{
paymentRequest: paymentRequest,});
// console.log("before api call",paymentRequest);
paymentRequest.canMakePayment().then(function (result) {
// console.log("after api called" + result);
if (result) {
prButton.mount("#payment-request-button");
} else {
//prButton.mount('#payment-request-button');
document.getElementById("payment-request-button").style.display =
"none";
}
});
// STEP 4 FROM GUIDE -- THIS RETURNS A CLIENT SECRET
let clientSecret;
axios
.post("https://pwa.devco.pk/api/Create_PaymentIntent",{})
.then((resp) => {
// Assign this prevIoUsly defined variable
clientSecret = resp.client_secret;
});
paymentRequest.on("paymentmethod",function (ev) {
// Confirm the PaymentIntent without handling potential next actions (yet).
stripe
.confirmCardPayment(
clientSecret,{
payment_method: ev.paymentMethod.id,{
handleActions: false,}
)
.then(function (confirmResult) {
if (confirmResult.error) {
// Report to the browser that the payment Failed,prompting it to
// re-show the payment interface,or show an error message and close
// the payment interface.
ev.complete("fail");
} else {
// Report to the browser that the confirmation was successful,prompting
// it to close the browser payment method collection interface.
ev.complete("success");
// Check if the PaymentIntent requires any actions and if so let Stripe.js
// handle the flow. If using an API version older than "2019-02-11" instead
// instead check for: `paymentIntent.status === "requires_source_action"`.
if (confirmResult.paymentIntent.status === "requires_action") {
// Let Stripe.js handle the rest of the payment flow.
stripe.confirmCardPayment(clientSecret).then(function (result) {
if (result.error) {
let data = {
msg: "An error occurred. Please try again.",};
this.handleShowFlashMsg(data);
// The payment Failed -- ask your customer for a new payment method.
} else {
this.handleShowOrderConfirmModal();
// The payment has succeeded.
}
});
} else {
// The payment has succeeded.
}
}
});
});
var paymentRequest = stripe.paymentRequest({
country: "US",requestShipping: true,// `shippingOptions` is optional at this point:
shippingOptions: [
// The first shipping option in this list appears as the default
// option in the browser payment interface.
{
id: "free-shipping",label: "Free shipping",detail: "Arrives in 5 to 7 days",amount: 0,],});
paymentRequest.on("shippingaddresschange",function (ev) {
if (ev.shippingAddress.country !== "US") {
ev.updateWith({
status: "invalid_shipping_address",});
} else {
// Perform server-side request to fetch shipping options
fetch("/calculateShipping",{
data: JSON.stringify({
shippingAddress: ev.shippingAddress,}),})
.then(function (response) {
return response.json();
})
.then(function (result) {
ev.updateWith({
status: "success",shippingOptions: result.supportedShippingOptions,});
});
}
});
var stripe = Stripe("pk_test_YxSI6F4QeV0XCofSgabilbTu00ChOmJWJ0",});
},
解决方法
您应该验证域注册并将卡添加到 wallet.tha