如何发送带有Stripe费用的附加数据以在webhook中返回?

Pha*_*son 6 stripe-payments

我正在将Google Wallet for Digital Goods的网站转换为Stripe,我正在尝试复制旧的流量

  1. 客户做购买和user_id,product_id,quantity,和其他任意数据传递给谷歌钱包

  2. 回发邮件发送到我的服务器,包括所有额外的数据和密钥,所以我知道这不是客户欺骗回发

  3. 我的服务器假定这意味着合法的购买已经发生并完成了各种处理

对于每次购买,我的网站显然需要知道

  • 购买了什么产品 (charge.description不能用作唯一标识符)
  • 在购买时,客户登录了我的哪个站点的用户帐户

我正在尝试集成Checkout,但没有看到

使用客户对象?

客户对象似乎不是解决方案,因为API文档说"客户对象允许您执行经常性费用并跟踪与同一客户关联的多项费用",这两种情况都不适用于我的情况.

在本地Javascript回调中处理它?

我可以做这样的事情,

var handler = StripeCheckout.configure({
    token: function(token) {
        var user_id = 123;
        var product_id = 456;
        var quantity = 2;
        var arbitrary = 'data';
        // fire off a POST call to http://example.com/hey_look_a_charge with the above data
    }
});
Run Code Online (Sandbox Code Playgroud)

但Checkout示例表明,token"Checkout过程完成时"会调用回调,而不仅仅是成功收费.将token.id可以与其他数据为"待定购买"一旦变成验证一起被存储charge.succeeded事件触发一个网络挂接,但可能引入竞争条件,听起来令人费解的地狱,并token.id 与网络挂接在第一未发回地点.

这似乎是支付处理的一个非常普遍的要求,但我完全不知道如何用Stripe实现它.任何人都可以建议吗?

koo*_*jah 5

我认为您对 Stripe Checkout 的工作原理感到困惑。获取 Stripe 令牌只是处理付款过程的第一步。使用 Stripe CheckoutStripe.js时,您会收到一个 Stripe 令牌,然后您需要将其发送到您的服务器,然后在服务器上使用Create Charge API 创建费用并接收付款。

因此,在您的情况下,您将能够在服务器端创建收费,并且一旦进行 API 调用,您无需等待charge.succeededWebhook 中的事件。您将收到指示成功的收费对象或指示收费失败的错误。然后您就可以更新您的数据库。