使用Braintree透明重定向注册表单

Rob*_*her 7 ruby ruby-on-rails braintree

我正在开发Rails中的应用程序,并希望用户能够在一个表单上注册并提供他们的卡详细信息.我正在使用Braintree API及其透明重定向,这意味着表单数据直接发布到Braintree.

如何存储并稍后从该表单中检索用户提供的与付款无关的信息,例如帐户名,用户名?Braintree提供的响应中不会返回这些值.

如果你看一下Basecamp注册过程,这就是我想要实现的结果.

谢谢

知更鸟

Sim*_*ver 10

好的,如果关闭JavaScript会发生什么.看起来BaseCamp选择通过AJAX发送信用卡,buto还处理禁用JavaScript并将整个表单传输给他们的情况 - 包括非支付字段.

谢谢Fiddler和BaseCamp.

  • 用户填写表格,其中包含付款数据和您在HTML表单上可能需要的任何其他内容,用于注册,运送,购物车等.

  • 表格提交至https://secure.braintreepaymentgateway.com/api/transact.php

  • BrainTree发挥其魔力并将信用卡添加到保险库中,并将所有信息传回您的页面.它

它是通过实际调用一个你必须处理它然后处理它的URL来实现的.

https://signup.37signals.com/basecamp/plus/signup?transparent_redirect_complete=1
&signup[page]=
&signup[source]=basecamphq.com
&signup[data][first_name]=FRED
&signup[data][last_name]=FLINTSTONE
&signup[data][email_address]=FRED@BEDROCK.COM
&signup[data][name]=FRED
&signup[data][time_zone_id]=Eastern%20Time%20%28US%20%26%20Canada%29
&signup[data][identity_url]=
&signup[data][user_name]=BAMBAM
&signup[data][password]=pebbles123
&signup[data][confirm_password]=pebbles123
&signup[data][subdomain]=bedrock.com
&signup[referrer_code]=
&signup[coupon_code]=
&signup[accepts_eula]=1
&response=1
&responsetext=Customer+Added
&authcode=
&transactionid=
&avsresponse=
&cvvresponse=
&orderid=
&type=
&response_code=100
&customer_vault_id=1253608313
&username=865251
&time=20091129014038
&amount=
&hash=63209ad25560f9a961525d65b63e31be
Run Code Online (Sandbox Code Playgroud)

据推测,响应代码为100表示​​"不良信用卡",因为我输入了一个假的CC号进行测试.

4)您可以随意重新显示页面.

突出的问题:如果交易成功,希望卡的最后4位数字回来.


Pre*_*ids 0

我将在我即将开展的一个项目中使用 Braintree 的透明重定向,并且我自己考虑过这一点,我认为最好的选择是将表单分成两页。第一页的表单 POST 到您的应用程序,包括帐户名、用户名等。第二页的表单只是付款信息,并 POST 到 Braintree。

这样您就可以在第一步验证他们的信息。如果发现他们的电子邮件地址中有拼写错误并且无法联系到他们,或者他们的用户名已被占用,或者他们的密码和密码确认不匹配,或者其他什么情况,那么他们可以在 Braintree 向他们收取费用之前更正该问题。卡片。您绝对不希望有人向您付款,然后发现他们的帐户未成功创建,否则您会遇到一些非常不满意的客户。

因此,在我看来,两页是最简洁的方法。我没有看过 37signals 使用的流程 - 我的猜测是他们使用 Javascript 来捕获表单的提交,然后将帐户信息发送到他们的应用程序进行验证和保存。如果不是,它们会显示错误消息。如果是,他们会让向 Braintree 提交表格。这将使他们将注册表单保留在一页上,但听起来对我来说会很混乱。不过,您可以查看他们网站的 javascript,看看您能看到什么。

编辑- 是的,看起来这就是他们所做的。他们使用的是 Prototype,我对此不太熟悉,但您可以在该文件的底部亲自查看他们的代码。实际上,看起来并没有那么糟糕——我可以自己尝试一下。