madebyraygun / one-click-payments
使用Formie和Stripe Checkout的Craft CMS支付插件
Requires
- craftcms/cms: ^3.0.0
- stripe/stripe-php: ^7.121
- verbb/formie: ^1.5.0
README
使用Formie和Stripe Checkout的Craft CMS支付插件。
概览
此插件允许您通过使用Stripe和Formie来启用Stripe Checkout,以在Craft CMS网站上支持支付。此插件专为以下简单情况设计:
- 避免在您的网站上创建新的UI/UX来捕获信用卡详情。
- 跳过购物车的配置过程。
- 使用简单、快速、安全的支付流程,支持一次性支付和周期性支付。
- 避免用户登录/创建以完成支付。
需求
此插件需要Craft CMS 3.0.0或更高版本以及Formie 1.5.x或更高版本。
安装
要安装插件,请按照以下说明操作。
-
打开您的终端并转到您的Craft项目
cd /path/to/project -
然后让Composer加载插件
composer require madebyraygun/one-click-payments -
在控制面板中,转到设置 → 插件,并点击“安装”按钮以安装一键支付。
配置一键支付
在开始使用插件之前,您需要在以下位置设置一个配置文件:/craft/config/one-click-payments.php,如下所示
<?php use craft\helpers\App; return [ "stripeSecretKey" => App::env('STRIPE_SECRET_KEY'), "stripeHookSecretKey" => App::env('STRIPE_HOOK_SECRET'), 'forms' => [ 'formHandleOne' => [ 'thankyouLanding' => '/path/to/thank-you', 'cancelLanding' => '/path/to/cancel-confirmation', 'stripeSubscriptionProductId' => App::env('STRIPE_SUB_PRODUCT'), 'stripeOneTimeProductId' => App::env('STRIPE_OT_PRODUCT'), ], 'formHandleTwo' => [ 'thankyouLanding' => '/path/to/thank-you', 'stripeOneTimeProductId' => App::env('STRIPE_OT_PRODUCT'), ] ], ];
作为最佳实践,您应该将任何敏感值存储在您的.env文件中。
配置Stripe账户并配置Webhook
首先确保您有一个Stripe账户,并确保将其设置为测试模式。然后您可以从Stripe仪表板获取stripeSecretKey 密钥并将其添加到您的.env文件中。
接下来,您需要配置一个Webhook来接收您的支付事件,为此
- 登录到您的Stripe仪表板。
- 点击右上角的
开发者。 - 点击
Webhooks标签。 - 点击
添加端点,并将URL指向您的开发URLhttps://example.com/webhooks/stripe-payments
您很可能会在本地环境中开发,因此您需要将本地开发服务器暴露给公众,以便Stripe可以访问您。您可以使用ngrok或类似工具来完成此操作。如果您使用的是Nitro,您可以像这样配置ngrok
./ngrok http -host-header=rewrite yoursite.nitro:80
- 对于“发送事件”设置,选择“接收所有事件”或输入以下内容
checkout.session.completedpayment_intent.payment_failedpayment_intent.succeeded
- 点击
添加端点。 - 获取您新端点的
签名密钥,并使用它来配置配置中的stripeHookSecretKey。
创建您的Stripe产品
每个表单都需要至少一个产品(一次性或周期性),但可以同时支持两者。创建产品并获取它们的ID,然后在价格下配置为一次性或周期性。您可以指定产品的价格,但如果需要,价格字段将自动从您的表单中计算并添加到产品中。(这允许在一次性产品和订阅产品中自定义值,非常适合捐赠或“按你想付”的表单。)
在配置中,将每个产品的ID添加到与表单句柄匹配的数组中,作为stripeOneTimeProductId、stripeSubscriptionProductId或两者之一。
创建您的Formie表单
插件内部将获取从示例配置中获取的Formie句柄formHandleOne和formHandleTwo,并尝试获取值来配置检查出的paymentTotal和可购买paymentType。为此,我们需要在表单中添加以下字段
- 一个句柄为
paymentTotal的字段,用于存储检查出的金额。这可以是单选按钮、下拉菜单、计算字段、隐藏字段或数字字段。此字段应以美元为货币单位的数字作为值。 - 一个句柄为
paymentType的字段,其值为one_time或recurring。这可以是单选按钮、下拉菜单或隐藏字段。 - 如果您想支持订阅(
recurring)支付,您还需要一个句柄为cancelSubscriptionUrl的额外隐藏字段来存储生成的“魔法”URL,以便客户取消订阅,这通常通过电子邮件提供。
对于隐藏字段,您需要确保将其值设置为默认值。
配置您的Formie状态
您需要在您的支付表单中配置以下状态
- 已提交(将此设置为默认值用于新的支付表单)
- 处理中
- 已确认
- 已取消
配置您的通知
您可以为每个表单设置独特的通知,基于提交的状态进行条件设置。一旦Stripe支付被确认并触发webhook,提交状态应更改为confirmed。这将是一个发送包含总金额的交易摘要确认电子邮件的好机会。
对于订阅产品,您还应在确认中包含指向您的魔法cancelSubscriptionUrl的链接,以便用户可以轻松取消他们的订阅。当订阅被取消时,webhook将被触发,提交状态将更改为cancelled,这又是一个发送确认电子邮件的机会。
配置您的着陆页面
这些是在结账完成后或订阅被取消后用户通常会重定向到的常见页面。您可以为每个表单设置唯一的页面,或为所有表单创建一个通用的页面集。
使用一键支付
一旦您已配置Stripe,您就可以通过将表单嵌入任何页面并测试结账流程来开始测试。确保您在用于生产服务器的.env文件中设置了实时Stripe密钥,您应该准备好进行支付。
一键支付路线图
- Craft 4和Formie 2.0的更新。(计划在1.0里程碑中)
- 从Stripe webhook存储有关交易的更多数据。
- 在确认页面中引用表单值。
- 自动化创建所需字段以简化设置。
由Raygun提供