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/

相关文章:

php - jQuery UI Tabs-Cookie和选择刚刚添加的选项卡之间发生冲突?

java - android:调用Button.setText()导致Button的意外重定位

delphi按钮第二次移动时消失

php - 包含PHP代码的Javascript字符串变量

php - 有没有办法通过 mysql 中的触发器来指定更新的列?

button - 我在哪里可以找到更改集中的按钮覆盖

java - 如何对包含查询参数和空格的GET请求进行签名

javascript - promise 所有返回错误的请求过多

node.js - 如何在NodeJS中正确使用回调函数

php - MySQL简单论坛