Вы не можете ограничить адрес для выставления счетов пользователя, он находится вне вашего контроля. Они могут ввести любой адрес для выставления счетов.
Если вы запрашиваете адрес доставки с помощью вашей собственной формы перед отображением кнопок, вы можете пройти адрес доставки в PayPal и используйте объект SET_PROVIDED_ADDRESS объекта application_context, чтобы принудительно использовать адрес доставки, который вы собрали и подтвердили.
Например:
"application_context": {
"shipping_preference": "SET_PROVIDED_ADDRESS"
},
"purchase_units": [{
"shipping": {
"address": {
"address_line_1": "123 Sunny Lane",
"admin_area_2": "Phoenix",
"admin_area_1": "AZ",
"postal_code": "85001",
"country_code": "US",
},
"name": {
"full_name":"John Doe",
}
},
"amount": {
"currency_code": "USD",
"value": "123.45"
},
}]
PayPal не рекомендует это интеграции по двум причинам:
1) Если вы собираете неверный адрес, попытка платежа будет отклонена с ошибкой (поскольку вы принудительно используете этот адрес), и оформление заказа не может быть продолжено.
2) Вы добавляете трения в процесс оформления заказа, заставляя пользователей вводить адрес вручную. Большим преимуществом метода оплаты "PayPal", помимо безопасности, является возможность оформить заказ без необходимости вводить информацию о платеже или доставке - все это предварительно сохраняется в учетной записи покупателя, что позволяет им сделать щелчок решение об оплате, тем самым увеличивая «коэффициент конверсии» продаж вашего сайта.
Но что ж, go, если у вас есть бизнес-потребность в контроле адресов до того, как клиент войдет в процесс оформления заказа. Тот же синтаксис v2 / orders применяется к кнопкам JavaScript на стороне клиента или к интеграции на основе API на стороне сервера (взаимодействие с соответствующим интерфейсом для кнопок)