7

Railsでアプリケーションを開発していて、ユーザーがサインアップして1つのフォームでカードの詳細を提供できるようにしたいと考えています。私はBraintreeAPIとその透過的なリダイレクトを使用しています。これは、フォームデータがBraintreeに直接投稿されることを意味します。

アカウント名、ユーザー名など、ユーザーから提供された支払いに関連しない情報をそのフォームから保存して後で取得するにはどうすればよいですか?これらの値は、Braintreeによって提供される応答では返されません。

Basecampの登録プロセスを見ると、これが私が達成したい結果です。

ありがとう

ロビン

4

4 に答える 4

10

JavaScript がオフになっている場合は次のようになります。BaseCamp は AJAX 経由でクレジット カードを送信することを選択したようですが、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

テストのために偽の CC 番号を入力したため、おそらく応答コード 100 は「クレジット カードが正しくない」ことを意味します。

4) ページは自由に再表示できます。

未解決の質問: トランザクションが成功した場合、カードの下 4 桁が戻ってくることを願っています。

于 2009-11-29T01:51:18.547 に答える
2

私はまったく同じニーズを抱えていました.

ユーザーフィールド用とクレジットカードの詳細用の2つのフィールドセットを持つフォームがあります

  • ユーザーが送信を押すと、ユーザーフィールドがシリアル化され、ajax 経由でアプリに送信されます
  • ユーザー フィールドの検証に合格すると、アプリは、以前はフォームから欠落していた透過的なリダイレクト トランザクション データを含む json で応答します。
  • フォームが複製され、値が透過的なリダイレクト トランザクション データである新しい入力が追加されます。
  • フォームがブレインツリーに送信されます。
  • 出来上がり、サインアップと支払いを同時に行う

おそらく、このjQueryスニペットが明確にするのに役立ちます: https://gist.github.com/742811

于 2010-12-16T00:08:54.123 に答える
0

私はこれから進行中のプロジェクトで Braintree の透過的なリダイレクトを使用する予定です。これについて自分で考えた結果、フォームを 2 ページに分割するのが最善の方法だと思います。最初のページのフォームはアプリに POST され、アカウント名、ユーザー名などが含まれます。2 ページ目のフォームは支払い情報のみで、Braintree に POST されます。

このようにして、最初のステップで情報を検証できます。電子メール アドレスにタイプミスがあり、連絡が取れない、ユーザー名が既に使用されている、パスワードとパスワードの確認が一致しないなどのことが判明した場合、Braintree が請求する前にそれを修正できます。カード。誰かにお金を払ってもらい、アカウントが正常に作成されなかったことを知ってほしくありません。

したがって、2ページが最もクリーンな方法のように思えます。私は 37signals が使用するプロセスを見ていません。私の推測では、彼らは Javascript を使用してフォームの送信をキャッチし、アカウント情報をアプリに送信して検証および保存していると思われます。そうでない場合は、エラー メッセージが表示されます。そうである場合、Braintree へのフォーム送信を許可します。これにより、サインアップ フォームを 1 ページに収めることができますが、面倒に思えます。ただし、彼らのサイトの JavaScript を見て、何が見えるかを確認することもできます。

編集- ええ、それが彼らの仕事のようです。彼らは Prototype を使用していますが、私はあまり詳しくありませんが、このファイルの下部にコードが表示されています。実際、それほど悪くはないように見えます-私はこれを自分で試してみるかもしれません.

于 2009-11-21T20:56:45.137 に答える