Спецификация перехвата c ошибка на Stripe PHP для отображения пользовательского сообщения - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть платежный шлюз Stripe с данными кредитной карты для ввода.

Он работает нормально, но есть одно сообщение об ошибке, которое мне не нравится, но я не достаточно продвинут в PHP, чтобы исправить это.

function stripeResponseHandler(status, response) {
            if (response.error) {
                // Enable the submit button
                $('#payBtn').removeAttr("disabled");
                // Display the errors on the form

                $(".payment-status").html('<p>'+response.error.message+'</p>');

            } else {
                var form$ = $("#paymentFrm");
                // Get token id
                var token = response.id;
                // Insert the token into the form
                form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />");

                // Submit form to the server
                form$.get(0).submit();
            }
        }

Это перехватывает ошибки и отображает response.error.message

Эти ошибки хороши, за исключением того, что вы записываете несколько чисел в срок действия вместо мм / гг.

возвращается ошибка:

Параметр exp_year должен быть целым числом (вместо 20 не определено).

I Я не знаю достаточно об этом языке, но я хочу уловить эту указанную c ошибку и просто сказать что-то вроде «Дата истечения срока указана неверно, введите как MM / YY»

Я пытался сделать оператор if читать response.error.message, но я не знал, как правильно отформатировать. Я попытался также найти error.code вместо сообщения для использования, однако появляется код invalid_number, но если я использую его в операторе IF, он ссылается на все недопустимые номера всех полей (включая номер карты), поэтому мое заявление об истечении явно неверно в эта ситуация!

1 Ответ

1 голос
/ 06 апреля 2020

Это на самом деле JavaScript, а не PHP. Возможно, у вас есть этот код в файле PHP где-то, что вы рендерите на сервере, но это код JavaScript, который будет выполняться на клиенте.

Похоже, вы используете Stripe. js v2 для вашей интеграции. Это не рекомендуется, так как Stripe. js v2 устарела. Вместо этого вы должны использовать Stripe Elements , который будет обрабатывать все проверки, которые вы здесь для вас.

Приведенная выше ссылка показывает вам, как создавать платежи с помощью PaymentIntents, новейшей и наиболее многофункциональной API от Stripe. Однако если вы хотите продолжить использовать Charge API, вы можете увидеть, как использовать его с Elements здесь: https://stripe.com/docs/payments/accept-a-payment-charges

...