【发布时间】:2013-09-14 01:53:14
【问题描述】:
我正在尝试设置一个谷歌钱包支付流程,供用户购买参加锦标赛的入场券。为了做到这一点,用户必须填写一堆关于自己的信息(姓名、联赛球员号码、联系电话号码等),还有一些其他的数据是隐含的,比如唯一的标识符他们参加的比赛。
在 Google 电子钱包中似乎有两种方法可以实现此目的,我想知道我是否缺少另一种更好的工作流程和/或是否首选这两种方法中的一种。
可能性#1
当用户单击钱包按钮时,我将表单序列化并使用 ajax 将其提交到我的服务器。如果表单填写正确,服务器会将表单的所有内容编码到 JWT 的 SellerData 字段中,并异步返回 JWT。然后我将此 JWT 传递给钱包,期望在我的回发处理程序中接收它。
然后回发处理程序使用来自 JWT SellerData 字段的信息构造条目并将其记录在数据库中。
这种可能性对我来说很直观,并且我已经实现了它,但是我遇到了 SellerData 字段的 200 个字符的限制,因为它包含多个人的姓名、电话号码和各种其他表单元素。只是没有空间。我没有解决此问题的方法,欢迎提出想法。
这种方法的优点是在付款成功之前不会在我的数据库中创建任何内容,但我不知道如何解决在 JWT 中表示整个表单以以某种方式将其发送到回发处理程序的困难。
可能性 #2
用户只需使用正常的 Web 表单提交过程提交条目表单,这会在数据库中创建一些内容。以这种方式新创建的数据库对象被标记为“未付费”,因此是不完整的。
一旦用户在数据库中成功创建了他们的条目,他们就会看到一个第二页面,他们可以在该页面上付款。这会更好,因为我现在可以将他们刚刚创建的对象的数据库键放入 SellerData 字段,而不必担心大小限制。
它确实有不幸的副作用,即在数据库中有这些半完成的对象,以及冒着用户不太了解两步注册然后付款过程并忘记付款的风险.我必须非常小心和积极主动地确保用户意识到 A) 提交没有付款信息的表单是可以的,并且 B) 提交第一个表单并不意味着他们已经完成。
想法?
【问题讨论】:
-
一些想法:在选项 1 中 - 用户“个人资料”信息的唯一标识符怎么样(这样您可以最大限度地减少发送给 Google 的数据) - 在您的“付款会话”范围内持续存在?我意识到这就像选项 2,所以如果 db 不是首选(在这个阶段),客户端?在选项 2 中,不清楚为什么需要额外的步骤(似乎不需要“支付步骤”)。也许拥有关于“废弃购物车”(re: half-completed objects)的数据还不错?嗯……
标签: android-pay