Буквально пару дней назад прикручивал пэйпаловские Encrypted Website Payments (это такое шифрование + ЭЦП передаваемой информации, иначе можно подделать форму и купить любой товар по кнопке buy it now за один цент), так без геморроя тоже не обошлось. PayPal предлагает использовать для этих целей «библиотеку», написанную на java в 2004 году криворукими программистами. Мало того что дают по сути кривые исходники, которые ещё нужно правильно скомпилировать, эта штука тянет за собой 27 метровую библиотеку (хотя на деле из неё нужны 4 файла) и требует патча jre! На официальном форуме было несколько топиков по этой проблеме, но готового решения ни в одном не было. В итоге пришлось провозиться 2 полных дня с этой ерундой, прежде чем получился рабочий вариант. Казалось бы крупная компания, а о своих клиентах-разработчиках совсем не заботится…
>иначе можно подделать форму и купить любой товар по кнопке buy it now за один цент)
как пишут сотрудники пейпала, это «не проблема». Достаточно сверять атрибуты платежа и в случае подмены на стороне клиента запросить refund. На практике это, конечно, совершенно лишний геморрой.
Вот что им мешало сделать хотя бы простенькое шифрование данных платежной формы на стороне мерчанта в виде md5 + закрытый ключ :(
Кому интересно, кратко, коммент из paypal/api/adaptive.py:
PayPal Adaptive Payments API.
Links:
https://www.x.com/docs/DOC-1419 Preapproval API Operation
https://www.x.com/message/157029#157029 Preapproval approve by user
https://www.x.com/docs/DOC-1421 PreapprovalDetails API Operation
https://www.x.com/docs/DOC-1414 Pay API Operation
Manual:
For make preapproval payments we call `Preapproval API` and get preapprovalKey.
We redirect user to https://www.sandbox.paypal.com/webscr?cmd=_ap-preapproval&preapprovalkey={{ preapprovalKey }}
When we need to make pay, we get senderEmail by `PreapprovalDetails API` call. Then we call
`Pay API` whith preapprovalKey and senderEmail.
Тестирование PayPal Direct Recurring Payments. Проходилка квеста