Android 的方网 API

Square Web API for Android

我正在尝试在我的网络应用程序中编写一个按钮,该按钮将在 Android 平板电脑上启动 Square 应用程序以进行付款处理。

我一直在遵循 Web 开发人员指南,但在定义付款类型类型变量时遇到语法错误:未捕获的语法错误:无效或意外的令牌

我不确定哪里出了问题,因为这是直接来自 Square 文档中的示例。

任何人都可以解释一下吗?这是我的代码示例。

启动 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>

这是我使用 chrome 开发人员工具模拟 android 设备时请求的 url:

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

我认为这只是文档中的某种拼写错误。

您正在尝试在多行上创建一个字符串文字,为此您应该使用与在 tenderTypes 之后立即实例化的 posUrl 变量相同的方法,即关闭引号并使用 + 运算符与下一行连接。还有其他创建多行字符串的方法,例如在每行末尾添加 \ 以便解析器知道文字尚未完成。

您的代码如下所示:

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";