Работа с API-интерфейсом PayPal и использование исходных кодов PHP-кода с именем-значением из SDK и загрузки: упрощение интеграции с загрузками и SDK .
Мой вопрос похож на « Удаление (или предварительное заполнение) данных адреса для PayPal Express Checkout », но я не хочу, чтобы стоимость доставки / адрес или все, что связано с доставкой вообще.
Я сохраняю все данные о доставке в своей системе (даже иногда доставка даже не применяется, и на это нет платы), и я просто хочу, чтобы пользователь платил через PayPal без адреса доставки и стоимости доставки.
Как отключить отправку части заказа?
Если вы используете новый API, вы также можете передать NOSHIPPING = 1 (не no_shipping)
Более подробную информацию о всех возможных параметрах для SetExpressCheckout можно найти здесь:
Или поиск опыта платежей в новом 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