2015-06-16 1 views
1

Итак, у меня есть приложение API REST API Python, которое принимает платежи. Я создаю объект Payment и перенаправляю пользователя на PayPal. Когда они возвращаются я:После выполнения оплаты в REST API PayPal иногда я не получаю адрес электронной почты

payment = Payment.find(trans_id) 
payment.execute({ "payer_id": payer_id }) 

Если это успешно, я получаю адрес электронной почты плательщика, как:

payer_info = payment.payer.payer_info.to_dict() 
email = payer_info['email'] 

Это прекрасно работает, за исключением иногда это не так! Иногда (фактически только один раз) я получаю плательщик, у которого нет адреса электронной почты. Как это возможно? Это что-то, что должен ожидать мой код? Система, в которой я работаю, нуждается в электронном письме в качестве первичного ключа для нашей пользовательской базы данных, поэтому это довольно сложно удовлетворить.

Спасибо за любую помощь!

+0

Еще более нечетного - когда я загружаю этот объект Платежного теперь плательщик прилагается письмо. Так может быть, это была ошибка от PayPal, которая не повторится? – samtregar

+0

Это произошло дважды, и оба раза электронная почта теперь доступна, когда я проверяю, но не сразу после того, как пользователь вернулся из PayPal. – samtregar

+0

Ну, это возможно для учетной записи PayPal, у которой нет адреса электронной почты. По крайней мере в некоторых юрисдикциях (странах) вы можете зарегистрироваться только с номером телефона, а другие типы «ручек» или адресов технически возможны. Тем не менее, вы всегда должны возвращать уникальный идентификатор. – geewiz

ответ

0

Даже если этот вопрос составляет 1 год, это все еще кажется проблемой с текущим API-интерфейсом Paypal REST: иногда поле электронной почты просто не отображается.

К сожалению, я не могу предоставить решение, поскольку я столкнулся с одной и той же проблемой, но у меня есть хотя бы небольшое предположение: частота этого явления несколько увеличилась с тех пор, как я попытался получить электронную почту ПЕРЕД выполнением платежа; когда я переместил запрос ПОСЛЕ платежа, это событие стало значительно реже; наконец, в тех немногих случаях, когда это все еще происходит, быстрый просмотр журнала платежей показал правильные адреса электронной почты, как и ожидалось, поэтому они не кажутся «особыми» платежами в PayPal.

Мне кажется, что поле электронной почты просто «медленно» появляется, даже если система должным образом ожидает каждого ответа от сервера paypal ... Я попытаюсь решить эту проблему, добавив повторенную попытку в случай отказа, чтобы дать несколько дополнительных секунд серверу PayPal, чтобы ответить ... но если бы кто-то более опытный, чем я, мог бы дать более солидное мнение по этому вопросу, который был бы очень признателен!

пс: на самом деле моя платформа использует последнюю последнюю версию официального PayPal PHP SDK