在PayPal Express Checkout中禁用送货地址选项

时间:2010-11-26 07:24:51

标签: php paypal paypal-sandbox

使用PayPal API并使用SDKs and Downloads: Simplify Integrations with Downloads and SDKs中的名称 - 值对接口PHP源代码。

我的问题类似于“Removing (or prefilling) the address details for PayPal Express Checkout”,但我不想要运费或地址或任何与运费相关的内容。

我保留了我的系统上的所有运输详情(即使有时甚至没有运费也没有收费)我只希望用户通过PayPal付款而不收取运费和运费。

如何禁用结帐的送货部分?

7 个答案:

答案 0 :(得分:29)

如果您使用较新的API,也可以传递NOSHIPPING = 1(不是no_shipping)

此处有关SetExpressCheckout所有可能参数的更多详细信息:

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

或在新REST API中查找Payment experience

答案 1 :(得分:14)

Hey Ergec,只需传递no_shipping参数,其值为1

来自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.

答案 2 :(得分:4)

对于其他寻求此帮助的人,因为PayPals文档是如此出色(咳嗽,咳嗽)。

不需要网络体验资料!

使用带有Javascript / JQuery的REST API V2并关闭“发件人”以进行订单,这是正确的代码示例:

    createOrder: function(data, actions) {
        $('#paypalmsg').html('<b>' + 'WAITING ON AUTHORIZATION TO RETURN...' + '</b>');
        $('#chkoutmsg').hide()
        return actions.order.create({
            purchase_units: [{
                description: 'GnG Order',
                amount: {
                    value: cartTotal
                }
            }],
            application_context: {
              shipping_preference: 'NO_SHIPPING'
            }

        });
    },

答案 3 :(得分:3)

目前正确的答案是 depracated 。要解决新API中的问题,我们应创建包含所需参数的付款网络体验资料,并将其附加到请求付款

PHP示例:

transaction

注意:您可以通过链接找到以上使用的所有课程:https://github.com/paypal/PayPal-PHP-SDK/tree/master/lib/PayPal/Api

答案 4 :(得分:2)

根据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

答案 5 :(得分:2)

要从当前(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');

感谢此处的示例代码:

在此处列出字段枚举的地方:

答案 6 :(得分:1)

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

有效。在这里,我们也可以使用送货地址,即使我们没有收取任何金额。