Как утвердить ссылку подтверждения PayPal в ответе на создание заказа? - PullRequest
2 голосов
/ 11 марта 2020

Я создал OrderCreateRequest PayPal на стороне сервера (nodejs), и у меня есть ссылка подтверждения "https://www.sandbox.paypal.com/checkoutnow?token=88K34845N63744150". Мне нужно одобрить эту ссылку одобрения. Как мне это сделать? Моя клиентская сторона Reactjs. Что у меня есть:

на стороне сервера

оплата. js

import paypal from "@paypal/checkout-server-sdk";
 const clientId = "CLIENT_ID";
 const clientSecret = "SECRET";
 const environment = new paypal.core.SandboxEnvironment(clientId, clientSecret);
 const client = new paypal.core.PayPalHttpClient(environment);

 export const processInvoicePaypalPayment = async (user, data) => {
        let request = new paypal.orders.OrdersCreateRequest();
        try{
            request.body = {
                           intent: "CAPTURE",
                           redirect_urls: {
                                    return_url: "http://localhost:3000",
                                    cancel_url: "http://localhost:3000"
                                   },

                           purchase_units: [
                                    {
                                      amount: {
                                             currency_code: "USD",
                                             value: "**AMOUNT***"
                                              },
                           description: "This is the payment transaction description."
                      }]};

    const createOrder = async () => {
       const response = await client.execute(request);

       console.log(`Order: ${JSON.stringify(response.result)}`);// This response.result.links contain approval links
       return { ok: true, data: { payment: response.result } };
    }

     const result = await createOrder();
     return result;
    }catch(err){}

ClientSide (React js)

test. js

 onSuccess = (paymt, details) => {
  const {
  payment,  // This contained the data which retured from server ie links
  processInvoicePaypalPayment
  } = this.props;
  let links = {};
  payment.paypalDetails.payment.links.forEach(linkObj => {
  links[linkObj.rel] = {
    href: linkObj.href,
    method: linkObj.method
  };
  });
  if (links.approve) {
  window.open(links.approve.href, "windowName", "height=400,width=400");  // Here i try to approve that approval link.
  }

}

Поскольку я новичок в этом, я обеспокоен тем, что это правильный способ одобрить ссылку. Если это не так, как я могу сделать sh это? Таким образом, открытие нового всплывающего окна фактически дает мне, что после того, как я войду в систему и завершу процесс оплаты, он не будет перенаправлен обратно на мой сайт. что я получаю:

enter image description here

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 11 марта 2020

Вместо того, чтобы самостоятельно открывать окно подтверждения, лучше всего передать идентификатор ID / токен клиентскому интерфейсу интеграции PayPal Checkout: https://developer.paypal.com/docs/checkout/

Вот демонстрационный образец: https://developer.paypal.com/demo/checkout/# / pattern / server


В качестве завершающего штриха, когда все работает для счастливого пути, не пренебрегайте / распространять информацию о сбоях в финансировании, чтобы покупатель мог выбрать другое финансирование в случае сбоя / выполнения платежа (например, если его первая карта была отклонена): https://developer.paypal.com/docs/checkout/integration-features/funding-failure/

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