使用 Intent 启动 Square 本机 Android 应用时出错

Error launching Square native Android app using Intent

我正在为 Android 开发本地销售点应用程序。该应用程序正在使用 Xamarin 编写。

该应用程序的大部分功能将驻留在单个网页应用程序中。本机应用程序主要是此网站的包装器。

在我的销售点应用程序中,当用户关闭工单时,我想启动 Square POS 应用程序来处理信用卡输入。

我已在 Square 网站 (https://developer.squareup.com/docs/pos-api/web-technical-reference#mobile-web-on-android) 上关注此文档,它告诉您如何构建 Intent 以启动 Square POS 应用程序。

当我在调试模式下构建我的本机应用程序并对其进行调试时,Intent 工作正常。我在我的应用程序中单击一个按钮,构建了 Intent 对象,加载了 Square 应用程序,我可以 swipe/key 在信用卡中,响应回调到我的本机应用程序,一切正常。

如果我在发布模式下构建我的本机应用程序并将其上传到我的物理 Android 设备,然后 运行 该应用程序,Intent 也可以正常工作。 Square 应用程序加载,我可以处理卡片等

如果我将我的应用程序发布到 Google Play 商店,将其下载到同一台 Android 设备上,然后 运行 该应用程序,Intent 将不起作用。当我单击我的应用程序中的按钮并构建 Intent 和 运行 时,我从 Square 收到此错误代码:"com.squareup.pos.ERROR_INVALID_REQUEST"。根据 Square 的网站,此错误代码表示:"The information provided in this transaction request is invalid (e.g., a required field is missing or malformed)."

我不明白在我的物理 Android 设备上调试应用程序如何正常工作,在发布模式下构建应用程序并将其上传到我的 Android 设备如何正常工作,但是当发布将应用程序下载到应用程序商店并运行无法正常运行。

我试过从我的设备上卸载该应用程序,然后从 Play 商店下载它,我试过从 Play 商店应用程序中清除 cache/data,似乎没有任何效果。

我找到了答案。在 Square Developers 仪表板中,您指定用于签署 Android 应用程序的证书指纹。我进去并提供了那个指纹,但是在 Google Play 商店的本机应用程序的最新版本中,有人打开了 "Re-sign app with a certificate hosted on Google's servers" 选项。所以 .apk 正在获得 re-signed 具有不同指纹的新证书。

我在 Square Developers 仪表板中添加了额外的指纹,现在该过程开始了。