Интеграция старого веб-сайта с API Square Checkout - PullRequest
0 голосов
/ 25 апреля 2018

Простите мою наивность здесь, но я старый разработчик, двигающийся в современную эпоху.Короче говоря, у меня есть старый веб-сайт, запрограммированный на ASP (я знаю, я знаю), который должен использовать API Square Checkout для очень простой обработки платежей.Таким образом, мне нужно отправить запрос JSON в Square и обработать его ответ.Я создал очень, очень урезанный JSON-запрос, используя Javascript для отправки в Square для целей тестирования, но, похоже, не могу получить ответ на запрос «null».Я не могу сказать, просто ли я не получаю ответ и / или неверен ли мой код при получении возврата JSON.В его нынешнем виде я только пытаюсь получить ответ и распечатать его на экране, прежде чем добавить код для его анализа и последующего перенаправления обратно в Square согласно документации API.Что я делаю неправильно ??Любая помощь будет искренне признательна!

Спасибо, Джо

     <html>

       <script>

       var obj = {
       "idempotency_key": "00000000c",
       "order": 
       {
         "reference_id": "00000000c",
         "line_items":
         [{
            "name": "My order",
            "quantity": "1",
            "base_price_money": 
            {
               "amount": 15,
               "currency": "USD"
             }
         }],

        "taxes":
        [{
           "name": "Sales Tax",
           "percentage": "8.5"
        }]
      },

       "ask_for_shipping_address": false,
       "merchant_support_email": "confused@myownsamplesite.com",

       "redirect_url": "https://www.myownsamplesite.com/success.asp"
    }

    var myJSON = JSON.stringify(obj);

    var request = new XMLHttpRequest();

     request.open('POST', 'https://connect.squareup.com/v2/locations/{location_ID_removed_for_security}/checkouts', true);
     request.setRequestHeader('Authorization', '{auth_token_removed_for_security}');
     request.setRequestHeader('Accept','application/json');
     request.setRequestHeader('Content-Type','application/json');
     request.responseType = "json";
     request.send(myJSON);

     var returnJSON = request.response;
     document.write(returnJSON);
    </script>
  </html>

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вы не получили ответ.

Вы должны абсолютно никогда использовать клиентский JavaScript для хранения вашего токена доступа для Square или любого API.Люди могут просто проверить источник вашего сайта, а затем получить полный доступ к API-интерфейсам Square для вашей учетной записи.Чтобы помочь вам запомнить это, Square не отвечает на запросы клиентов на основе JavaScript.

Вместо этого вы должны использовать внутренний язык для создания форм оформления заказа (которые вы можете вызывать через ajax, как описано Сашей), или даже использовать безсерверную функцию для создания оформления заказа, как описано здесь: https://medium.com/square-corner-blog/super-simple-serverless-ecommerce-68d2792e8285

0 голосов
/ 25 апреля 2018

Вы используете асинхронный запрос

request.open('POST', URL, true); // <- true means asynchronous

для асинхронного запроса, вы также должны определить

req.onreadystatechange = function () {
  if (req.readyState == 4) {
     if(req.status == 200)
      console.log(req.responseText);
     else
      console.log("Error loading page\n");
  }
};

document.write может выполнять вывод только во время загрузки html.Таким образом, возможно, что ваш запрос в порядке, но вы не можете его увидеть.

Вы также можете попробовать (только для отладки) синхронный запрос

request.open('POST', URL, false);

и console.log, чтобы увидеть вывод вконсоль браузера или вместо document.write используйте эту

document.body.innerHTML += returnJSON
...