Stripe API:如何查找跨境转账至 Connect 账户的外币汇率和金额?

Das*_*uss 12 payment-processing stripe-payments

我正在使用 Stripe 处理付款。我有一个平台,国际 Connect 帐户可以通过我的平台向其他人出售物品。

我的平台是美元。在此特定示例中,Connect 帐户采用 CAD(加拿大元)。当有人从此 CAD Connect 帐户购买商品时,Stripe 会将钱存入我的平台帐户,将我的应用程序费用留在那里,然后将正确的金额转入 CAD Connect 帐户。它将这个金额转换为加元。在 stripe GUI 中,我可以找到以 CAD 表示的汇率和转账金额,如下面的屏幕截图所示。我在 API 中找不到这些属性。

在此输入图像描述

我见过的唯一具有exchange_rate属性的对象是余额交易。但是,当我获取屏幕截图中交易的余额交易时,我得到以下响应对象:

请求: https://api.stripe.com/v1/balance_transactions/txn_1IBNiNLLBOhef2QNqIeaNg9o

回复:

{ 
"id": "txn_1IBNiNLLBOhef2QNqIeaNg9o", 
"object": "balance_transaction", 
"amount": -7777, 
"available_on": 1611619200, 
"created": 1611076199, 
"currency": "usd", 
"description": null, 
"exchange_rate": null, 
"fee": 0, 
"fee_details": [], 
"net": -7777, 
"reporting_category": "transfer", 
"source": "tr_1IBNiNLLBOhef2QNcNqv3IlS", 
"status": "pending", 
"type": "transfer" }
Run Code Online (Sandbox Code Playgroud)

这里的问题是上面的余额交易对象仅以美元显示此交易:77.77 美元来自我的平台帐户。

但它不显示兑换率或加元金额。当这 77.00 美元进入 CAD Connect 账户时,正如我们在 GUI 屏幕截图中看到的那样,77.77 美元被转换为 98.02 加元,汇率为 1.26039(美元->加元)。

如何通过 API 找到该 CAD 金额和汇率?

koo*_*jah 7

此屏幕截图中向连接帐户进行的转账以美元为单位。转换发生在传输本身之后。资金以美元发送,然后在连接的帐户中转换为该帐户的默认货币。

您想要查看 Transfer 的destination_payment 属性,其中包含py_123关联帐户上费用的 id。该 Charge 有一个 BalanceTransaction 对象(类似于您共享的 Transfer 对象)。该 BalanceTransaction 将反映从美元到加元的转换,并显示在这种情况下该财产使用的汇率exchange_rate

  • 这很有意义。但我尝试了一下并收到错误:我转到此端点“https://api.stripe.com/v1/transfers/tr_1IBNiNLLBOhef2QNcNqv3IlS?expand[]=destination_ payment”来查找余额交易ID。我得到:`{"destination_ payment": { "balance_transaction": "txn_1IBNiOLKojKNEaYINS8SFq4t"}}`。然后我使用了端点`https://api.stripe.com/v1/balance_transactions/txn_1IBNiOLKojKNEaYINS8SFq4t`,但我得到了一个错误:`“没有这样的余额交易:'txn_1IBNiOLKojKNEaYINS8SFq4t'”`。知道为什么吗? (2认同)

MEG*_*l23 6

如果您需要在实际交易发生之前了解货币汇率,他们会在此处提供货币汇率

然而,它只是一个前端页面,需要授权。最重要的是,它每 12 小时更新一次。没有返回货币汇率的官方 API。

有一个小型 SaaS 产品以 REST API 的形式提供条带货币汇率。 https://striperates.com/

  • 谢谢!现在我正在使用免费的汇率 API,尽管它并不理想。那个SaaS产品将来可能会很好。我希望 stripe 能够在 API 中获得更新的费率。 (3认同)

小智 5

这是我所做的:我模拟外币付款到美国帐户(以便以美元显示),然后检索关联的余额交易和 Exchange_rate 参数

async function exchangeFeesToUS(currency) {

  const paymentIntent = await stripeTestUS.paymentIntents.create({
    amount: 10000,
    currency: currency,
    payment_method_types: ['card'],
    customer: "ANY_CUSTOMER_WITH_A_PAYMENT_METHOD",
    payment_method: "ANY_CARD_ASSOCIATED_TO_THIS_CUSTOMER",
    confirm: true
  });

  return await balanceTransaction(paymentIntent).then(balance => {
    return balance.exchange_rate
  })

}

async function balanceTransaction(paymentIntent) {

  const chargeId = paymentIntent.charges.data[0].id;

  const charge = await stripeTestUS.charges.retrieve(
    chargeId
  );

  return await stripeTestUS.balanceTransactions.retrieve(
    charge.balance_transaction
  );

}
Run Code Online (Sandbox Code Playgroud)

现在,如果您想转换为美元以外的其他货币,只需调用上述函数两次即可:

async function exchangeFeesToCUSTOM_CURRENCY(currency) {

  const rate = await exchangeFeesToUS(currency)
  const rateCUSTOM_CURRENCY = await exchangeFeesToUS('your_custom_currency')
  return rate / rateCUSTOM_CURRENCY

}
Run Code Online (Sandbox Code Playgroud)