#laravel #stripe-payments #laravel-cashier
#laravel #stripe-платежи #laravel-кассир
Вопрос:
Я получаю недопустимый платежный шлюз, даже если я получаю идентификатор способа оплаты в серверной части. Я пытаюсь сделать это из Индии, поэтому в соответствии с индийскими правилами я должен указать адрес и имя при совершении платежа. Я предполагаю, что я не могу интегрировать эту часть здесь. пожалуйста, помогите мне, это заняло у меня весь день, и все еще не решено.
$user = auth()->user();
$paymentMethod = $request->payment_method;
$planId = $request->plan;
$city="my city";
$country="India";
$address="user address"
$zipCode="111111";
$state="Maharashtra";
$user->createOrGetStripeCustomer([
'email' => $user->email,
'name' => 'test',
'description' => 'test description',
"address" => ["city" => $city, "country" => $country, "line1" => $address, "line2" => "", "postal_code" => $zipCode, "state" => $state]
]);
$user->newSubscription('main', $planId)->create($paymentMethod);
return response([
'success_url'=> redirect()->intended('/')->getTargetUrl(),
'message'=>'success'
]);
Это код интерфейса
window.addEventListener('load', function() {
const stripe = Stripe('{{env('STRIPE_KEY')}}');
const elements = stripe.elements();
const cardElement = elements.create('card');
cardElement.mount('#card-element');
const cardHolderName = document.getElementById('card-holder-name');
const cardButton = document.getElementById('card-button');
const clientSecret = cardButton.dataset.secret;
const plan = document.getElementById('subscription-plan').value;
cardButton.addEventListener('click', async (e) => {
const { setupIntent, error } = await stripe.handleCardSetup(
clientSecret, cardElement, {
payment_method_data: {
billing_details: { name: cardHolderName.value }
}
}
);
if (error) {
// Display "error.message" to the user...
} else {
// The card has been verified successfully...
console.log('handling success', setupIntent.payment_method);
axios.post('/subscribe',{
payment_method: setupIntent.payment_method,
plan : plan
}).then((data)=>{
location.replace(data.data.success_url)
});
}
});
})
моя версия кассира 10.3
Я также пробовал использовать live keys. Он показывает те же ошибки. Кто-нибудь может мне помочь?
Комментарии:
1. Какую точную ошибку вы получаете? Вы также используете устаревший stripe.js метод. Вы должны использовать
confirmCardSetup
вместоhandleCardSetup
: stripe.com/docs/js/setup_intents/confirm_card_setup2. Я получаю неверный способ оплаты. Больше ничего нет.
Ответ №1:
Согласно индийским правилам, только зарегистрированные индийские предприятия (т. Е. Индивидуальные предприниматели, товарищества с ограниченной ответственностью и компании, но не физические лица) могут принимать международные платежи. Дополнительная информация здесь: https://stripe.com/docs/india-exports
Таким образом, тест не будет работать с картой 4242 4242 4242 4242 4242 с учетной записью Indian stripe без зарегистрированного бизнеса… эта штука убила мои 3 часа..