Предварительно заполните платежные данные PayPal для кредитной карты

#angular #paypal #paypal-adaptive-payments

Вопрос:

Попытка предварительного заполнения некоторых реквизитов для оплаты картой на основе https://developer.paypal.com/docs/checkout/integration-features/standard-card-fields/. Но пример https://developer.paypal.com/docs/checkout/integration-features/standard-card-fields/ не работает, потому что json не соответствует типам в «@paypal/paypal-js»: «^4.1.0».

Поэтому я скорректировал его —> >https://developer.paypal.com/docs/api/orders/v2/#definition-payer Смотрите также: @paypalpaypal-jsтипыapiзаказы.d.ts

Но теперь возникает следующая ошибка:

 {"name":"INVALID_REQUEST","message":"Request is not well-formed, syntactically incorrect, or violates schema.","debug_id":"10a838ea45721","details":[{"field":"/payer/phone/phone_number","location":"body","issue":"MALFORMED_REQUEST_JSON","description":"The request JSON is not well formed."}]
 

Моя конфигурация:

  paypal
          .Buttons({
            createOrder: (data: UnknownObject, actions: CreateOrderActions) => {
              // This function sets up the details of the transaction, including the amount and line item details.
              return actions.order.create({
                application_context: {
                  shipping_preference: 'NO_SHIPPING',
                },
                payer: {
                  payer_id: '1',
                  birth_date: '2021-01-01',
                  tax_info: {
                    tax_id: '1',
                    tax_id_type: 'string',
                  },
                  email_address: 'customer@domain.com',
                  phone: {
                    phone_number: '45465',
                  },
                  name: {
                    given_name: 'PayPal',
                    surname: 'Customer',
                  },
                  address: {
                    address_line_1: '123 ABC Street',
                    address_line_2: 'Apt 2',
                    admin_area_2: 'San Jose',
                    admin_area_1: 'CA',
                    postal_code: '95121',
                    country_code: 'US',
                  },
                },
                purchase_units: [
                  {
                    amount: {
                      value: '0.01',
                      currency_code: 'EUR',
                    },
                  },
                ],
              });
            },
...
 

Я пробовал разные значения для номера телефона, но всегда одна и та же ошибка. В чем проблема?

Спасибо, Майк.

Ответ №1:

Согласно документации, у phone_number должен быть national_number ключ. Не включайте payer_id недопустимый объект или недопустимый tax_info объект.

               {
                application_context: {
                  shipping_preference: 'NO_SHIPPING',
                },
                payer: {
                  birth_date: '2021-01-01',
                  email_address: 'customer@domain.com',
                  phone: {
                    phone_number: {
                        national_number: '4543433243',
                    }
                  },
                  name: {
                    given_name: 'PayPal',
                    surname: 'Customer',
                  },
                  address: {
                    address_line_1: '123 ABC Street',
                    address_line_2: 'Apt 2',
                    admin_area_2: 'San Jose',
                    admin_area_1: 'CA',
                    postal_code: '95121',
                    country_code: 'US',
                  },
                },
                purchase_units: [
                  {
                    amount: {
                      value: '0.01',
                      currency_code: 'EUR',
                    },
                  },
                ],
              }
 

Комментарии:

1. PayPal должен только предварительно заполнить эти поля… проверка должна произойти позже. Я беру эти значения из профиля клиента… и формат номера телефона всегда немного отличается. Так что ошибки будут всегда… это приводит к тому, что представление не отображается.

2. Будут приняты только допустимые значения. Не указывайте недопустимые значения.