Angular/node.js Stripe Checkout 集成(1 个账户,方便第三方付款人向第三方收款人付款)

时间:2021-05-19 00:46:05

标签: node.js angular stripe-payments payment-gateway

伙计,我已经研究了好几天了,但找不到一个好的解决方案。我想使用我的帐户(通过公钥和私钥)来促进从一个帐户到另一个帐户的付款(没有任何东西会进入我的帐户)。在前端,我有:

  checkout(amount) {
    const strikeCheckout = (<any>window).StripeCheckout.configure({
      key:  environment.PRODUCTION==='true'?stripeLiveClientId:stripeTestClientId,
      locale: 'auto',
      token:  (stripeToken: any) => {
        if(stripeToken){
          console.log(stripeToken)
          this.createCharge(stripeToken,amount)
        }
      }
    });
  
    strikeCheckout.open({
      name: 'Camel Stripe',
      description: 'Stripe Checkout',
      amount: amount
    });

  }

只是一个小片段,但本质上这只是捕获信用卡和电子邮件并确保它是有效的信用卡,然后制作条纹令牌。然后我将此令牌传递给节点后端并执行:

stripe.paymentIntents.create({
     amount: priceInPence,
     currency: 'usd',
     source: stripeTokenId,
     capture: false,  // note that capture: false
  }).then(charge => {
    return res.json({ success: true, message: 'Success', result: charge })
  }).catch(error => {
    res.status(400).json({ success: false, status: 400, message: error });
  });
//})
};

无论我如何构建它,最终总是会收到付款到我的帐户,即具有公钥/私钥的帐户。有谁知道我可以使用此令牌的方法,因为它具有必要的信息,并将钱发送到另一个帐户?

2 个答案:

答案 0 :(得分:0)

除非您使用 Connect,否则您不能接受付款并将资金转移到一个完全不同的 Stripe 帐户中。

答案 1 :(得分:0)

为了支持 Paul 的评论,在对 Stripe Connect 进行了大量研究之后,我想分享我的发现。 请注意,这是特定于我的用例并且正在使用 angular/express。

Connect 提供 multi-party 付款,这意味着您可以从 1 个用户接收资金,然后将其转入另一个用户帐户。您将需要一个条纹 connect 帐户。之后,您连接一个帐户,即 create 帐户。他们提供 3 个帐户 types 所有这些帐户类型都需要

  1. 自定义:基本上是如果您不希望您要路由到的帐户看到任何与条带相关的内容,这意味着它被标记为白色并且用户没有仪表板或查看正在发生的事情在后台。
  2. 标准(我选择的那个):这个帐户将有一个完整的条纹仪表板,它具有一个帐户所具有的所有功能,您可以自己创建。您将获得一个与您的特定连接帐户环境相关的唯一帐户 ID,最终,他们将拥有多个帐户 ID,具体取决于它们连接到的其他连接数量,或者它是否是一个已经存在的帐户。您将需要使用此 api 获取链接,让他们在将信息集成到您的连接环境之前验证信息account link api
  3. Express:他们将拥有一个精简版的仪表板,它与标准版相似,但功能较少

此时您已准备好开始路由付款。我在前端做了 angular,这里是一个 example 基本上这只是创建一个 stripeToken,这是卡数据有效的验证。您需要将其传递给后端才能使用它,这不会产生任何费用。

在后端,我使用express,你使用charge api 你传递stripeToken作为源属性。一个重要的步骤是添加您在连接的帐户仪表板中看到的条带帐户 ID。它应该类似于:

  stripe.charges.create({
    amount: priceInPence,
    currency: 'usd',
    source: stripeTokenId,
    capture: false,  // note that capture: false
  },{
    stripeAccount:'{{acctId}}'
  })

这应该足以让您的付款路由到必要的帐户,同时利用简单的 UI 结帐。

关于费用 API 需要注意的一点是,这是一个较旧的 API,功能较少。对于我的用例(美国加利福尼亚州仅使用卡支付)就足够了。如果您有更复杂的用例,或者您的应用可能供许多用户大量使用,您应该查看 payment intents