条带支付是指由“条纹”公司生成的用于支付处理的库和API。
条带错误:“您只能指定以下参数之一:default_price_data,类型。”
尝试通过节点获取在条带仪表板上创建产品。 代码片段: 异步创建产品(数据){ 尝试 { const 响应 = 等待获取(url,{ 方法:...
NestJS Stripe Webhook 部署到 Render.com 后出现错误
我正在 NestJS 应用程序中使用 Stripe webhook。当我使用 Stripe CLI 并使用“stripe Listen --forward-to localhost:3333/v1/stripe/webhook”逗号在本地测试 webhook 时...
Stripe 时间表创建 90 天(当前日期 + 90 天)
我在通过条带会话创建 90 天的条带计划(当前日期 + 90 天)时遇到问题。在我的页面上选择套餐后,它将重定向到 Stripe UI,客户可以在其中...
我对编程相当陌生,我创建了一个应用程序来向客户收费,并希望存储他们的 CC 信息并稍后收费。我已经阅读了所有教程并且
我在我的应用程序中使用 Laravel 和 Vue.js,并且在尝试创建 Stripe Checkout 会话时遇到问题。具体来说,当用户尝试下订单时,我会得到以下信息...
我正在 Firebase Cloud Functions 上运行的 Node/Express.ts 后端实现 Stripe webhook 集成,并且在签名验证期间很难传递原始 req.body。 我做了一个...
在我的 Stripe 应用程序中,我想将一封电子邮件链接到一位客户,因此任何定期付款都不会重复客户,但 Stripe 会不断重复
所以我的产品是一项订阅服务,它允许用户访问我网站上的服务。我已经在 stripe 上创建了该产品,并将付款链接添加到我的网站: 所以我的产品是一项订阅服务,它允许用户访问我网站上的服务。我已经在 stripe 上创建了该产品,并将付款链接添加到我的网站: <a className="bg-red-600 text-white py-2 px-4 rounded inline-block" target="_blank" href={`https://buy.stripe.com/test_bIY15h1Jp5eg6409AA?prefilled_email=${session.user.email}`} > Pay Now 我已经在我的 api 中编写了 webhook.ts 代码,在成功付款后授予用户访问权限,在未付款订阅时撤销访问权限。它在一定程度上起作用;在测试期间,我取消订阅并尝试使用同一电子邮件再次订阅(我将 customerId 添加到用户数据库),stripe 创建另一个客户而不是使用同一客户及其导致的问题 我的 webhookk.ts: import { NextApiResponse, NextApiRequest } from "next"; import Stripe from "stripe"; import mongooseConnect from "@/lib/mongooseConnect"; import User from "@/models/User"; import Order from "@/models/Order"; import { buffer } from "micro"; const stripe = new Stripe(process.env.STRIPE_SK as string); const webhookSecret = process.env.STRIPE_ENDPOINT_SECRET as string; export default async function handler(req: NextApiRequest, res: NextApiResponse) { await mongooseConnect(); const sig = req.headers['stripe-signature']; let event: Stripe.Event; try { event = stripe.webhooks.constructEvent(await buffer(req), sig!, webhookSecret); } catch (err: any) { console.error(`Webhook signature verification failed. ${err.message}`); return res.status(400).json({ error: err.message }); } const eventType = event.type; try { switch (eventType) { case 'checkout.session.completed': { const session = event.data.object as Stripe.Checkout.Session; const email = session.customer_details?.email; if (email) { let user = await User.findOne({ email }); let subscription; if (typeof session.subscription === 'string') { subscription = await stripe.subscriptions.retrieve(session.subscription); } else { subscription = session.subscription as Stripe.Subscription; } const priceId = subscription?.items.data[0]?.price?.id || null; if (!user) { // Create a new user if none exists user = await User.create({ email, name: session.customer_details?.name || 'Unknown', stripeCustomerId: session.customer as string, priceId, hasAccess: true, }); } else { // Update existing user with Stripe Customer ID if it doesn't exist if (!user.stripeCustomerId) { user.stripeCustomerId = session.customer as string; } // Ensure user has access user.hasAccess = true; user.priceId = priceId; await user.save(); } // Create an order record await Order.create({ user: user._id, name: user.name, email: user.email, stripeCustomerId: user.stripeCustomerId, paid: true, }); } break; } case 'customer.subscription.deleted': { const subscription = event.data.object as Stripe.Subscription; const user = await User.findOne({ stripeCustomerId: subscription.customer as string, }); if (user) { // Revoke access user.hasAccess = false; await user.save(); } break; } default: console.log(`Unhandled event type ${event.type}`); } } catch (e: any) { console.error(`Stripe error: ${e.message} | EVENT TYPE: ${eventType}`); } return res.status(200).json({ received: true }); } export const config = { api: { bodyParser: false, }, }; 我的模型/用户.ts: import mongoose, { Schema, model, models } from "mongoose"; const userSchema = new Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: false, default: null }, image: { type: String, required: false }, stripeCustomerId: { type: String, required: false, default: null }, hasAccess: {type: Boolean, required: true, default: false}, priceId: { type: String, required: false, default: null }, emailVerified: { type: Boolean, default: false }, }, {timestamps: true}); const User = models.User || model("User", userSchema); export default User; 它可以工作,但是在取消订阅并尝试再次付款后,它会在stripe仪表板中创建一个新客户,并且它会弄乱代码,有什么解决方案来解决客户重复吗? 您应该首先创建(或检索,如果有现有客户)一个客户,然后将 customer 传递给结帐会话创建 API,以便 Stripe 将新创建的订阅与该客户关联,而不是创建新客户。请参阅 API reference 了解更多详情
我正在构建一个结帐应用程序,需要 html 端的数量选择器并将该数量传递到结帐页面。我不想要结帐页面上的数量选择器。 跟随条纹...
通过 Stripe(网页)成功交易后,Apple Pay/Google Pay 付款表不会消失和超时
我遇到了一个奇怪的问题,我的 Apple Pay 和 Google Pay 付款单没有收到通过 Stripe 的交易结果。我有警报记录我公司发生的事情...
在stripeinvoice. payment_succeeded事件中添加产品名称
我们正在使用 salesforce 连接器来连接 stripe 和 salesforce。 所有的 webhook 事件都在 salesforce 中正确捕获,一旦我们使用的此类事件是invoice. payment_succeeded ...
我想在我的 Angular 14 项目上实现 Stripe,而不使用 stripe-ngx,因为弹出式设计不适合我。 所以,我使用“个性化支付隧道”,我想...
Stripe Connect,将订阅从一个父帐户迁移到另一个?
我正在构建一个使用 Stripe Connect 代表我的用户处理订阅的应用程序。 其他类似的应用程序也这样做,他们使用 Stripe Connect 代表用户处理订阅....
因此,我的任务是为我们现有的一个应用程序重新设计数据库(以标准化和重组一些更大的表),并且我正在努力为
有没有办法确定 Stripe 订阅的最后更新时间? 我正在寻找有关 Stripe 订阅对象本身更新的信息,而不是像订阅这样的具体细节...
如何使用 Next.JS 中的 getServerSideProps 从 stripe api 获取用户数据?
我正在尝试从 Next.JS 中的 getServerSideProps 函数中的条带获取一些用户数据,以便我可以将其传递给其他一些组件,但我很难从
事件帐户的 Stripe 连接 Webhook.updated 永远不会被触发
我创建了一个连接 webhook 来监听 account.updated 事件,只要连接帐户有任何更新,但该事件没有被触发。 但是当我尝试使用 COMM 通过 CLI 测试它时...
条带空对象dataObjectDeserializer.getObject()
你好, 我使用 stripe-java côté 后端,在 webhook stripe 上使用,j'essaye de desrialiser l'object json recu,seulement j'obtiens toout le temps null,les forums et Articles ...
Laravel 11 Cashier (Stripe) - 如何检查新订阅/重新订阅
在 Laravel 11 中使用 Stripe 的 Cashier 时,我需要获取 1 天前创建的订阅总数,分为两组: 从未订阅过但订阅过的用户...
为什么 dataObjectDeserializer.getObject() 不存在?
我创建了一个 spring-boot 服务器来处理 stripe webhooks。 然而,webhooks 正在工作 - 我收到一个事件,但是当我尝试获取 dataObjectDeserializer.getObject() 的值时,它的 n...
我觉得有些事情我没有在这里做。 所以基本上我确保 customerId 匹配,但在处理付款后,它仍然显示客户未知。 后端 缺点...