首页 > 解决方案 > Stripe:如何从连接的帐户中检索转移信息

问题描述

我的主账户是英镑,我有一个欧元的关联账户。我的主账户首先被存入,然后一个百分比被转移到欧元。

如果客户以欧元付款,它会以一定的费用和汇率进入我的英镑账户。计算佣金并将其转入欧元账户。

我可以在 EURO->GBP 兑换中看到,在 EURO 账户中我可以看到 GBP->EURO 兑换。

我可以从每个账户转账过程中检索所有详细信息,除了最后一次在关联账户上兑换回欧元。

这是我到目前为止所尝试的:

// To retrieve data from main GBP account
$charge = \Stripe\Charge::retrieve($charge_id);
$transfer = \Stripe\Transfer::retrieve($transfer_id);                                                           
$balance = \Stripe\BalanceTransaction::retrieve($charge['balance_transaction']);

// To retrieve data from EURO connected account
$transfer_eur= \Stripe\Transfer::retrieve($transfer_id,[                                                                             
    'account' => $eur_acc_number                                                                         
]);                                                                      
$balance_eur= \Stripe\BalanceTransaction::retrieve($transfer_eur['balance_transaction'],[                                                                            
    'account' => $eur_acc_number                                                                     
]);

这是我的结果:

$charge['amount'] // shows customer EUR amount
$balance['amount'] // shows the convert customers amount in GBP

$transfer_eur['amount'] // shows the GBP amount in the connect EUR account
$balance_eur['amount'] // just show the a negative GBP value of the EUR account

我希望它$balance_eur['amount']会向我显示欧元值,但它只是向我显示负的英镑值。

我就在那儿,但我无法从连接的帐户中获取欧元值。是否可以?

[编辑]

我尝试过但失败的方法是destination_payment通过某种方式使用payment ID - py_****

$balance_other = \Stripe\Charge::retrieve($charge_id,[                                                                       
    'account' => $row['stripe_acc'],
    'destination_payment' => $payment_id                                                                         
]);

标签: phpstripe-payments

解决方案


您基本上想要进行转帐,获取其中destination_payment的一个以查看到达连接帐户的付款,然后在连接帐户上获取balance_transaction与该付款相关联。它还有助于为此使用 API 的扩展对象功能。

$t = \Stripe\Transfer::create([
  "amount" => 400,
  "currency" => "eur",
  "destination" => "acct_1EPRDuFk3qO2dNo1"
]);
$transfer_id = $t->id;
$transfer_eur= \Stripe\Transfer::retrieve([
  'id' => $transfer_id,
  'expand' => ['destination_payment.balance_transaction']
]);
$balance_transaction_eu = $transfer_eur->destination_payment->balance_transaction;
print_r($balance_transaction_eu);

您还可以通过在进行转移时获取相关数据来简化这一点:

$t = \Stripe\Transfer::create([
  "amount" => 400,
  "currency" => "eur",
  "destination" => "acct_1EPRDuFk3qO2dNo1",
  'expand' => ['destination_payment.balance_transaction']
]);
$balance_transaction_eu = $t->destination_payment->balance_transaction;
print_r($balance_transaction_eu);

推荐阅读