PayPal JavaScript API 通行证送货地址

Mer*_*216 4 javascript paypal paypal-sandbox

我需要为在线商店使用 PayPal API。用户在商店界面中设置他的送货信息(姓名和地址),然后单击“使用 PayPal 付款”按钮。现在我需要将该信息传递给 PayPal API,以便 PayPal 结账界面中的“送货地址”字段显示正确的地址。我按照 API 文档(https://developer.paypal.com/docs/api/orders/v2/#definition-shipping_detail.address_portable)中所示的方式实现了它,但它似乎不起作用,因为送货地址和名称PayPal结帐界面中仍然是John Doe的默认沙箱地址。这是我实现它的方法,但它一定是错误的,因为它不起作用:

createOrder: function(data, actions) {
      return actions.order.create({
        purchase_units: [{
          amount: {
            value: '34'
          },

          shipping_detail: {
            name: {
              full_name: 'Hans Muller'
            },
            address_portable: {
              address_line_1: 'Rohrd. 16',
              address_line_2: 'Rohrdorfer Street',
              admin_area_2: 'Stephanskirchen',
              admin_area_1: 'Bayern',
              postal_code: '83071',
              country_code: 'DE',
            },
          },
        }]
      });
    },

    onApprove: function(data, actions) {
      return actions.order.capture().then(function(details) {
        console.log('Success');
      });
    },

    onError: function (err) {
      console.error(err);
    }
Run Code Online (Sandbox Code Playgroud)

但PayPal沙箱界面仍然显示(德国)默认送货地址:贝宝接口

此外,以后不应在 PayPal 界面中更改该地址。任何关于我在这里做错了什么的建议将不胜感激。

Mer*_*216 8

感谢 Preston PHX(已接受的答案),我能够解决这个问题。这是为所有懒人提供的完整 PayPal 按钮渲染调用:

paypal.Buttons({
    style: {
      size: 'small',
      shape: 'rect',
      color: 'blue',
      layout: 'vertical',
      label: 'paypal',
      height: 40
    },

    createOrder: function(data, actions) {
      return actions.order.create({
        application_context: {
          brand_name: 'myBrand',
          locale: 'us-US',
          shipping_preference: 'SET_PROVIDED_ADDRESS',
        },

        purchase_units: [{
          amount: {
            value: '34'
          },

          shipping: {
            name: {
              full_name: 'Hans Muller'
            },
            address: {
              address_line_1: 'MyStreet 12',
              admin_area_2: 'New York',
              postal_code: '10001',
              country_code: 'US',
            }
          }
        }]
      });
    },

    onApprove: function(data, actions) {
      return actions.order.capture().then(function(details) {
        console.log('Success');
      });
    },

    onError: function (err) {
      console.error(err);
    }
  }).render('#paypal-button-container');
Run Code Online (Sandbox Code Playgroud)