透明なリダイレクトをブレインツリーとともにリダイレクトします
キーテイクアウト
- Braintree Payment Solutionsは、中小企業のPCIコンプライアンスの負担を最小限に抑えるためのソリューションとして透明なリダイレクトとBraintree.jsを提供しています。 透明なリダイレクトにより、クレジットカードデータをBraintreeのサーバーに直接送信し、ビジネスオーナーのシステムをバイパスして、データ侵害のリスクを軽減できます。
- Braintree PHPクライアントライブラリは、透明なリダイレクトのための統合プロセスを簡素化しますが、顧客のクレジットカード情報と同じフォームに関する非支払い関連情報の収集と検証を複雑にする可能性があります。 透明なリダイレクトを実装するには、ビジネスオーナーはウェブサイトを支払いゲートウェイのAPIと統合し、顧客の支払い情報をゲートウェイに直接投稿するフォームを設定し、ウェブサイトに送信される応答を処理する必要があります。
- 透明なリダイレクトはセキュリティを強化し、ウェブサイトのパフォーマンスを向上させますが、Web開発と支払いゲートウェイAPIをより深く理解する必要があります。これは、一部のビジネスオーナーにとって潜在的な欠点になる可能性があります。
- 「PCIコンプライアンス」に関する単なる言及は、通常、クレジットカードの支払いをオンラインで受け入れるビジネスオーナーから混乱したルックスと汗まみれの手のひらの組み合わせを引き出します。しかし、それは本当に何を意味しますか?
- これは複雑なトピックですが、短いバージョンは、セキュリティポリシーと手順を標準化する一連のルールを作成するために、2006年に支払いカード業界セキュリティ基準評議会(PCI SSC)と呼ばれる評議会を設立したことです。機密性の高いクレジットカード情報を処理および保存するときは、その商人は(PCI DSS)に従う必要があります。システムが準拠しているかどうかを判断するために、通常、8つのオプションのいずれかから適切な自己評価アンケート(SAQ)を選択し、一連の質問に答えて、実際に準拠しているかどうかを判断します。大企業はしばしば、資格のあるセキュリティ評価者(QSA)のサービスを採用して、SAQ D(SAQの中で最も関与している)に数十万ドルの費用がかかる可能性があります。さらに悪化するために:システムが侵害され、侵害されたときにそれらが準拠していないと判断された場合、インシデントあたり最大500,000ドルの罰金を科せられる可能性があります。
では、中小企業のオーナーは何をすべきか?そこには、Braintree Payment Solutionsが登場します。PCIコンプライアンスの負担を最小限に抑えるための2つのソリューションを提供しています:透明リダイレクトとBraintree.js。 Braintreeも他のPCI DSS準拠のサービスプロバイダーも、どのSAQに記入するか、またはシステムが準拠しているかどうかを伝えることはできないことに言及する必要があります。しかし、彼らは業界をリードするQSAであるセキュリティメトリックと組み合わせて、すべての顧客がPCIコンプライアンスを達成および維持するのに役立つコストフリーソリューションを提供しています。そして、彼らの経験では、透明なリダイレクトまたはbraintree.jsを使用している顧客は通常、SAQ Aよりもはるかに関与していない(したがって費用がかかる)SAQ Aに記入することができました。詳細はこちらをご覧ください。
しかし、十分な背景。いくつかのコードを書きましょう。
始めましょう
この記事は、透明なリダイレクト方法に焦点を当てます。最初にしなければならないことは、サーバー側のAPIキーを取得するためにBraintreeに向かうことです。制作アカウントのない人のために、ブラウザをBraintree Sandboxに向けて、テストアカウントにサインアップしてください。ログインして、「アカウント - > APIキー」をクリックします。次に、[新しい生成]ボタンをクリックし、最後に、新しく生成されたAPIキーの秘密キー列の[表示]をクリックします。 Braintreeクライアントライブラリを構成するために必要なすべての情報が含まれる次の画面に表示されます。
さまざまな言語で構成コードを生成するツールもあることがわかります。
今度は、実際のBraintree PHPクライアントライブラリをインストールする時が来ました。次のコマンドを実行することで作曲家とそれを行うことができます:
composer require braintree/braintree:*
ログイン後にコピーログイン後にコピーログイン後にコピー透明なリダイレクト
SAQ DまたはSAQ Aに記入する必要があるかどうかを判断するのに役立つ主な要因の1つは、クレジットカードデータがシステムを介して送信されるかどうかです。また、典型的なサーバーからサーバー(S2S)モデルの最初に、Webサーバーはお客様のブラウザに支払いフォームを送信します。フォームに記入した後、顧客は送信を押します。これはデータをWebサーバーに投稿します。これにより、そのデータの一部が検証と処理のためにBraintreeに転送されます。それは次のようになります:
私たちのベルトの下に理論があるので、先に進んでコードを書きましょう。完全なバージョンを見たい人は、githubでそれを見つけることができます。
最初にやろうとしていることは、非常に基本的なHTMLフォームを作成して、処理のためにBraintreeに送信できるようにすることです。機能に焦点を合わせることができるように、これを可能な限りシンプルにします。
ここでは複雑なことは何もありません。気付くのは、入力フィールド名が配列形式であることです。ここでは、有効なフィールド名の完全なリストを見ることができます。そのページから指摘しているもう1つのことは、入力名に配列を使用することに問題があるフレームワークを使用している場合(私はあなたを見ている、Zend Framework!)、代替ダブルアンダースコアを使用できることです。構文。したがって、有効期限の入力は次のようになります:composer require braintree/braintree:*
ログイン後にコピーログイン後にコピーログイン後にコピーあなたが気付くかもしれない他の唯一のことは、私が自分のフォームに「オートコンプリート」属性を追加し、その価値をオフにすることです。 Braintreeはこれを行うことをお勧めします、そして、私はこれの理由が明らかであることを願っています…フォームに透明なリダイレクトの魔法を活用するために必要なことは他にもいくつかあります。しかし、それを行う前に、BraintreeのAPIで動作するようにスクリプトを構成する必要があります。<span><span><!doctype html></span> </span> <span><span><span><html</span> lang<span>="en"</span>></span> </span> <span><span><span><body</span>></span> </span> <span><span><span><div</span> id<span>="wrap"</span>></span> </span> <span><span><span><form</span> method<span>="post"</span> action<span>=""</span> autocomplete<span>="off"</span>></span> </span> <span><span><span><label</span>></span>Name on Card: <span><span><input</span> type<span>="text"</span> name<span>="transaction[credit_card][cardholder_name]"</span>></span><span><span></label</span>></span> </span> <span><span><span><label</span>></span>Card Number: <span><span><input</span> type<span>="text"</span> name<span>="transaction[credit_card][number]"</span>></span><span><span></label</span>></span> </span> <span><span><span><label</span>></span>CVV: <span><span><input</span> type<span>="text"</span> name<span>="transaction[credit_card][cvv]"</span> class<span>="short"</span>></span><span><span></label</span>></span> </span> <span><span><span><label</span>></span>Expiration Date (MM/YYYY): <span><span><input</span> type<span>="text"</span> name<span>="transaction[credit_card][expiration_date]"</span> class<span>="short"</span>></span><span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="submit payment"</span>></span> </span> <span><span><span></form</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span></body</span>></span> </span> <span><span><span></html</span>></span></span>
ログイン後にコピーログイン後にコピーそれを行う方法を説明する前に、明確にするために、サンプルコードのすべてのPHPとHTMLを同じファイルに入れたことに言及します。セットアップコードが私のプロジェクトのブートストラップファイルに入ること、およびフォーム処理コードがコントローラーアクションまたは他の個別のファイルに移動することを言うことは言うまでもありません。わかりました、十分に謝罪します - このことをセットアップしましょう!
次にやりたいことは、顧客がTrを使用する全体のポイントであるBraintreeに顧客が直接敏感なデータを送信するように、フォームアクションを設定することです。幸いなことに、Braintreeライブラリは、ヘルパーオブジェクト/メソッドを提供することにより、これを非常に簡単にします。そのため、フォームコードを次のように変更するだけです<span><span><span><input</span> type<span>="text"</span> name<span>="transaction__credit_card__expiration_date"</span>></span></span>
ログイン後にコピーログイン後にコピーcomposer require braintree/braintree:*
ログイン後にコピーログイン後にコピーログイン後にコピー私たちがしなければならない他の唯一のことは、Braintreeがフォームを送信した後に顧客をリダイレクトするURLのハッシュされた表現を含む隠された入力を作成することです。それらを指定できるようにします。たとえば、これはトランザクション額を入力する可能性があります。スタイルの問題として、私はユーザーにエラーを表示して再提出する機会を与えることができるように、支払いフォーム自体に戻るURLを設定するのが好きです。これがどのように見えるかということです:
<span><span><!doctype html></span> </span> <span><span><span><html</span> lang<span>="en"</span>></span> </span> <span><span><span><body</span>></span> </span> <span><span><span><div</span> id<span>="wrap"</span>></span> </span> <span><span><span><form</span> method<span>="post"</span> action<span>=""</span> autocomplete<span>="off"</span>></span> </span> <span><span><span><label</span>></span>Name on Card: <span><span><input</span> type<span>="text"</span> name<span>="transaction[credit_card][cardholder_name]"</span>></span><span><span></label</span>></span> </span> <span><span><span><label</span>></span>Card Number: <span><span><input</span> type<span>="text"</span> name<span>="transaction[credit_card][number]"</span>></span><span><span></label</span>></span> </span> <span><span><span><label</span>></span>CVV: <span><span><input</span> type<span>="text"</span> name<span>="transaction[credit_card][cvv]"</span> class<span>="short"</span>></span><span><span></label</span>></span> </span> <span><span><span><label</span>></span>Expiration Date (MM/YYYY): <span><span><input</span> type<span>="text"</span> name<span>="transaction[credit_card][expiration_date]"</span> class<span>="short"</span>></span><span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="submit payment"</span>></span> </span> <span><span><span></form</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span></body</span>></span> </span> <span><span><span></html</span>></span></span>
ログイン後にコピーログイン後にコピー明らかに私はここで量を強くコードしていますが、本番アプリでは、サーバー側のロジックを使用してこれを生成するか、不特定の合計で寄付フォームの場合、フォームフィールドを作成しますユーザーが提供できるようにします。また、通常、「決済のために送信」オプションをtrueに設定します。それ以外の場合は、このトランザクションは単に
になります今、私はこれを私のフォームに隠しフィールドとして追加する必要があります:
<span><span><span><input</span> type<span>="text"</span> name<span>="transaction__credit_card__expiration_date"</span>></span></span>
ログイン後にコピーログイン後にコピーデータをBraintreeに提出する準備ができたので、実際の透過リダイレクト応答を処理するためのコードを追加する必要があります。
<span><span><?php </span></span><span> <span>require('vendor/autoload.php'); </span></span><span> </span><span> <span>Braintree_Configuration<span>::</span>environment('sandbox'); </span></span><span> <span>Braintree_Configuration<span>::</span>merchantId('YOUR_MERCHANT_ID'); </span></span><span> <span>Braintree_Configuration<span>::</span>publicKey('YOUR_PUBLIC_KEY'); </span></span><span> <span>Braintree_Configuration<span>::</span>privateKey('YOUR_PRIVATE_KEY'); </span></span><span> </span><span> <span>?></span></span>
ログイン後にコピー今、私たちがやったことを把握しましょう。ユーザーが送信ボタンを押すと、フォームがBraintreeに直接投稿され、すべての顧客の機密情報がPCI CSS準拠のサーバーに安全に保存されます。次に、HTTP 303リダイレクトがブラウザに送信され、ユーザーは$ TR_DATA変数を生成するときに指定したURLにユーザーを送信し、URLのクエリ文字列にいくつかのパラメーターを追加します。
データが正常に送信されると、これらのパラメーターの1つはhttp_statusであり、すべてがBraintreeのサーバーでスムーズに実行されている場合、200に設定されます。しかし今のところ、支払い情報をシステムに正常に送信した場合、このIFステートメント内のコードのみを実行するようにしています。おそらく、トライ/キャッチブロックで確認全体をラップしたことにも気付きました。同じページを使用してフォームを表示して処理することの1つの欠点は、結果を1回しか確認できないことです。つまり、トランザクションに失敗した後に誰かがリロードボタンにぶつかった場合、コードは期限切れのクエリ文字列を再構成しようとし、Braintreeは例外をスローします。
必要なものがすべて揃っているので、先に進んでテストトランザクションを実行できます。サンドボックスの使用に関する完全なドキュメントはこちらにありますが、本当に興奮してすぐにトランザクションを成功させたい場合は、「カードの名前」41111111111111(15枚の後に411111111111)に名前を入力してください。 「カード番号」として、CVVボックスの123、および将来の日付は有効期限として。すべてがうまくいった場合は、サンドボックスに戻り、「Advanced Search」の下で「トランザクション」をクリックし、「検索」ボタンをクリックした後、最初の成功したトランザクションを参照してください。派手になる
透明なリダイレクトは、PCIコンプライアンスの負担を最小限に抑えるのに役立つ素晴らしい方法ですが、慣れる必要があるいくつかの癖があります。まず、Braintreeのトランザクション、顧客、またはクレジットカードオブジェクトに対応しない支払いフォームにデータを含めたい場合は、「カスタムフィールド」機能を使用する必要があります。ユーザーのお気に入りの色をキャプチャしたかったとしましょう。私が最初にすることは、コントロールパネルに移動し、「設定 - >処理」をクリックすることです。 「カスタムフィールド」セクションまで下にスクロールし、[新規]をクリックします。次の画面に表示されます
API名は、フォーム入力の名前属性で参照するものです。ディスプレイ名は参照用です。トランザクションでBraintreeにカスタムフィールドの値を保存するか、単にサーバーに渡すかどうかを指定できます。
それを収集することは、単に次のフィールドをフォームに追加する問題です。
Braintreeコントロールパネルにカスタムフィールドを追加せずにそれを試みた場合、検証エラーがトリガーされます。
検証といえば、TRは支払いフォームのサーバー側の検証を複雑にすることができます。顧客のメールアドレスが要求したかったとしましょう。トランザクションがすでに確認されるまで、ユーザーが空白のままにしていたことはわかりません。私が見つけた解決策は、TRスクリプトの成功ブロックで検証を実行し、検証が渡されない場合にトランザクションを無効にすることです。そのため、次のようにコードが変更されます
ご覧のとおり、ローカル検証が渡されない場合、BrainTree_Result_SuccessオブジェクトからのトランザクションIDを使用して、クライアントライブラリを使用してトランザクションを無効にします。最後に、基本的な例では、すべてのフィールドには、Braintreeがサーバーから隠している機密性の高いクレジットカードデータが含まれているため、ユーザーのフォームフィールドの再埋設を気にしませんでした。しかし、いくつかの顧客データを追加したので、Braintree結果オブジェクトからのデータを使用して、これらのあまり感度の低いフィールドを事前に埋めることができます。私のgithubサンプルに完全なコードを見ることができますが、何が起こっているのかを理解するための秘trickは、braintree_result_successオブジェクトがトランザクションプロパティにユーザーがサビされたフォームデータを保存しているのに対し、braintree_result_errorはそれをparamsプロパティに保存していることを知ることです。たとえば、最初の名前変数は$ result-> transaction-> customer ['firstName']で見つかりますが、トランザクションが成功したときに、失敗したトランザクションは$ result-> params ['transaction'] ['に保存されます。 customer '] [' firstName ']。
ラッピング
Braintreeの透明なリダイレクトは、アプリケーションの機密性の高い顧客データへの露出を最小限に抑える方法の1つです。お客様のクレジットカード情報と同じフォームに関する支払い関連情報。
次回は、他の巧妙なソリューションをご覧ください:braintree.js。
透明なリダイレクトに関するよくある質問
支払い処理に透明なリダイレクトを使用する主な目的は何ですか?
トランザクションのセキュリティを強化するために、支払い処理に透明なリダイレクトが使用されます。顧客の機密データを、商人のサーバーをバイパスして、支払いゲートウェイに直接送信できます。これにより、データ侵害のリスクが軽減され、商人が支払いカード業界のデータセキュリティ基準(PCI DSS)に準拠するのに役立ちます。透明なリダイレクトである最適化は、HTTP要求の数を減らすのに役立ち、それによりサイトの負荷速度が向上します。ユーザーがWebページにアクセスすると、サーバーはステータスコードを使用してHTTP応答を送信します。ステータスコードがリダイレクトを示している場合、ブラウザは追加のHTTP要求を行う必要があります。これにより、読み込み時間が遅くなる可能性があります。透明なリダイレクトは、この余分なステップを排除し、ウェブサイトをより速く、より効率的にすることができます。
自分のウェブサイトに透明なリダイレクトを実装するにはどうすればよいですか? 透明なリダイレクトを実装するには、技術的な知識が必要です。 WebサイトをPayment GatewayのAPIと統合する必要があります。これには、顧客の支払い情報をゲートウェイに直接投稿するフォームをWebサイトに設定することが含まれます。次に、ゲートウェイはトランザクションを処理し、ウェブサイトへの応答を送り返します。
透明なリダイレクトを使用することの利点は何ですか?
透明リダイレクトを使用することの主な利点はセキュリティの強化と改善されていますウェブサイトのパフォーマンス。マーチャントのサーバーをバイパスすることにより、透明なリダイレクトがデータ侵害のリスクを減らします。また、HTTPリクエストの数を減らすことにより、ウェブサイトの読み込み速度を改善するのにも役立ちます。
以上が透明なリダイレクトをブレインツリーとともにリダイレクトしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPには4つの主要なエラータイプがあります。1。notice:わずかなものは、未定義の変数へのアクセスなど、プログラムを中断しません。 2。警告:通知よりも深刻で、ファイルを含むなど、プログラムを終了しません。 3。ファタラー:最も深刻なのは、機能を呼び出すなど、プログラムを終了します。 4。ParseError:構文エラーは、エンドタグの追加を忘れるなど、プログラムの実行を防ぎます。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

Phpoopでは、self ::は現在のクラスを指し、親::は親クラスを指し、静的::は後期静的結合に使用されます。 1.Self ::静的方法と一定の呼び出しに使用されますが、後期静的結合をサポートしていません。 2.Parent ::サブクラスには、親クラスのメソッドを呼び出すために使用され、プライベートメソッドにアクセスできません。 3.Static ::継承と多型に適した後期静的結合をサポートしますが、コードの読みやすさに影響を与える可能性があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。
