Paypal API – checkout.js – ошибка анализа ответа

Я реализовал этот API в своем приложении Angular. Проблема в том, что когда я ввожу неправильный адрес доставки, API выдает ошибку:

Uncaught Error: Произошла ошибка при обработке ошибки Ошибка: запрос на публикацию www.sandbox.paypal.com/v1/payments/payment не выполнен с ошибкой 400. Идентификатор корреляции: 3b331f9eaafa4, 3b331f9eaafa4

{ "name": "VALIDATION_ERROR", "details": [ { "field": "city", "issue": "Недопустимое значение" }, { "field": "state", "issue": "Значение invalid" }, { "field": "zip", "issue": "Недопустимое значение" } ], "message": "Неверный запрос — см. подробности", "information_link": "developer.paypal.com/docs/ API/платежи/#errors", "debug_id": "3b331f9eaafa4" }

Как разобрать ошибку, чтобы показать предупреждение с текстом ошибки? Это не JSON, поэтому я не знаю, как его разобрать.


person Angry Beaver    schedule 30.08.2018    source источник
comment
на самом деле это JSON, так почему вы утверждаете, что это не JSON? отображение этих ошибок может быть неправильным подходом. лучше не отправлять, пока город и штат не были указаны... или используйте Войти через PayPal, чтобы уже знать адрес доставки по умолчанию в файле.   -  person Martin Zeitler    schedule 30.08.2018
comment
город и штат, где они не указаны. Да, это: США, Сан-Хосе, Колорадо, 1, Мейн-стрит, 95131. Проблема в Колорадо, а должна быть в Калифорнии, и это вызывает ошибку. Вполне возможно, что клиент заполняет неправильный штат или почтовый индекс. В этом случае он просто перестает работать, и мне нужно показать, что не так.   -  person Angry Beaver    schedule 30.08.2018


Ответы (2)


Это решение:

let res = error.message.match(/{([\s\S]*?)^}/gm);
console.log( JSON.parse( res[0] ) )

Это даст JSON для работы.

person Angry Beaver    schedule 30.08.2018

Используйте регулярное выражение для сопоставления JSON, а затем проанализируйте его в JSON, используя JSON.parse. После этого вы можете использовать поля message и details, которые содержат информацию, связанную с ошибкой.

var jsonString = errmsg.match(/\{.*\}/gm);

var jsonObj = JSON.parse(jsonString);

Надеюсь это поможет.

person Sumugan Swaroop    schedule 30.08.2018
comment
Это полная ошибка: Ошибка: Ошибка: запрос на публикацию sandbox.paypal.com/v1/payments/payment не выполнен с ошибкой 400. Идентификатор корреляции: a7e0f78da1be, a7e0f78da1be {имя: VALIDATION_ERROR, подробности: [{поле: город, проблема: значение недействительно}]} (www.paypalobjects.com/api/checkout.js:14010:39) (www.paypalobjects.com /api/checkout.js:2569:31) Как видите, это НЕ JSON, это объект. - person Angry Beaver; 30.08.2018