javascript - Stripe 支付流程

标签 javascript php stripe-payments stripe.js

我对如何使用 Stripe 处理订阅 + 费用支付有点困惑,

这是我得到的:

HTML:

<form id="req" action="/thank-you" method="post">

<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_RrE21sY9Xbtwq9ZvbKPpp0LJ"
data-name="Wizard.Build Hosting Package"
data-description=""
data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
data-locale="auto"
data-currency="usd">
</script>
...

感谢页面:

require_once('lib-stripe/init.php');

// create api key
\Stripe\Stripe::setApiKey("sk_TESTING");

// create customer
$customerO =\Stripe\Customer::create(array(
  "email" => $_POST["e"]
));
$customer = $customerO->jsonSerialize();

//var_dump($customer);

//create subscription (Package Bronze, Silver or Gold)
$subscriptionO = \Stripe\Subscription::create(array(
  "customer" => $customer["id"],
  "items" => array(
    array(
        "plan" => $_POST["pack"],
    ),
  )
));
$subscription = $subscriptionO->jsonSerialize();

//var_dump($subscription);

//create invoice (3rdparty cost)
$invoiceO = \Stripe\Invoice::create(array(
    "customer" => $customer["id"],
    "amount" =>$p3price,
    "currency" => "usd",
    "description" => "3rdp Cost",
    "subscription" => $subscription["id"]
));
$invoice = $invoiceO->jsonSerialize();

//var_dump($invoice);

我显然不知道整个过程是如何工作的......

我将填充电子邮件字段,但我如何在该弹出表单中请求每月重新发生的设置费和订阅?

理想的工作流程如下:

我的网站页面的形式: 用户填写姓名、邮箱、商品名称[需要此元数据]、商品价格、包裹名称[需要此元数据]、包裹价格

点击提交按钮, Stripe 弹出表单出现预填充电子邮件,用户同意打包月付款 + 商品价格,用户输入卡信息, 用户提交 Stripe 表单,

用户现在需要支付第 1 个月的包裹费用 + 商品价格,包裹每月自动付款。

返回一个包含所有元数据、价格、包裹等的 url,带有密码或某种安全表单字段,然后我根据返回的 url 数据自动处理订单,

请帮忙,感谢社区!

最佳答案

我想我可以指导您完成整个过程,您必须遵循非常简单的步骤并检查是否一切顺利。

  1. 使用 Stripe 仪表板或 Stripe API(下面的 PHP 代码示例)创建计划

    \Stripe\Stripe::setApiKey("<YOUR SECRET KEY>");
    
    $plan = \Stripe\Plan::create([
      'product' => {'name' => 'Plan name'},
      'nickname' => 'Plan code',
      'interval' => 'month',
      'currency' => 'usd',
      'amount' => 10,
    ]);
    
  2. 使用 JS/PHP 等在 Stripe 中创建客户并保存 id 以供引用。(下​​面的 PHP 代码示例)

    \Stripe\Stripe::setApiKey("<YOUR SECRET KEY>");
    
    $customer = \Stripe\Customer::create([
      'email' => 'customer@example.com',
    ]);
    

    此调用的响应将为在 stripe 上创建的客户提供一个 json

    {
      "id": "<UNIQUE ID>",
      ...
    }
    

    您需要将 id 保存在变量或数据库中

  3. 为客户订阅计划。(下面的 PHP 示例代码)

    \Stripe\Stripe::setApiKey("<YOUR SECRET KEY>");
    
    $subscription = \Stripe\Subscription::create([
      'customer' => '<UNIQUE ID>',
      'items' => [['plan' => '<PLAN ID>']],
    ]);
    

您可以在 Official Stripe documentation 上找到更多详细信息

关于javascript - Stripe 支付流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48594903/

相关文章:

javascript - 如何将两个复选框数组链接在一起 JavaScript

ruby-on-rails - 更改信用卡信息 (Stripe)

php - 如何通过 PHP 中的 STRIPE API 在 STRIPE 中注册用户

javascript - 无法看到警报 - mvc5 通过 TempData 进行引导

javascript - 从 firebase 列表中获取单个项目

javascript - 如何使用 jQuery 定位元素

android - Stripe.apiKey 未在 Android 中解析

javascript - 仅使用 CSS 和基本/纯 javascript 的 Popup Div HTML5

javascript - 跨源请求被阻止,但所有请求都指向源域

php - 使用 GET 获取正确的 URL