Option d'adresse de livraison désactivée dans la caisse PayPal Express

travailler avec L'API PayPal et en utilisant L'Interface de paire nom-valeur codes source PHP de SDK et téléchargements: simplifier les intégrations avec les téléchargements et SDK .

ma question est similaire à " supprimer (ou pré-remplir) les détails d'adresse pour PayPal Express Checkout " mais je ne veux pas de frais d'expédition/adresse ou tout ce qui concerne l'expédition à tous.

je garde tous les détails d'expédition sur mon système (même parfois l'expédition ne s'applique même pas et il n'y a pas de frais pour elle) et je veux juste que l'utilisateur de payer par PayPal sans adresse d'expédition et les frais d'expédition.

Comment puis-je désactiver une partie expédition de la caisse?

20
demandé sur Community 2010-11-26 10:24:51

5 réponses

si vous utilisez la nouvelle API, vous pouvez aussi passer NOSHIPPING=1 (pas no_shipping)

plus de détails sur tous les paramètres possibles pour le SetExpressCheckout ici:

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

Ou de recherche pour l'expérience de Paiement dans la nouvelle API REST

29
répondu jbx 2017-11-16 14:11:24

Hey Ergec, il suffit de passer le paramètre no_shipping avec une valeur de 1 .

de PayPal documentation :

no_shipping

Do not prompt payers for shipping address. Allowable values:
0 – prompt for an address, but do not require one
1 – do not prompt for an address
2 – prompt for an address, and require one
The default is 0.
13
répondu James Skidmore 2010-11-26 07:28:44

créer un profil web basé sur l'exemple trouvé dans L'API: CreateWebProfile.php .

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

chemin d'accès au Fichier: paypal/rest-api-sdk-php/sample/payment-experience/CreateWebProfile.php

2
répondu elkrari 2015-09-16 21:57:25

La bonne réponse est depracated . Pour corriger le problème dans la nouvelle API, nous devrions créer Payment web experience profile resource avec les paramètres nécessaires et le joindre à la demande Payment .

exemple en PHP:

/** Note: Define some variables yourself. */

$inputFields = new InputFields();
$inputFields->setAllowNote(true)
    ->setNoShipping(1) // Important step
    ->setAddressOverride(0);

$webProfile = new WebProfile();
$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.
}

Note: vous pouvez trouver toutes les classes ci-dessus utilisées par lien: https://github.com/paypal/PayPal-PHP-SDK/tree/master/lib/PayPal/Api

2
répondu Akmal 2018-09-29 11:30:56

@Ergec: j'ai essayé:

$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;

ça marche. Ici, nous pouvons également utiliser l'adresse de livraison même si nous ne facturons aucun montant.

1
répondu user869379 2015-10-29 20:48:06