Square web api - 如何发送外部交易ID

Square web api - how to send an external transaction ID

我正在使用 Web api(Android 和 IOS)将 Square POS 与 Web 应用程序集成。

如何将我系统的交易 ID 传递到对 Android 和 IOS 的 Intent 调用中,以便我稍后可以在 Connect [=65= 的检索交易端点中验证它们]?

IOS 文档提到使用 "state" 但我目前正在使用 Android 并且没有这样的提及。

我是否应该尝试使用 "Note" 字段(S.com.squareup.pos.NOTE 代表 Android 或 "Notes" 代表 IOS)?

我真的需要一个可以同时用于 IOS 和 Android 的字段,因为我的检索交易到达连接 API 不会知道原始客户端的操作系统。

添加注释: 在 tristansokol 的评论之后,我想补充一点,我这样做的原因是为了加强 Square POS 客户端和我正在集成的 Web 应用程序之间的集成。否则,什么会阻止某人粘贴之前交易的 URI 来进行新的付款?

如果有人在付款后从他们的浏览器复制了这个 URI: https://192.168.1.2/ctSquarePayDemo/Default?com.squareup.pos.CLIENT_TRANSACTION_ID=XXXXXXX&com.squareup.pos.SERVER_TRANSACTION_IDValue:YYYYYYYYY

然后可以为新的支付交易再次粘贴相同的 URI,我无法验证它来自 "old" 交易。我知道您可能会说我可以第一次存储 Transaction_ID 然后不允许第二次存储它,但这不是最好的安排。

当我们使用 webapi 与其他支付系统集成时,我们通常能够传递我们自己的 orderID/transactionID 某种形式,以确保轻松验证交易。


最终答案(从下面解释)
对于 Android Web API,请在锚标记中使用 S.com.squareup.pos.NOTES=TRANSACTIONIDHERE。

对于 IOS Web API 使用 "notes" json 元素并将您的交易 ID 放在那里。

然后您需要使用 Square Rest API V1(您不能使用 V2,它不会公开 notes 数据元素)来检索交易数据并在成功付款后进行验证。端点将如下所示:

https://connect.squareup.com/v1/YOURLOCATIONID/payments/THESQUARETRANSACTIONID

我建议您始终在处理付款后使用 api 查找您的交易。您可以确定您系统的交易 ID 与 "notes" 字段匹配,并仔细检查金额是否正确。这将有助于防止 fraud/misuse 并防止回调 URL 由于互联网连接不良而无法加载时系统出现数据问题。

在您的用例中,您可以使用 notes 字段来满足您的需求。但是,如果您主要关心的是防止人们将任意数据粘贴到您的回调 url,您应该对您返回的交易 ID 进行一些验证。例如,您可以根据您的业务用例查看交易的时间戳或其他字段。