Utilisation de l'API Paypal et utilisation de l'interface paire paire nom-valeur PHP codes source à partir de SDK et téléchargements: simplifiez l'intégration avec les téléchargements et les SDK .
Ma question est similaire à " Suppression (ou pré-remplissage) des détails d'adresse pour Paypal Express Checkout " mais je ne veux pas de frais d'expédition/adresse ou quoi que ce soit concernant l'expédition du tout.
Je conserve tous les détails d'expédition sur mon système (même parfois, l'expédition ne s'applique pas et elle est gratuite) et je veux juste que l'utilisateur paie via Paypal sans l'adresse et les frais d'expédition.
Comment puis-je désactiver la partie d'expédition de la commande?
Si vous utilisez la nouvelle API, vous pouvez également transmettre NOSHIPPING = 1 (pas no_shipping).
Plus de détails sur tous les paramètres possibles du SetExpressCheckout ici:
Ou recherchez Expérience de paiement dans la nouvelle API REST
Salut Ergec, transmettez simplement le paramètre no_shipping
avec la valeur 1
.
De Paypal documentation :
no_shipping Ne demandez pas au payeur l'adresse de livraison. Valeurs admissibles: 0 - Demander une adresse, mais n'en nécessite pas une. 1 - ne pas demander une adresse 2 - Demander une adresse et en demander un La valeur par défaut est 0.
La bonne réponse actuelle est depracated . Pour résoudre le problème dans la nouvelle API, nous devrions créer ressource de profil d’expérience Web Payment avec les paramètres nécessaires et l’attacher à request 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 utilisées ci-dessus par lien: https://github.com/Paypal/PayPal-PHP-SDK/tree/master/lib/Paypal/Api
Créez un profil Web basé sur l'exemple de l'API: CreateWebProfile.php
.
$createProfileResponse = require __DIR__ . '/CreateWebProfile.php';
$payment = new Payment();
$payment->setExperienceProfileId($createProfileResponse->getId());
Chemin du fichier: Paypal/rest-api-sdk-php/sample/payment-experience/CreateWebProfile.php
@ Ergec: J'ai essayé ceci:
$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.