如何取消setupIntent?
How to cancel setupIntent?
在用户注册后,我已成功创建一个 setupIntent 并将付款方式附加到客户。但是,我为用户提供了稍后通过按“稍后”按钮在设置中添加付款方式的选项。按下此按钮后,我想取消 setupIntent。
我的服务器上有以下内容:
exports.cancelSetupIntent = functions.https.onCall(async (data, context) => {
const clientSecret = data.clientSecret;
const setupIntent = await stripe.setupIntents.cancel(
clientSecret
);
});
当按下“稍后”按钮时,我从客户端调用它:
func cancelSetupIntent() {
FirebaseReferenceManager.functions.httpsCallable("cancelSetupIntent").call(["clientSecret": self.setupIntentParams?.clientSecret]) { (response, error) in
if let error = error {
print("failed to cancel setup intent: \(error.localizedDescription)")
} else {
print("setupIntent cancelled")
}
}
}
但是,我收到一条错误消息:“没有这样的 setupIntent:”seti_...“
该错误显示的客户端密码与打开页面时创建的客户端密码相同。
非常感谢任何帮助! :)
取消设置意图时,您应该使用设置意图 ID (seti_xxx),而不是设置意图客户端密码 (seti_xxx_secret_yyy)。
为了在您的前端获取设置意图 ID 并将其发送回您的服务器,您有两个选择:
- 当您最初在服务器端创建设置意图并在客户端发送客户端密码时,还要发回 ID。然后,当您需要取消设置 Intent 时,您只需将 ID 发送回您的服务器即可。
- Retrieve the Setup Intent client-side 在将 ID 发送回您的服务器之前使用客户端密码获取 ID。
在用户注册后,我已成功创建一个 setupIntent 并将付款方式附加到客户。但是,我为用户提供了稍后通过按“稍后”按钮在设置中添加付款方式的选项。按下此按钮后,我想取消 setupIntent。
我的服务器上有以下内容:
exports.cancelSetupIntent = functions.https.onCall(async (data, context) => {
const clientSecret = data.clientSecret;
const setupIntent = await stripe.setupIntents.cancel(
clientSecret
);
});
当按下“稍后”按钮时,我从客户端调用它:
func cancelSetupIntent() {
FirebaseReferenceManager.functions.httpsCallable("cancelSetupIntent").call(["clientSecret": self.setupIntentParams?.clientSecret]) { (response, error) in
if let error = error {
print("failed to cancel setup intent: \(error.localizedDescription)")
} else {
print("setupIntent cancelled")
}
}
}
但是,我收到一条错误消息:“没有这样的 setupIntent:”seti_...“
该错误显示的客户端密码与打开页面时创建的客户端密码相同。
非常感谢任何帮助! :)
取消设置意图时,您应该使用设置意图 ID (seti_xxx),而不是设置意图客户端密码 (seti_xxx_secret_yyy)。
为了在您的前端获取设置意图 ID 并将其发送回您的服务器,您有两个选择:
- 当您最初在服务器端创建设置意图并在客户端发送客户端密码时,还要发回 ID。然后,当您需要取消设置 Intent 时,您只需将 ID 发送回您的服务器即可。
- Retrieve the Setup Intent client-side 在将 ID 发送回您的服务器之前使用客户端密码获取 ID。