Stripe::setApiKey("sk_test_j26LHmQkliAum0N5KRNG9gVG");
$token = Stripe::tokens()->create([
'card' => [
'number' => '4242424242424242',
'exp_month' => '11',
'cvc' => '123',
'exp_year' => '2021',
],
]);
$charge = \Stripe::charges()->create([
"amount" => 10,
"currency" => "usd",
"source" => $token['id'],
"destination" => array(
"amount" => 8,
"account" => "acct_19xa8WLv4n7LNSRg",
),
]);
$transfer = Stripe::transfers()->create([
"amount" => 8,
"currency" => "usd",
"source_transaction" => $charge['id'],
"destination" => "acct_19xa8WLv4n7LNSRg",
]);
我们需要在两个目标帐户中发送付款,但是它会在setApiKey帐户中发送所有付款。
答案 0 :(得分:3)
首先,您永远不应该创建卡令牌服务器端。这意味着您获得了服务器上的卡号,这些卡号会产生严重的PCI compliance影响。
您应该使用Elements或Stripe Checkout客户端直接将卡详细信息发送给Stripe并获取一个唯一的卡令牌(tok_XXX),然后您将其安全地发送到您的服务器创造充电。
至于错误,您的代码在此处传输金额两次。首先,您创建0.10美元的费用并自动将0.08美元转移到关联的帐户,然后再次以0.08美元的价格创建一个新的转帐到同一帐户。
由于您无法转移超过原始费用金额,因此在这种情况下,它会将全部0.10美元转帐到关联帐户。
您需要在此处更正多项内容:
*你应该以美分计算金额。要收取10美元的费用,您将通过amount: 1000
。
*如果您要将资金发送到其他帐户,您希望在转移创建中传递其他帐户ID 。
*如果您要将资金转移到多个帐户,您希望在没有destination
的情况下在平台上创建费用。而是使用transfer_group
作为记录here。
您可能希望直接与Stripe的支持小组讨论后续问题,因为这更多是关于他们的产品而不是代码。