Мы используем элементы «платеж» полосовых элементов для подписки, которая является отличным для обычных случаев. Но автоматическое продление не работает для карт с поддержкой 3DS. Пожалуйста, найдите мой код ниже. Мы не уверены, что мы пропустили.setup_future_usage: 'off_session',
automatic_payment_methods: { enabled: true },
Ниже приведен код, используемый во время автоматического виностроения
php-код
public function stripeElementAutoRenewPayment($user_id, $brand_data, $card_src, $final_price, $secretKey) {
$response = [];
$output = null;
$stripe = new \Stripe\StripeClient($secretKey);
$return_url = "https://" . $brand_data->domain_name . "/subscriptions/payment-subscription.html";
$error = '';
// Create PaymentIntent with amount, currency and description.
$paymentIntent = $stripe->paymentIntents->create([
'amount' => $final_price,
'currency' => 'USD',
'description' => $brand_data->brand_name . "-AUTORENEW-" . $user_id,
'payment_method' => 'pm_card_threeDSecure2Required',
'customer' => $card_src['customer_id'],
'confirm' => true,
'off_session' => true
]);
js code:
let obj = CheckoutModule.getCheckoutData();
Helpers.CommonUtils.commonGateway('POST', '/v1/orders/createpaymentintent', obj, stripeInitCallback );
function stripeInitCallback(res) {
if (res.code == 1 && res.status == 1) {
let clientSecret = res.results.client_secret;
elements = stripe.elements({ clientSecret });
const paymentElement = elements.create("payment", {
layout: "tabs",
});
paymentElement.mount("#payment-element");
}
}
$("#pay-now-button").on('click', async function (event) {
event.preventDefault();
//payNowButton.disabled = true;
if (payForm.valid()) {
payNowButton.prop('disabled', true);
console.log('payForm.valid', payForm.valid())
const { error, paymentIntent } = await stripe.confirmPayment({
elements,
redirect: 'if_required' // Optional
});
console.log("----paymentIntent---"+JSON.stringify(paymentIntent));
if (error) {
$("#order-resp-msg").addClass("alert-danger").removeClass("hide").text(error.message);
console.log('error', error);
payNowButton.prop('disabled', false);
$("#submitOrder, #pay-now-button").text('Confirm and Pay');
} else {
payNowButton.prop('disabled', true);
console.log("----paymentIntent---"+JSON.stringify(paymentIntent)+"----"+paymentIntent.id)
const payment_id = paymentIntent.id;
$("#submitOrder, #pay-now-button").text('PROCESSING ORDER...');
if (localStorage.getItem('l4-utoken')) {
let obj = {};
obj.email = localStorage.getItem('l4-uemail') || $('form#userLoginForm input#emailAddress').val();
obj.log = "Add Order from page";
obj.data = "";
obj.domain = CheckoutModule.brandDomain;
obj.type = "ADD_ORDER";
Helpers.CommonUtils.commonGateway('POST', '/v1/orders/stripepaymentlog', obj, CheckoutModule.createOrderCallback);
CheckoutModule.submitOrder(payment_id);
} else {
let obj = {};
obj.email = localStorage.getItem('l4-uemail') || $('form#userLoginForm input#emailAddress').val();
obj.log = "Add Anonymous Order from page";
obj.data = "";
obj.domain = CheckoutModule.brandDomain;
obj.type = "ADD_ANON_ORDER";
Helpers.CommonUtils.commonGateway('POST', '/v1/orders/stripepaymentlog', obj, CheckoutModule.createOrderCallback);
CheckoutModule.submitAnonOrder(payment_id);
}
// handler(paymentIntent);
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... -3ds-cards
Автопродление не работает с картами 3DS Elements. ⇐ Jquery
Программирование на jquery
-
Anonymous
1750166621
Anonymous
Мы используем элементы «платеж» полосовых элементов для подписки, которая является отличным для обычных случаев. Но автоматическое продление не работает для карт с поддержкой 3DS. Пожалуйста, найдите мой код ниже. Мы не уверены, что мы пропустили.setup_future_usage: 'off_session',
automatic_payment_methods: { enabled: true },
Ниже приведен код, используемый во время автоматического виностроения
[b] php-код [/b]
public function stripeElementAutoRenewPayment($user_id, $brand_data, $card_src, $final_price, $secretKey) {
$response = [];
$output = null;
$stripe = new \Stripe\StripeClient($secretKey);
$return_url = "https://" . $brand_data->domain_name . "/subscriptions/payment-subscription.html";
$error = '';
// Create PaymentIntent with amount, currency and description.
$paymentIntent = $stripe->paymentIntents->create([
'amount' => $final_price,
'currency' => 'USD',
'description' => $brand_data->brand_name . "-AUTORENEW-" . $user_id,
'payment_method' => 'pm_card_threeDSecure2Required',
'customer' => $card_src['customer_id'],
'confirm' => true,
'off_session' => true
]);
[b] js code: [/b]
let obj = CheckoutModule.getCheckoutData();
Helpers.CommonUtils.commonGateway('POST', '/v1/orders/createpaymentintent', obj, stripeInitCallback );
function stripeInitCallback(res) {
if (res.code == 1 && res.status == 1) {
let clientSecret = res.results.client_secret;
elements = stripe.elements({ clientSecret });
const paymentElement = elements.create("payment", {
layout: "tabs",
});
paymentElement.mount("#payment-element");
}
}
$("#pay-now-button").on('click', async function (event) {
event.preventDefault();
//payNowButton.disabled = true;
if (payForm.valid()) {
payNowButton.prop('disabled', true);
console.log('payForm.valid', payForm.valid())
const { error, paymentIntent } = await stripe.confirmPayment({
elements,
redirect: 'if_required' // Optional
});
console.log("----paymentIntent---"+JSON.stringify(paymentIntent));
if (error) {
$("#order-resp-msg").addClass("alert-danger").removeClass("hide").text(error.message);
console.log('error', error);
payNowButton.prop('disabled', false);
$("#submitOrder, #pay-now-button").text('Confirm and Pay');
} else {
payNowButton.prop('disabled', true);
console.log("----paymentIntent---"+JSON.stringify(paymentIntent)+"----"+paymentIntent.id)
const payment_id = paymentIntent.id;
$("#submitOrder, #pay-now-button").text('PROCESSING ORDER...');
if (localStorage.getItem('l4-utoken')) {
let obj = {};
obj.email = localStorage.getItem('l4-uemail') || $('form#userLoginForm input#emailAddress').val();
obj.log = "Add Order from page";
obj.data = "";
obj.domain = CheckoutModule.brandDomain;
obj.type = "ADD_ORDER";
Helpers.CommonUtils.commonGateway('POST', '/v1/orders/stripepaymentlog', obj, CheckoutModule.createOrderCallback);
CheckoutModule.submitOrder(payment_id);
} else {
let obj = {};
obj.email = localStorage.getItem('l4-uemail') || $('form#userLoginForm input#emailAddress').val();
obj.log = "Add Anonymous Order from page";
obj.data = "";
obj.domain = CheckoutModule.brandDomain;
obj.type = "ADD_ANON_ORDER";
Helpers.CommonUtils.commonGateway('POST', '/v1/orders/stripepaymentlog', obj, CheckoutModule.createOrderCallback);
CheckoutModule.submitAnonOrder(payment_id);
}
// handler(paymentIntent);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79669166/auto-renew-not-wokring-with-stripe-elements-3ds-cards[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия