Paypal JS SDK Smart Payment — отключить адрес promt для оплаты кредитной картой без учетной записи

#javascript #paypal #paypal-sandbox #paypal-rest-sdk

#javascript #paypal #paypal-песочница #paypal-rest-sdk

Вопрос:

Я интегрирую кнопки смарт-платежей в оформление заказа PayPal

 <script src="https://www.paypal.com/sdk/js?...>
paypal.Buttons({
createOrder(data, actions) {
// ...
onApprove(data, actions) {
// ...
}).render('#paypal-button');
  

Помимо оплаты с помощью учетной записи PayPal, мы хотим предложить пользователю оплачивать наши цифровые продукты с помощью SEPA или кредитной карты без создания учетной записи PayPal.

Что нам не требуется, так это платежный адрес или адрес доставки, вводимый пользователем.У нас уже есть эта информация, и мы сами выставляем счета, в то время как доставка не применяется.

Есть ли какой-либо способ отключить ввод адреса (и желательно также ввод контактной информации) с помощью JS SDK? Любой параметр, который я могу передать ресурсу SDK или paypal.Buttons.render() методу? При оплате кредитной картой через других платежных провайдеров они никогда не заботятся об этой информации пользователя. Для хорошего пользовательского интерфейса должны иметь значение только номер, срок действия и резюме. Даже ввод номера CC уже может быть довольно болезненным. То же самое относится и к оплате с помощью SEPA. Я просто не хочу, чтобы пользователю приходилось вводить свой адрес.

Или я должен передавать информацию о клиенте в PayPal, чтобы помочь с предотвращением мошенничества? Если да, могу ли я хотя бы отключить флажок «Отправить на платежный адрес»? Это может сбить с толку наших пользователей.

Спасибо!

Ответ №1:

Для параметра shipping_preference объекта application_context необходимо установить значение ‘NO_SHIPPING’:

 paypal.Buttons({
  createOrder: function(data, actions) {
    return actions.order.create({
      purchase_units: [{ amount: { value: 99.00 } }],

      application_context: {
        shipping_preference: 'NO_SHIPPING'
      }

    });
  },
  onApprove: function(data, actions) {}
}).render(button);
  

Вы можете прочитать больше об объекте контекста приложения

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

1. Кстати, я вижу, что «версия API v1 скоро устареет» ( см. Orders API v1 ). Похоже, это относится и к API платежей v1 . В чем разница между заказами и платежами? Я нахожу документацию PayPal немного запутанной по этой теме. Вот контекст приложения для Orders API v2 .

2. @showdev «Заказ» позволяет вам авторизовать платеж и зафиксировать его позже, «Платеж» должен быть зафиксирован сразу.

3. Я понимаю. Спасибо за помощь!

4. Нет, это не будет работать для платежей «кредитной и дебетовой картой». Он работает только при выборе кнопки «PayPal» (и во всплывающем окне нажмите «Оплатить картой»), но не нажимает «Кредитная и дебетовая карта» snipboard.io/B8l60d.jpg

Ответ №2:

Вам необходимо установить параметр shipping_type «САМОВЫВОЗ»:

 paypal.Buttons({
  createOrder: function(data, actions) {
    return actions.order.create({
      shipping_type: 'PICKUP',
      application_context: { shipping_preference: 'NO_SHIPPING' },
      purchase_units: [{ amount: { value: 99.00 } }]
    });
  },
  onApprove: function(data, actions) {}
}).render(button);
  

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

1. имеет ли значение shipping_type какой-либо эффект? согласно их документам, это имеет смысл только при предоставлении нескольких вариантов доставки: developer.paypal.com/docs/business/checkout/configure-payments /…