Страйп /v1/payment_pages/id/подтверждение

Вопрос или проблема

Я использую Stripe с React на своем сайте, но каждый раз, когда я завершаю оформление заказа, появляется следующее:

Ваша кредитная карта была отклонена. В качестве альтернативы попробуйте оплатить дебетовой картой.

Не имеет значения, что я делаю, я уже поменял карту, поменял email, ввел дебетовую карту, и ничего…

Примечание: в тестовом режиме все работает, но в рабочем режиме это именно так:\

Я получаю этот код ошибки:

402 POST/v1/payment_pages/cs_live/confirm

"error": 
"charge": 
"ch_",
"code": 
"card_declined",
"decline_code": 
"generic_decline",
"doc_url": 
"https://stripe.com/docs/error-codes/card-declined",
"extra_fields": {
"recommended_payment_method": 
"debit_card",
},
"message": 
"Ваша карта была отклонена.",
"payment_method": {… 9 items},
"request_log_url": 
"https://dashboard.stripe.com/logs/req_",
"type": 
"card_error",
},
}

```
`const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const stripe = require('stripe')('sk_live');

const app = express();
const endpointSecret="whsec_";
const YOUR_DOMAIN = 'https://quimplo.online';

app.use(cors());

app.use(bodyParser.raw({
    type: 'application/json'
}));

app.use(express.json()); // Создать сессию оформления заказа 
app.post('/create-checkout-session', async (req, res) => { 
try { 
const session = await stripe.checkout.sessions.create({ 
line_items: [
 {
 price: 'price_', quantity: 1, },
 ],
 mode: 'payment', 
success_url: ${YOUR_DOMAIN}/success?session_id={CHECKOUT_SESSION_ID}, 
cancel_url: ${YOUR_DOMAIN}?canceled=true, });

res.json({
    url: session.url
});
}
catch (error) {
    console.error('Ошибка при создании сессии оформления заказа:', error);
    res.status(500).send('Внутренняя ошибка сервера');
}

});

// Функция обработки async function fulfillCheckout(sessionId) { console.log('Обработка сессии оформления заказа ' + sessionId);

const checkoutSession = await stripe.checkout.sessions.retrieve(sessionId, {
    expand: ['line_items'],
});

if (checkoutSession.payment_status === 'paid') {

    console.log(`Сессия оформления заказа ${sessionId} завершена.`);
} else {
    console.log(`Сессия оформления заказа ${sessionId} не завершена, потому что платеж не завершен.`);
}

}

app.post('/webhook', async (request, response) => {
    const payload = request.body;
    const sig = request.headers['stripe-signature'];

    let event;

    try {
        event = stripe.webhooks.constructEvent(payload, sig, endpointSecret);
    } catch (err) {
        return response.status(400).send(`Ошибка вебхука: ${err.message}`);
    }

    // Обработка событий платежа
    if (event.type === 'checkout.session.completed' || event.type === 'checkout.session.async_payment_succeeded') {
        await fulfillCheckout(event.data.object.id);
    }
    switch (event.type) {
        case 'payment_intent.succeeded':
            const paymentIntent = event.data.object;
            console.log('PaymentIntent был успешным!');
            break;
        case 'payment_intent.payment_failed':
            const paymentFailedIntent = event.data.object;
            console.log('PaymentIntent не удался:', paymentFailedIntent.last_payment_error.message);
            break;
        default:
            console.log(`Необработанный тип события ${event.type}`);
    }

    response.status(200).end();

});

app.listen(4242, () => console.log('Запуск на порту 4242'));`

```

Ответ или решение

Ваш вопрос касается проблемы отклонения платежей при использовании Stripe в режиме реального времени с React. Ошибка "Your credit card has been declined" сообщает о том, что ваша кредитная карта была отклонена, что может возникать по различным причинам. Давайте рассмотрим возможные причины и решение этой проблемы по шагам.

Возможные причины отклонения платежей:

  1. Проблемы с картой:

    • Убедитесь, что карта активна и имеет достаточный баланс.
    • Некоторые карты могут иметь ограничения на международные транзакции.
  2. Ошибки ввода:

    • Проверьте правильность введенных данных (номер карты, дата истечения, CVV).
  3. Ограничения банка:

    • Некоторые банки могут отклонять транзакции по подозрительным причинам. Рекомендуется обратиться в банк за разъяснениями.
  4. Проблемы с конфигурацией Stripe:

    • Убедитесь, что вы использовали правильные ключи API, особенно в режиме реального времени. Ваша строка const stripe = require('stripe')('sk_live'); должна содержать ваш действительный секретный ключ Stripe для рабочего окружения.

Рассмотрение кода

Ваш код на сервере в целом выглядит корректно, но есть несколько моментов, которые стоит уточнить:

  • Webhook конфигурация:
    Убедитесь, что ваш вебхук настроен правильно в панели управления Stripe и ваш endpointSecret правильный.

  • Обработка ошибок:
    Возможно, вам стоит добавить более подробную обработку ошибок, чтобы отслеживать, почему транзакции могут быть отклонены.

Дополнительные рекомендации

  1. Тестовые карты:
    При тестировании в вашем приложении в тестовом режиме Stripe также предоставляет специальные тестовые номера карт, которые вы можете попробовать, чтобы убедиться, что интеграция работает правильно.

    Вот пример тестовой карты:

    • Номер карты: 4242 4242 4242 4242
    • Срок действия: любой будущий месяц/год
    • CVV: любые 3 цифры
  2. Логи Stripe:
    Проверьте логи вашей учетной записи в Stripe для получения дополнительной информации об ошибках. Вы можете посмотреть логи запросов по URL, который вы указали в выводе ошибки: https://dashboard.stripe.com/logs/req_.

  3. Документация:
    Обратите внимание на документацию Stripe по ошибкам, чтобы понять дополнительные коды отклонений и рекомендации по их исправлению.

Заключение

Если после всевозможных проверок проблема все еще сохраняется, рекомендуется обратиться в службу поддержки Stripe с деталями вашей проблемы, включая код ошибки и логи запроса, чтобы получить профессиональную помощь. Надеюсь, что эти рекомендации помогут вам решить вашу проблему с платежами.

Оцените материал
Добавить комментарий

Капча загружается...