Square Web API для Android - PullRequest
       21

Square Web API для Android

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

Я пытаюсь запрограммировать в своем веб-приложении кнопку, которая будет запускать приложение Square на планшете Android для обработки платежей.

Я следую инструкциям веб-разработчика и получаю Синтаксическая ошибка при определении переменной typeType payment: Uncaught SyntaxError: Неверный или неожиданный токен

enter image description here

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

Может кто-нибудь пролить свет? Вот пример моего кода.

Кнопка, которая запустила код javascript:

<div id="do_square_payment" align="center" style="display:none;">
                                <button id="do_square_payment_btn_android" value="Square" style="background-image:url(images/Square.png); height:200px; width:200px;" onClick="openURL();"></button><br>
</div> 

Javascript код:

<script>


                                function openURL(){
                                var amount = document.form.payment_amount_mobile.value;


                                var amountFixed = amount * 100;
                                console.log("Payment amount" + amountFixed);


                                  var posUrl =
                                    "intent:#Intent;" +
                                    "action=com.squareup.pos.action.CHARGE;" +
                                    "package=com.squareup;" +
                                    "S.browser_fallback_url=https://jaydien.ezservicetrax.com;" +
                                    "S.com.squareup.pos.WEB_CALLBACK_URI=https://jaydien.ezservicetrax.com;" +
                                    "S.com.squareup.pos.CLIENT_ID=sq0idp-OMMITED;" +
                                    "S.com.squareup.pos.API_VERSION=v2.0;" +
                                    "S.com.squareup.pos.CURRENCY_CODE=USD;" +
                                    "S.com.squareup.pos.TENDER_TYPES=com.squareup.pos.TENDER_CARD,com.squareup.pos.TENDER_CASH;" +
                                    "i.com.squareup.pos.TOTAL_AMOUNT="  + 
                                    amountFixed +
                                    ";" +
                                    "end";

                                  window.open(posUrl);
                                }
                               </script>

Вот URL, который запрашивается при эмуляции устройства android с использованием инструментов разработчика chrome:

intent:#Intent;action=com.squareup.pos.action.CHARGE;package=com.squareup;S.com.squareup.pos.WEB_CALLBACK_URI=https://jaydien.ezservicetrax.com;S.com.squareup.pos.CLIENT_ID=OMMITED;S.com.squareup.pos.API_VERSION=v2.0;i.com.squareup.pos.TOTAL_AMOUNT=5.00;S.com.squareup.pos.CURRENCY_CODE=USD;S.com.squareup.pos.TENDER_TYPES=com.squareup.pos.TENDER_CARD,com.squareup.pos.TENDER_CARD_ON_FILE,com.squareup.pos.TENDER_CASH,com.squareup.pos.TENDER_OTHER;end

1 Ответ

1 голос
/ 01 апреля 2020

Я думаю, что это просто опечатка в документации.

Вы пытаетесь создать строковый литерал над несколькими строками, и для этого вам следует использовать тот же подход, что и для переменной posUrl, которую вы создаете сразу после tenderTypes, то есть закрывать кавычки и объединять с Следующая строка с использованием оператора +. Существуют и другие способы создания многострочной строки, например, добавление \ в конце каждой строки, чтобы синтаксический анализатор знал, что литерал еще не завершен.

Ваш код будет выглядеть следующим образом:

var tenderTypes =
   "com.squareup.pos.TENDER_CARD,\
    com.squareup.pos.TENDER_CARD_ON_FILE,\
    com.squareup.pos.TENDER_CASH,\
    com.squareup.pos.TENDER_OTHER";

или это:

var tenderTypes =
   "com.squareup.pos.TENDER_CARD," +
   "com.squareup.pos.TENDER_CARD_ON_FILE," +
   "com.squareup.pos.TENDER_CASH," +
   "com.squareup.pos.TENDER_OTHER";
...