Angular 的 Ngx-paypal:编辑 Paypal 按钮的送货地址

Ngx-paypal for Angular: edit shipping address of Paypal Button

我正在为 Angular 使用 ngx-paypal 制作一个 Paypal 结账按钮,当我到达购物车并继续结账时会显示该按钮,但我不知道如何“提供”送货地址到按钮而不是默认地址,所以当有人点击 Checkout Paypal 按钮时,他们会得到我选择在打字稿中传递的地址。 我想和 shippingAddressOverride 一样。 这是显示我如何配置 Paypal 按钮的代码:

this.payPalConfig = {
      currency: 'EUR',
      clientId: this.parameters.clientidpaypal,
      createOrderOnClient: (data) => <ICreateOrderRequest>{        
        intent: 'CAPTURE',
        purchase_units: [{
          amount: {
            currency_code: 'EUR',
            value: this.item.total.toString().replace(",", "."),
            breakdown: {
              item_total: {
                currency_code: 'EUR',
                value: this.item.total.toString().replace(",", ".")
              }
            }
          }
        }],
      }
    };

订单创建请求正文is documented here.

这里有一些例子 JSON。

{
  "payer": {
    "name": {
      "given_name": "John",
      "surname": "Doe"
    },
    "email_address": "customer@example.com"
  },
  "purchase_units": [
    {
      "shipping": {
        "address": {
          "address_line_1": "2211 N First Street",
          "address_line_2": "Building 17",
          "admin_area_2": "San Jose",
          "admin_area_1": "CA",
          "postal_code": "95131",
          "country_code": "US"
        }
      },

如果客户在结账时选择不同的地址,他们可以覆盖提供的信息,因此您必须存储响应中收到的地址,如果不同则使用该地址。

如果您需要强制使用您预先收集的特定地址,则有一个 SET_PROVIDED_ADDRESS 参数 - 但是如果您使用该地址,这种强制将导致结帐失败并出现错误正在尝试强制无效。

理想情况下,PayPal 选项应该在流程中收集送货地址之前出现,这样您就可以从已经存储在PayPal 帐户,而不是反过来让用户手动输入您的网站。这是普通电子商务的最佳流程,因为它允许付款人更快地完成结帐(减少手动输入),从而带来更多转化(更多完成的销售,更少的流失/改变主意)

有一个 onShippingChange 回调,你可以实时检查新选择的地址,return 是否可以(例如,如果你不运送到所选国家/地区),并在必要时修补订单详细信息。这集成起来比较复杂,但如果您需要根据所选地址执行此类调整,则这是必要的。