我正在将Google Wallet for Digital Goods的网站转换为Stripe,我正在尝试复制旧的流量
客户做购买和user_id,product_id,quantity,和其他任意数据传递给谷歌钱包
回发邮件发送到我的服务器,包括所有额外的数据和密钥,所以我知道这不是客户欺骗回发
我的服务器假定这意味着合法的购买已经发生并完成了各种处理
对于每次购买,我的网站显然需要知道
charge.description不能用作唯一标识符)我正在尝试集成Checkout,但没有看到
charge没有任何内容可以传回任意数据的对象(webhook发送回我的服务器).客户对象似乎不是解决方案,因为API文档说"客户对象允许您执行经常性费用并跟踪与同一客户关联的多项费用",这两种情况都不适用于我的情况.
我可以做这样的事情,
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
    }
});
但Checkout示例表明,token"Checkout过程完成时"会调用回调,而不仅仅是成功收费.将token.id可以与其他数据为"待定购买"一旦变成验证一起被存储charge.succeeded事件触发一个网络挂接,但可能引入竞争条件,听起来令人费解的地狱,并token.id 与网络挂接在第一未发回地点.
这似乎是支付处理的一个非常普遍的要求,但我完全不知道如何用Stripe实现它.任何人都可以建议吗?
我认为您对 Stripe Checkout 的工作原理感到困惑。获取 Stripe 令牌只是处理付款过程的第一步。使用 Stripe Checkout或Stripe.js时,您会收到一个 Stripe 令牌,然后您需要将其发送到您的服务器,然后在服务器上使用Create Charge API 创建费用并接收付款。
因此,在您的情况下,您将能够在服务器端创建收费,并且一旦进行 API 调用,您无需等待charge.succeededWebhook 中的事件。您将收到指示成功的收费对象或指示收费失败的错误。然后您就可以更新您的数据库。