我正在使用web api(Android和IOS)将Square POS与Web应用程序集成。
如何在Intent调用Android和IOS时将系统的事务ID传递给square,以便稍后我可以在Connect API的Retrieve Transaction端点验证它们?
IOS文档提到使用“状态”,但我目前正在使用Android,而且没有这样的提及。
我是否应该尝试使用“注释”字段(Android的S.com.squareup.pos.NOTE或IOS的“注释”)?
我真的需要一个我可以依赖IOS和Android的单个字段,因为我的Retrieve Transaction到Connect 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,我无法验证它是来自“旧”交易。我知道你可能会说我可以第一次存储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与“注释”字段匹配,并仔细检查金额是否正确。这将有助于防止欺诈/误用,并且如果由于互联网连接错误导致无法加载回调URL,也可以防止系统出现数据问题。
答案 0 :(得分:0)
在您的使用案例中,您可以使用notes
字段来满足您的需求。但是,如果您主要关心的是阻止人们将任意数据粘贴到您的回调网址,那么您应该对您获得的交易ID进行一些验证。例如,您可以查看事务的时间戳或其他字段,具体取决于您的业务用例。