Я пытаюсь реализовать намерение оплаты чередованием для прямых сборов
, как показано здесь на странице документов
https://stripe.com/docs/connect/direct-charges
Что я сделал, это забрал существующий код из GitHub, который реализуетспособ оплаты, но не для прямых платежей.
см. здесь
https://github.com/fujahgabriel/stripepaymentintent/blob/master/index.html
Javascript
<script>
// Stripe API Key
var stripe = Stripe('#############');
// clientSecret to complete payment
var clientSecret;
// paymentIntent id --- using to update
var paymentIntent;
var amount = 10000; //i.e 20GBP
// create initial payment intent, get client secret
$.getJSON("intent.php", {
"amount": amount
}, function(data) {
clientSecret = data.client_secret;
paymentIntent = data.id;
});
// set up stripe.js
var elements = stripe.elements();
// Custom Styling
var style = {
base: {
color: '#32325d',
lineHeight: '24px',
fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
fontSmoothing: 'antialiased',
fontSize: '16px',
'::placeholder': {
color: '#aab7c4'
}
},
invalid: {
color: '#fa755a',
iconColor: '#fa755a'
}
};
// Create an instance of the card Element
var card = elements.create('card', {
hidePostalCode: true,
style: style
});
// Add an instance of the card Element into the `card-element` <div>
card.mount('#card-element');
// Handle real-time validation errors from the card Element.
card.addEventListener('change', function(event) {
var displayError = document.getElementById('card-errors');
if (event.error) {
displayError.textContent = event.error.message;
} else {
displayError.textContent = '';
}
});
// on button click
$("#cbutton").on('click', function(ev) {
$(this).prop("disabled", true);
$('#process').show();
stripe.handleCardPayment(
clientSecret, card).then(function(result) {
if (result.error) {
// Display error.message in your UI.
$("#card-errors").text(result.error.message);
// Re-enable button
$('#process').hide();
$("#cbutton").removeAttr("disabled");
console.log(result.error);
} else {
$('#process').hide();
alert('success');
location.reload();
// The payment has succeeded. Display a success message.
//console.log(result);
}
});
});
</script>
затем php Я пытаюсь внести коррективы с
$getIntent = \Stripe\PaymentIntent::create([
"amount" =>$amount,
"currency" => "eur",
"description" => "Test Payment" ,
'payment_method_types' => ['card'],
]);
$intent = \Stripe\PaymentIntent::retrieve($getIntent->id);
echo json_encode(["status"=>"ok","id"=>$intent->id,"client_secret"=>$intent->client_secret,"amount"=>$intent->amount,"currency"=>$intent->currency]);
TO
$getIntent = \Stripe\PaymentIntent::create([
'payment_method_types' => ['card'],
"amount" =>$amount,
"currency" => "eur",
"description" => "Test Payment" ,
], ['stripe_account' => '#########']);
$intent = \Stripe\PaymentIntent::retrieve($getIntent->id);
echo json_encode(["status"=>"ok","id"=>$intent->id,"client_secret"=>$intent->client_secret,"amount"=>$intent->amount,"currency"=>$intent->currency]);
Но теперь я получаю эту ошибку
IntegrationError: Неверное значение для намеренного секрета stripe.handleCardPayment: значение должно быть строкой client_secret. Вы указали: не определено.
Пожалуйста, в чем может быть причина, пожалуйста, я застрял здесь
Пожалуйста, обратите внимание, что это решение работало для сборов назначения, оно не работало для прямых сборов