代码之家  ›  专栏  ›  技术社区  ›  Felipe Micali

在我的MongoDB中存储成功的条带支付,并在向用户提供产品之前验证它

  •  0
  • Felipe Micali  · 技术社区  · 6 年前

    我目前正在使用node js和MongoDB开发一个类似的电子商务应用程序。它不仅仅是一个电子商务,它是一个用户可以通过积分来换取产品和服务的应用程序,因此积分可以获得和购买。

    我的团队使用这种方法设计了这个系统,因此我们可以在任何场景中利用MongoDB的速度,通过使用Angular 5+Angular Universal构建的SPA,使应用程序超级快速并提供更好的用户体验。

    现在我们正在实施支付系统,我们正试图定义处理支付的最佳方式,验证它并相应地更新我们的数据库,以便将购买的产品/服务授予授权用户。

    我们正在考虑使用Stripe这样做,通过创建令牌客户端并在对其收费之前将其存储在用户的购物车中,这样我们就可以跟踪不成功的付款以及在每种情况下要采取的相应操作。

    {
        _id: USER'S MONGODB ID,
        items: [
            {
                _id: ITEM'S MONGODB ID,
                unitaryPrice: Number,
                quantity: Number
            }
        ],
        totalPrice: Number,
        totalItems: Number,
        status: 'ACTIVE',
        paymentInfo: {
            creditCardAmount: Number (value to be paid in cash),
            paymentToken: String (stripe token received from client),
            fromUserBalance: Number (points used from user's balance: defined by user, if he/she wants to use points from their account and if balance is $gt 0 : creditCardAmount + fromUserBalance must be equal to totalPrice before proceeding to charge step)
        }
    }
    

    这就是将要发生的顺序:

    • 用户触发签出过程,在该过程中,信用卡信息被发送到条带并接收令牌
    • { status:'等待付款', 付款信息:{ paymentToken:STRIPE生成的令牌 } }

    • 在此之后,在完成付款流程之前,用户无法再编辑购物车

    • 成功后,购物车将更新为{状态:“付款成功”}

    就是这样,这是我们考虑过的在我们的网站上实现支付的机制。

    我关注的是,系统故障发生在对条带令牌收费之后,而我的购物车没有更新到{状态:“支付成功”}。在恢复过程中,我必须再次充电,我必须收到一个答复,告诉我该代币已成功充电,因此我可以进入下一步的购买顺序。Stripe的SDK提供了这个功能吗?我可以检查是否已成功对条带令牌收费吗?

    0 回复  |  直到 6 年前