web-dev-qa-db-ja.com

Paypal Express Checkoutの配送先住所オプションを無効にする

Paypal APIの操作と名前と値のペアインターフェイスの使用PHPからのソースコード SDKおよびダウンロード:ダウンロードおよびSDKとの統合を簡素化

私の質問は「 Paypal Express Checkoutの住所詳細の削除(または事前入力) に似ていますが、送料/住所や配送に関連するものは一切必要ありません。

私は自分のシステムにすべての配送の詳細を保持しています(場合によっては配送が適用されず、料金が発生しないこともあります)。ユーザーに配送先住所と配送料なしでPaypalを介して支払うことを望んでいます。

チェックアウトの一部の発送を無効にするにはどうすればよいですか?

25
Ergec

新しいAPIを使用している場合は、NOSHIPPING = 1を渡すこともできます(no_shippingではありません)。

SetExpressCheckoutに可能なすべてのパラメーターの詳細は、次のとおりです。

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

または、新しいREST APIで 支払い経験 を検索します

30
jbx

ねErエルジェック、no_shippingパラメータの値1

Paypalの ドキュメント から:

no_shipping 
 
配送先住所の入力を求めないようにしてください。許容値:
 0 –アドレスを要求するが、要求しない
 1 –アドレスを要求しない
 2 –アドレスを要求し、要求する
デフォルトは0です。
14
James Skidmore

現在の正しい答えはdepracatedです。新しいAPIの問題を修正するには、必要なパラメーターを含むPayment Web Experienceプロファイルリソースを作成し、リクエストに添付する必要があります支払い

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

注:上記で使用されているすべてのクラスをリンクで見つけることができます: https://github.com/Paypal/PayPal-PHP-SDK/ tree/master/lib/Paypal/Api

6
Akmal

現在の(2019)Webクライアント.JSからこれを解決するには、リクエスト本文に_application_context_ブロックを追加します。

以下はcreateSubscription()呼び出しの例です。これはcreateOrder()でも機能すると思います

_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');
_

ここのサンプルコードのおかげで:

ここにフィールド列挙型がリストされています:

3
Gene Bo

APIにある例に基づいてWebプロファイルを作成します:CreateWebProfile.php

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

ファイルパス: Paypal/rest-api-sdk-php/sample/payment-experience/CreateWebProfile.php

2
elkrari

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

できます。ここでは、金額を請求していなくても、配送先住所を使用することもできます。

1
user869379