it-swarm.com.de

Deaktivieren Sie die Versandadressenoption in Paypal Express Checkout

Arbeiten mit der Paypal-API und Verwenden der Name-Value-Pair-Schnittstelle PHP-Quellcodes aus SDKs und Downloads: Vereinfachen Sie Integrationen mit Downloads und SDKs .

Meine Frage ist ähnlich wie " Entfernen (oder Vorabfüllen) der Adressangaben für Paypal Express Checkout ", aber ich möchte keine Versandkosten/Adressen oder alles, was mit dem Versand zu tun hat.

Ich bewahre alle Versanddetails auf meinem System auf (sogar der Versand gilt manchmal nicht und ist kostenlos), und ich möchte nur, dass der Benutzer per Paypal ohne Lieferadresse und Versandkosten bezahlt.

Wie kann ich den Versand der Kasse deaktivieren?

22
Ergec

Wenn Sie die neuere API verwenden, können Sie auch NOSHIPPING = 1 übergeben (nicht no_shipping).

Weitere Details zu allen möglichen Parametern zum SetExpressCheckout hier:

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

Oder suchen Sie nach Payment experience in der neuen REST API

29
jbx

Hey Ergec, übergeben Sie einfach den Parameter no_shipping mit dem Wert 1.

Aus der Paypal Dokumentation :

no_shipping 
 
 Fordern Sie die Empfänger nicht zur Versandadresse auf. Zulässige Werte: 
 0 - Aufforderung zur Eingabe einer Adresse, aber keine Angabe 
 1 - Bitte keine Aufforderung zur Eingabe einer Adresse 
 2 - Aufforderung zur Eingabe einer Adresse und Voraussetzung einer 
 Der Standardwert ist 0.
14
James Skidmore

Die aktuelle richtige Antwort ist depracated . Um das Problem in der neuen API zu beheben, sollten Sie Payment-Web-Experience-Profilressource mit den erforderlichen Parametern erstellen und an request Payment anhängen.

Beispiel in 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.
}

Hinweis: Sie finden alle oben verwendeten Klassen unter folgendem Link: https://github.com/Paypal/PayPal-PHP-SDK/tree/master/lib/Paypal/Api

3
Akmal

Erstellen Sie ein Webprofil basierend auf dem Beispiel in der API: CreateWebProfile.php.

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

Dateipfad: Paypal/rest-api-sdk-php/sample/payment-experience/CreateWebProfile.php

2
elkrari

@Ergec: Ich habe folgendes versucht:

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

Es klappt. Hier können wir auch die Lieferadresse angeben, obwohl wir keinen Betrag berechnen.

1
user869379

Fügen Sie dem Anforderungshauptteil den Block application_context Hinzu, um dieses Problem vom aktuellen (2019) Webclient .JS zu lösen.

Unten ist ein Beispiel für createSubscription() call; und ich denke, das wird auch mit createOrder() funktionieren

Paypal.Buttons({
          createSubscription: function (data, actions) {

              return actions.subscription.create({

                  'plan_id'            : 'P-123',
                  'application_context': {
                      'shipping_preference': 'NO_SHIPPING'
                  }
              });
          },

          onApprove: function (data, actions) {

              // ...
          }
      })
      .render('#Paypal-button-container');

Dank dem Beispielcode hier:

Hier sind die Feldnummern aufgelistet:

0
Gene Bo