Paypal SDK не захватывает деньги - PullRequest
1 голос
/ 28 апреля 2020

Вот мой NODEJS запрос приложения. Я перенаправляю клиента на approve_url, где он пишет свои данные. Когда PayPal принимает данные клиента, он перенаправляет учетную запись обратно на return_url.

. Вопрос в том, что после успешного перенаправления клиент не получает оплату, и я не вижу никаких действий в моем PayPal. Что я делаю не так?

let pay_req = {
  'intent': 'CAPTURE',
  "application_context": {
    'return_url': `https://api.domain.com/orders/success`,
    'cancel_url': `https://api.domain.com/orders/cancel`,
    "brand_name": "Domain",
    "locale": "en-US",
    landing_page: "BILLING",
    "user_action": "PAY_NOW"
  },
  "items": [
    {
      "name": entity.item.name,
      "description": entity.item.description,
      "unit_amount": {
        "currency_code": "USD",
        "value": entity.item.price
      },

      "quantity": request_body.qty,
      "category": "PHYSICAL_GOODS"
    }
  ],
  shipping_type: "shipping",
  purchase_units: [{
    "amount": {
      "currency_code": "USD",
      'value': total,
      "breakdown": {
        "item_total": {
          "currency_code": "USD",
          "value": subtotal
        },
        "shipping": {
          "currency_code": "USD",
          "value": shipping
        }
      }
    }
  }]
};
request.requestBody(pay_req);
let payPalClient = client();
let order;
try {
  order = await payPalClient.execute(request);
} catch (err) {

  // 4. Handle any errors from the call
  console.error(err);
  return err;
}
await strapi.services.order.update(
  {
    id: entity.id
  },
  {
    paypal_token: order.result.id
  }
);
var links = {};
order.result.links.forEach(function (linkObj) {
  links[linkObj.rel] = {
    'href': linkObj.href,
    'method': linkObj.method
  };
})
return links["approve"].href;

1 Ответ

0 голосов
/ 28 апреля 2020

Захват не автомат c. Ожидается, что вы откроете страницу просмотра заказа и отправите запрос захвата, когда пользователь подтвердит заказ. Если вы хотите sh пропустить шаг проверки заказа и сразу же получить его, вы можете сделать это, но в этом случае вы должны отправить параметр настройки платежа, который изменит синюю кнопку «Продолжить» в PayPal, чтобы сказать «Оплатить сейчас» «вместо этого (это только изменение космети c, но оно информирует пользователя о том, что произойдет) - и хотя вы вносите это изменение космети c, вам все равно придется отправлять запрос на захват немедленно, когда пользователь возвращается к return_url.


Для достижения наилучших результатов: забудьте обо всем этом и забудьте об использовании перенаправлений. Не используйте перенаправления. Совсем. Вместо этого переключитесь на этот интерфейс: https://developer.paypal.com/demo/checkout/# / pattern / server

Это намного лучший способ оплаты, более соответствующий современной практике веб-дизайна, который поддерживает загрузку вашего сайта в в фоновом режиме и открывает окно утверждения «в контексте».

(Вы можете увидеть рабочую демонстрацию пользовательского интерфейса, щелкнув по безсерверной HTML / JS -только версии)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...