Отключить параметр адреса доставки в PayPal Express Checkout

Работа с API-интерфейсом PayPal и использование исходных кодов PHP-кода с именем-значением из SDK и загрузки: упрощение интеграции с загрузками и SDK .

Мой вопрос похож на « Удаление (или предварительное заполнение) данных адреса для PayPal Express Checkout », но я не хочу, чтобы стоимость доставки / адрес или все, что связано с доставкой вообще.

Я сохраняю все данные о доставке в своей системе (даже иногда доставка даже не применяется, и на это нет платы), и я просто хочу, чтобы пользователь платил через PayPal без адреса доставки и стоимости доставки.

Как отключить отправку части заказа?

Если вы используете новый API, вы также можете передать NOSHIPPING = 1 (не no_shipping)

Более подробную информацию о всех возможных параметрах для SetExpressCheckout можно найти здесь:

https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/

Или поиск опыта платежей в новом REST API

Эй, Ergec, просто пройдите по параметру no_shipping со значением 1 .

Из документации PayPal:

  no_shipping

 Не запрашивайте плательщиков за адрес доставки.  Допустимые значения:
 0 - запрос адреса, но не требуется один
 1 - не запрашивать адрес
 2 - запросить адрес и потребовать один
 По умолчанию используется значение 0. 

Создайте веб-профиль на основе примера, найденного в API: CreateWebProfile.php .

 $createProfileResponse = require __DIR__ . '/CreateWebProfile.php'; $payment = new Payment(); $payment->setExperienceProfileId($createProfileResponse->getId()); 

Путь к файлу: paypal/rest-api-sdk-php/sample/payment-experience/CreateWebProfile.php

@Ergec: Я пробовал это:

 $nvpstr = "&ADDRESSOVERRIDE=1".$shiptoAddress."&L_NAME0=".$L_NAME0."&L_NAME1=".$L_NAME1."&L_AMT0=".$L_AMT0."&L_AMT1=".$L_AMT1."&L_QTY0=".$L_QTY0."&L_QTY1=".$L_QTY1."&MAXAMT=".(string)$maxamt."&ITEMAMT=".(string)$itemamt."&AMT=".$itemamt."&ReturnUrl=".$returnURL."&CANCELURL=".$cancelURL."&CURRENCYCODE=".$currencyCodeType; 

Оно работает. Здесь мы также можем использовать адрес доставки, даже если мы не взимаем какую-либо сумму.

Текущий правильный ответ разрознен . Чтобы исправить проблему в новом API, мы должны создать ресурс профиля ресурсов веб- сервиса Payment с необходимыми параметрами и приложить его для запроса платежа .

Пример в PHP:

 /** Note: Define some variables yourself. */ $inputFields = (new InputFields()) ->setAllowNote(true) ->setNoShipping(1) // Important step ->setAddressOverride(0); $webProfile = new (WebProfile()) ->setName(uniqid()) ->setInputFields($inputFields) ->setTemporary(true); $createProfile = $webProfile->create($apiContext); $payment = new Payment(); $payment->setPayer($payer); $payment->setIntent($intent); $payment->setRedirectUrls($redirectUrls) $payment->setTransactions(array($transaction)); $payment->setExperienceProfileId($createProfile->getId()); // Important step. $payment->create($apiContext); if ($payment->getState() === "created") { $approvalLink = $payment->getApprovalLink() header("Location: $approvalLink"); // Redirects user to paypal page. } 

Примечание. Вы можете найти все вышеперечисленные классы по ссылке: https://github.com/paypal/PayPal-PHP-SDK/tree/master/lib/PayPal/Api