PayPal Adaptive Payments - разделение платежа между бэкэндом и клиентом
Я использую адаптивные платежи PayPals для обработки цепочек платежей. Я могу успешно получить ключ предварительного утверждения, позвонив по https://svcs.paypal.com/AdaptivePayments/Preapproval.
Насколько я понимаю, при заполнении запроса на оплату ( https://svcs.paypal.com/AdaptivePayments/Pay) вы можете добавить param &preapprovalkey=PA-a891asnk, чтобы выполнить неявную авторизацию и запретить пользователю вводить свои учетные данные и оплата будет автоматически завершена.
Мой вопрос: можно ли разделить процесс оплаты? Другими словами, у меня есть серверный процесс, который уже имеет логику для создания получателей и сумм, и он вызывает 'pay' и возвращает paymentKey. Если предварительное утверждение еще не было, этот paymentKey будет передан в перенаправление, и пользователь введет свои учетные данные. Могу ли я сохранить этот процесс на сервере, а затем просто перезвонить PayPal, передавая как paymentKey, так и preapprovalKey, и выполнить неявную авторизацию?
Когда я попробовал это, он не прошел проверку, утверждая, что receiveList не может быть нулевым. Я думал, что у paymentKey будет эта деталь, и я могу просто "одобрить", используя мой ключ предварительного утверждения.
Я понимаю, что многие люди просто спрашивают, почему я не хочу этого во время одного звонка, но я хочу сохранить анонимность между сторонами и оставить эту логику на сервере, и чтобы клиент просто сделал окончательное "одобрение"
Возможный?
1 ответ
Это работает так, что вы будете звонить в Preapproval, чтобы ваш плательщик мог создать профиль Preapproval. Вы должны сохранить этот предварительно утвержденный идентификатор в вашей системе вместе с данными этого пользователя.
При отправке отложенного связанного платежа для этого пользователя вы должны вызывать API оплаты с включенным идентификатором предварительного утверждения и значением действия PAY_PRIMARY. Вот что делает его отсроченным. Однако вы бы включили в этот запрос данные основного и дополнительного получателя.
При установленном параметре PAY_PRIMARY средства будут поступать только первичному получателю. Затем вы должны были бы вызвать API-интерфейс ExecutePayment, чтобы при необходимости вызвать вторичный платеж.