В общей практике:
Содержимое и значения в SetExpressCheckout должны совпадать с DoExpressCheckoutPayment в пределах разрешенной области (вам разрешено изменять значения и позиции покупки для пользователя ... в пределах разумного).
Почему он не жаловался:
Причина, по которой он, вероятно, не полностью жаловался, заключается в том, что разница между «демонстрационными данными» и «фактическими» была в пределах допустимого для продавца изменения. И он просто принял различия для последней транзакции (за исключением того, что, как вы отметили, код валюты не может быть изменен!).
Смотрите, когда вы изначально отправляете пользователя на PayPal с такой информацией, как:
- Купить товар # 4
- за $ 9,99
- USD
Тогда этот пользователь «соглашается с этими условиями и авторизует транзакцию». Вы получаете код авторизации для продолжения захвата. Однако именно в этот момент у продавца есть маржа для изменений (хотя это и не рекомендуется, поскольку вы легко расстраиваете клиентов). Где вы могли бы сделать окончательную транзакцию:
- Купить товар # 9282 (переключить товар на пользователя)
- За $ 11,99 (немного поднять цену, требуя «добавленные налоги» или что-то еще)
- USD (должно остаться таким же, как вы указали)
Хотя это все еще «приемлемо» для системы PayPal ... это не может быть правильным бизнесом для клиентов.
Забота о помехах:
Ваша забота о " вмешательстве, которое могло иметь место ", не должна быть одной. Код транзакции, идентификатор продавца и секрет - все это используется для предотвращения такого рода вмешательств посредников. А поскольку действия Set и Do выполняются на стороне сервера (не в javascript), пользователь не может напрямую изменить эти значения, чтобы получить другой продукт по более низкой цене.
Надеюсь, это поможет прояснить ваши проблемы / вопросы.