ホームページ > バックエンド開発 > PHPチュートリアル > 透明なリダイレクトをブレインツリーとともにリダイレクトします

透明なリダイレクトをブレインツリーとともにリダイレクトします

Lisa Kudrow
リリース: 2025-02-19 12:11:10
オリジナル
610 人が閲覧しました

透明なリダイレクトをブレインツリーとともにリダイレクトします

キーテイクアウト

  • 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に転送されます。それは次のようになります:

    透明なリダイレクトをブレインツリーとともにリダイレクトします

    ただし、透明なリダイレクトを使用して、フォームがBraintreeのサーバーに直接投稿し、応答がクライアントブラウザに送信されるようにフォームアクションが設定されます。ブラウザは、HTTP 303 Redirectを使用してWebサーバー上のスクリプトにリダイレクトされます。最後に、WebサーバースクリプトはBraintreeとのトランザクションを確認し、結果をクライアントブラウザーに提示します。そのため、そのモデルは次のようになります:

    透明なリダイレクトをブレインツリーとともにリダイレクトします

    私たちのベルトの下に理論があるので、先に進んでコードを書きましょう。完全なバージョンを見たい人は、githubでそれを見つけることができます。

    最初にやろうとしていることは、非常に基本的なHTMLフォームを作成して、処理のためにBraintreeに送信できるようにすることです。機能に焦点を合わせることができるように、これを可能な限りシンプルにします。

    composer require braintree/braintree:*
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ここでは複雑なことは何もありません。気付くのは、入力フィールド名が配列形式であることです。ここでは、有効なフィールド名の完全なリストを見ることができます。そのページから指摘しているもう1つのことは、入力名に配列を使用することに問題があるフレームワークを使用している場合(私はあなたを見ている、Zend Framework!)、代替ダブルアンダースコアを使用できることです。構文。したがって、有効期限の入力は次のようになります:

    <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>
    ログイン後にコピー
    ログイン後にコピー
    あなたが気付くかもしれない他の唯一のことは、私が自分のフォームに「オートコンプリート」属性を追加し、その価値をオフにすることです。 Braintreeはこれを行うことをお勧めします、そして、私はこれの理由が明らかであることを願っています…フォームに透明なリダイレクトの魔法を活用するために必要なことは他にもいくつかあります。しかし、それを行う前に、BraintreeのAPIで動作するようにスクリプトを構成する必要があります。

    それを行う方法を説明する前に、明確にするために、サンプルコードのすべてのPHPとHTMLを同じファイルに入れたことに言及します。セットアップコードが私のプロジェクトのブートストラップファイルに入ること、およびフォーム処理コードがコントローラーアクションまたは他の個別のファイルに移動することを言うことは言うまでもありません。わかりました、十分に謝罪します - このことをセットアップしましょう!

    最初の行では、追加のファイルを明示的に含めることなく、ComposerのAutoloaderを利用してBraintreeのライブラリを使用することができます。うまくいけば、次の4行が馴染みのあるように見えることを願っています。なぜなら、前のセクションで紹介したサンドボックスコントロールパネルAPIキーツールから逐語的にコピーされたからです。明らかに、これを独自のコントロールパネルアカウントのコードに置き換えます。
    <span><span><span><input</span> type<span>="text"</span> name<span>="transaction__credit_card__expiration_date"</span>></span></span>
    ログイン後にコピー
    ログイン後にコピー
    次にやりたいことは、顧客がTrを使用する全体のポイントであるBraintreeに顧客が直接敏感なデータを送信するように、フォームアクションを設定することです。幸いなことに、Braintreeライブラリは、ヘルパーオブジェクト/メソッドを提供することにより、これを非常に簡単にします。そのため、フォームコードを次のように変更するだけです
    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ステートメント内のコードのみを実行するようにしています。

    次に起こることは、透明なリダイレクトからクエリ文字列を取得し、それをBraintreeに送り返してトランザクションを完了する必要があることです。そのため、別のライブラリ関数(braintree_transparentRedirect ::確認)を実行し、Braintreeに先に進んで支払いを処理するように指示するために、URLクエリ文字列を提供します。それが起こると、Braintreeはスクリプトを結果のオブジェクトに送信します。内部的には、そのオブジェクトはbraintree_result_errorまたはbraintree_result_successfulのいずれかにすることができますが、両方のオブジェクトにはブール成功プロパティがあるため、トランザクションが成功したかどうかを確認できます。

    おそらく、トライ/キャッチブロックで確認全体をラップしたことにも気付きました。同じページを使用してフォームを表示して処理することの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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート