英文:
Using stripe in Flutter Web! How to transfer customer_email?
问题
这是你的代码片段,其中包含了问题所在的部分:
customer_email: "test@gmail.com",
问题出在 customer_email
参数上,Stripe 的 redirectToCheckout
方法不接受 customer_email
参数。这就是为什么你在运行程序时遇到了错误。
你需要使用不同的方法来将客户的电子邮件传递给 Stripe,可能是在创建订阅之前将客户的电子邮件关联到他们的 Stripe 账户中。
希望这能帮助你解决问题。如果你需要进一步的帮助,请提出具体的问题。
英文:
I want to create a subscription page in flutter, with stripe. It works fine, beside I cannot transfer the customer_email to stripe.
That is my code, I added the parameter from the stripe api, as you can see below. But the program crashes...
The Stripe Api has this option.
@JS()
library stripe;
import 'package:flutter/material.dart';
import 'package:flutter_stripe_demo/constants.dart';
import 'package:js/js.dart';
void redirectToCheckout(BuildContext _) async {
final stripe = Stripe(apiKey);
stripe.redirectToCheckout(CheckoutOptions(
lineItems: [
LineItem(price: nikesPriceId, quantity: 1),
],
** customer_email: "test@gmail.com",**
mode: 'subscription',
successUrl: 'http://localhost:8080/#/success',
cancelUrl: 'http://localhost:8080/#/cancel',
));
}
@JS()
class Stripe {
external Stripe(String key);
external redirectToCheckout(CheckoutOptions options);
}
@JS()
@anonymous
class CheckoutOptions {
external List<LineItem> get lineItems;
external String get mode;
external String get successUrl;
external String get cancelUrl;
**external String get customer_email;**
external factory CheckoutOptions({
List<LineItem> lineItems,
String mode,
String successUrl,
String cancelUrl,
String sessionId,
** String customer_email,**
});
}
@JS()
@anonymous
class LineItem {
external String get price;
external int get quantity;
external factory LineItem({String price, int quantity});
}
Here is the error:
An Observatory debugger and profiler on Chrome is available at: http://127.0.0.1:51110/k2ADZWot2J4=
Flutter Web Bootstrap: Auto
The Flutter DevTools debugger and profiler on Chrome is available at: http://127.0.0.1:9104?uri=http://127.0.0.1:51110/k2ADZWot2J4=
You may test your Stripe.js integration over HTTP. However, live Stripe.js integrations must use HTTPS.
IntegrationError: Invalid stripe.redirectToCheckout parameter: customer_email is not an accepted parameter.
答案1
得分: 0
使用以下方式的 redirectToCheckout
已经被弃用,不再是 Stripe 推荐的方法,但对于这种模式,参数应该是 customerEmail
:
https://stripe.com/docs/js/deprecated/redirect_to_checkout#stripe_checkout_redirect_to_checkout-options-customerEmail
不要再像这样创建会话,而是应该使用自己的后端调用会话创建端点(API 参考),然后重定向客户到会话的 url
(API 参考),可以使用服务器或客户端重定向。
英文:
Using redirectToCheckout
like this is deprecated and no longer something Stripe recommends, but for that pattern the parameter would be customerEmail
:
https://stripe.com/docs/js/deprecated/redirect_to_checkout#stripe_checkout_redirect_to_checkout-options-customerEmail
Instead of creating the session like this, you should use your own back end to call the session create endpoint (API ref), and then redirect the customer to the session url
(API ref), using either a server or client redirect.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论