![](/img/trans.png)
[英]Transfer amount into customer's bank account using Stripe Payout API
[英]Initiate a payout to bank account using Stripe payment gateway
我正在為移動應用程序實現REST API,我需要在其中實現功能以直接向客戶付款到他們的銀行帳戶中。 我已經集成了Stripe付款網關,以完成付款過程,該過程提供了向連接的Stripe帳戶的銀行帳戶或借記卡發起付款的功能。
<?php
require_once('vendor/autoload.php');
\Stripe\Stripe::setApiKey("sk_test_tD8Pxvmv2sOhucPuhqvPDvSP");
$error = '';
$success = '';
if ($_POST) {
try {
if (!isset($_POST['stripeToken']))
throw new Exception("The Stripe Token was not generated correctly");
$payment_result=\Stripe\Charge::create(array("amount" => 2000,
"currency" => "usd",
"card" => $_POST['stripeToken']));
$success = 'Your payment was successful.';
}
catch (Exception $e) {
$error = $e->getMessage();
}
}
try{
$Account=\Stripe\Account::create(array(
"type" => "custom",
"country" => "US",
"email" => "demo3455675666gfg5@info.com"
));
if($Account!=NULL){
$TokenInfo=\Stripe\Token::create(array(
"bank_account" => array(
"country" => "US",
"currency" => "usd",
"account_holder_name" => "Mason Wilson",
"account_holder_type" => "individual",
"routing_number" => "110000000",
"account_number" => "000123456789"
)
));
$external_account_info=$Account->external_accounts->create(array("external_account" => $TokenInfo->id));
$payout_response=\Stripe\Payout::create(array(
"amount" => 400,
"currency" => "usd",
"destination"=>$external_account_info->id
));
}
}
catch(Exception $e)
{
echo $e->getMessage();exit;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Stripe Getting Started Form</title>
<script type="text/javascript" src="https://js.stripe.com/v1/"></script>
<!-- jQuery is used only for this example; it isn't required to use Stripe -->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
// this identifies your website in the createToken call below
Stripe.setPublishableKey('pk_test_W2y6W7HcwlV02a8MuCQUHnDn');
function stripeResponseHandler(status, response) {
if (response.error) {
// re-enable the submit button
$('.submit-button').removeAttr("disabled");
// show the errors on the form
$(".payment-errors").html(response.error.message);
} else {
var form$ = $("#payment-form");
// token contains id, last4, and card type
var token = response['id'];
// insert the token into the form so it gets submitted to the server
form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />");
// and submit
form$.get(0).submit();
}
}
$(document).ready(function() {
$("#payment-form").submit(function(event) {
// disable the submit button to prevent repeated clicks
$('.submit-button').attr("disabled", "disabled");
// createToken returns immediately - the supplied callback submits the form if there are no errors
Stripe.createToken({
number: $('.card-number').val(),
cvc: $('.card-cvc').val(),
exp_month: $('.card-expiry-month').val(),
exp_year: $('.card-expiry-year').val()
}, stripeResponseHandler);
return false; // submit from callback
});
});
</script>
</head>
<body>
<h1>Charge $10 with Stripe</h1>
<!-- to display errors returned by createToken -->
<span class="payment-errors"><?= $error ?></span>
<span class="payment-success"><?= $success ?></span>
<form action="" method="POST" id="payment-form">
<div class="form-row">
<label>Card Number</label>
<input type="text" size="20" autocomplete="off" class="card-number" />
</div>
<div class="form-row">
<label>CVC</label>
<input type="text" size="4" autocomplete="off" class="card-cvc" />
</div>
<div class="form-row">
<label>Expiration (MM/YYYY)</label>
<input type="text" size="2" class="card-expiry-month"/>
<span> / </span>
<input type="text" size="4" class="card-expiry-year"/>
</div>
<button type="submit" class="submit-button">Submit Payment</button>
</form>
</body>
</html>
在執行上述代碼段后,它會產生一個錯誤,指出
沒有這樣的外部帳戶:ba_1CHYY2DVYgPG6LmYtQdcu53B
請為我提供一個使用Stripe付款網關向銀行帳戶付款的合適解決方案。
您的呼叫,建立支出是失敗,因為你正在執行它在你的條紋帳戶,而不是連接條紋帳戶。
您需要在付款呼叫中添加一個Stripe-Account標頭 ,因為銀行帳戶是連接到關聯帳戶而不是您自己的Stripe帳戶的。
$payout_response=\Stripe\Payout::create(array(
"amount" => 400,
"currency" => "usd",
"destination"=>$external_account_info->id
),
array("stripe_account"=>$Account->id)
);
請參閱此處以獲取有關此https://stripe.com/docs/connect/authentication#stripe-account-header的更多信息
退一步,支付到銀行帳戶的資金來自Connect帳戶的余額。 要將資金存入關聯帳戶的余額中,您需要使用此處描述的方法之一,最有可能的是您將使用目標費用或單獨的費用和轉帳
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.