php - 带有订阅的 Stripe 付款请求按钮

标签 php button request payment stripe-payments

我真的很累寻找我需要的信息,希望能得到你的帮助。
另外,我已经写信给 Stripe 支持,但目前与他们的沟通非常困难。

让我们从头开始。

我将 Stripe 订阅与 Laravel Cashier 一起使用。

我已经用信用卡/借记卡完成了付款。它有这样一个工作流程:
- 用户填写表格;
- Stripe.js 将填充的数据发送到 Stripe 服务器并返回 paymentMethod;
- 然后我将 paymentMethod 发送到我的服务器,并为有/没有试用日的用户进行订阅。

我需要添加谷歌支付和苹果支付按钮。
根据关于 Google pay 的 Stripe 文档和 Apple pay ,我必须创建 Payment Request Button .
据我了解有关付款请求按钮的文档,它以这种方式工作:
- 服务器端创建 paymentIntent 并将其发送到客户端;
- 用户按下支付请求按钮;
- 浏览器打开一个包含已保存用户卡片的弹出窗口;
- 用户选择一张卡片,stripe.js 会立即向用户收费。

我不明白在什么步骤条上知道为用户订阅的计划 ID。

我不需要立即向用户收费,我只需要获取 paymentMethod 即可将其发送到服务器端。
有没有人有使用付款请求按钮进行 Stripe 订阅的经验?

我将非常感谢您的帮助。

最佳答案

这就是我的做法。 我在客户端和服务器上使用了JS ,但在大多数情况下,即使语法不同,步骤也是相同的。 关于它的文档很少 - 我想我会看看我是否可以提供帮助。 即使完全不同,大部分逻辑应该是相同的。具体来说:Frontend returns paymentRequest -> Server-takes-paymentRequest -> customer -> subscription -> Done首先,您不需要对前端的支付意图做任何事情。我被挂断了一段时间。
接下来,使用 stripe.paymentRequest() 开始一切。它需要一些付款细节,并返回一个“PaymentRequest”对象..
在这里,您根据 PaymentRequest.canMakePayment() 处理按钮的呈现
接下来是当他们点击支付按钮时我的处理方式。
paymentRequest 有一个 paymentmethod事件监听器。
函数on接受 2 个参数,一个字符串 'paymentmethod' 指示您正在收听的内容,以及一个将事件作为其参数的函数。
很喜欢

    stripePaymentRequest.on('paymentmethod', (event) => {
      const paymentMethod = event.paymentMethod
  
      if (paymentMethod) {
        // call your server and pass it the payment method 
        // for Server side Stripe-API handling of payment
      }

      event.complete('success'); // Completes the transaction and closes Google/Apple pay
    });
当你调用服务器时——你可以像刷卡一样处理它,因为你有支付方式。
1:您使用付款方式从 strip 创建一个“客户”对象。我用过类似的东西
        const customer = await stripe.customers.create({
            payment_method: paymentMethod.id,
            email: paymentMethod.billing_details.email,
            invoice_settings: {
                default_payment_method: paymentMethod.id,
            },
        });
2:您使用客户从 strip 创建一个“订阅”对象,我是这样做的
        const subscription = await stripe.subscriptions.create({
            customer: customer.id,
            items: [{ plan: "plan_HereIsYourPlanID" }], // <--
            trial_period_days: 7,
            expand: ["latest_invoice.payment_intent"],
        });
3:前面的步骤应该完成 Stripe 所需的一切。在这一点上,我有一些自己的用户管理代码来跟踪我的用户是否订阅。然后,你返回成功与否 - 到你在前端调用的那个函数,现在它完成了你调用 event.complete('success')
我希望这会有所帮助。抱歉,它不是 PHP,但希望这是一个开始。

关于php - 带有订阅的 Stripe 付款请求按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60865022/

相关文章:

javascript - AWS Lambda 错误 : "Cannot find module '/var/task/index'"

http - golang 服务器不解码 json(文字 false 中的无效字符 ' '(预期 'a')400")

php - 将数组绑定(bind)到 =ANY() 条件的 SQL 注入(inject)

php - 值为 NULL Codeigniter

android - setWidth() 按钮安卓

javascript - 如何通过单击按钮添加html输入

node.js - 关于 request(url).pipe() 的一些事情

php - Laravel Eloquent 地获取所有记录,其中包含多对多关系中的所有 ID

PHP 无法从 URL 获取文本(file_get_content,CURL 不起作用)

java - 自动单击 JavaFX Webview 中的按钮