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

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

キーテイクアウト

  • 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>
    </span>	<span><span><span> lang<span>="en"</span>></span>
    </span>		<span><span><span>></span>
    </span>		    <span><span><span><div> id<span>="wrap"</span>>
    		        <span><span><span><form> method<span>="post"</span> action<span>=""</span> autocomplete<span>="off"</span>></form></span>
    </span>		            <span><span><span><label>></label></span>Name on Card: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][cardholder_name]"</span>></span><span><span></span>></span>
    </span>					<span><span><span><label>></label></span>Card Number: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][number]"</span>></span><span><span></span>></span>
    </span>					<span><span><span><label>></label></span>CVV: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][cvv]"</span> class<span>="short"</span>></span><span><span></span>></span>
    </span>					<span><span><span><label>></label></span>Expiration Date (MM/YYYY): <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][expiration_date]"</span> class<span>="short"</span>></span><span><span></span>></span>
    </span>					<span><span><span><input> type<span>="submit"</span> value<span>="submit payment"</span>></span>
    </span>			    <span><span><span></span>></span>
    </span>		    <span><span><span></span></span></span></span></span></span></span></span></span></span></span></span></span>
    </div></span>></span>
    </span>		<span><span><span></span>></span>
    </span>	<span><span><span></span>></span></span></span></span></span>
    あなたが気付くかもしれない他の唯一のことは、私が自分のフォームに「オートコンプリート」属性を追加し、その価値をオフにすることです。 Braintreeはこれを行うことをお勧めします、そして、私はこれの理由が明らかであることを願っています…フォームに透明なリダイレクトの魔法を活用するために必要なことは他にもいくつかあります。しかし、それを行う前に、BraintreeのAPIで動作するようにスクリプトを構成する必要があります。

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

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

    私たちがしなければならない他の唯一のことは、Braintreeがフォームを送信した後に顧客をリダイレクトするURLのハッシュされた表現を含む隠された入力を作成することです。それらを指定できるようにします。たとえば、これはトランザクション額を入力する可能性があります。スタイルの問題として、私はユーザーにエラーを表示して再提出する機会を与えることができるように、支払いフォーム自体に戻るURLを設定するのが好きです。これがどのように見えるかということです:

    <span><span>
    </span>	<span><span><span> lang<span>="en"</span>></span>
    </span>		<span><span><span>></span>
    </span>		    <span><span><span><div> id<span>="wrap"</span>>
    		        <span><span><span><form> method<span>="post"</span> action<span>=""</span> autocomplete<span>="off"</span>></form></span>
    </span>		            <span><span><span><label>></label></span>Name on Card: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][cardholder_name]"</span>></span><span><span></span>></span>
    </span>					<span><span><span><label>></label></span>Card Number: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][number]"</span>></span><span><span></span>></span>
    </span>					<span><span><span><label>></label></span>CVV: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][cvv]"</span> class<span>="short"</span>></span><span><span></span>></span>
    </span>					<span><span><span><label>></label></span>Expiration Date (MM/YYYY): <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][expiration_date]"</span> class<span>="short"</span>></span><span><span></span>></span>
    </span>					<span><span><span><input> type<span>="submit"</span> value<span>="submit payment"</span>></span>
    </span>			    <span><span><span></span>></span>
    </span>		    <span><span><span></span></span></span></span></span></span></span></span></span></span></span></span></span>
    </div></span>></span>
    </span>		<span><span><span></span>></span>
    </span>	<span><span><span></span>></span></span></span></span></span>

    明らかに私はここで量を強くコードしていますが、本番アプリでは、サーバー側のロジックを使用してこれを生成するか、不特定の合計で寄付フォームの場合、フォームフィールドを作成しますユーザーが提供できるようにします。また、通常、「決済のために送信」オプションをtrueに設定します。それ以外の場合は、このトランザクションは単に

    になります

    今、私はこれを私のフォームに隠しフィールドとして追加する必要があります:

    <span><span><span><input> type<span>="text"</span> name<span>="transaction__credit_card__expiration_date"</span>></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></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 までご連絡ください。
Laravelでフラッシュセッションデータを使用しますLaravelでフラッシュセッションデータを使用しますMar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法PHPのカール:REST APIでPHPカール拡張機能を使用する方法Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキングLaravelテストでの簡略化されたHTTP応答のモッキングMar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

ストレージを使用してLaravelでファイルのダウンロードを発見してください::ダウンロードストレージを使用してLaravelでファイルのダウンロードを発見してください::ダウンロードMar 06, 2025 am 02:22 AM

ストレージ:: Laravelフレームワークのダウンロード方法は、ファイルストレージの抽象化を管理しながら、ファイルのダウンロードを安全に処理するための簡潔なAPIを提供します。 サンプルコントローラーでストレージ::ダウンロード()を使用する例は次のとおりです。

Codecanyonで12の最高のPHPチャットスクリプトCodecanyonで12の最高のPHPチャットスクリプトMar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。PHPにおける後期静的結合の概念を説明します。Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHPロギング:PHPログ分析のベストプラクティスPHPロギング:PHPログ分析のベストプラクティスMar 10, 2025 pm 02:32 PM

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Laravelサービスプロバイダーを登録および使用する方法Laravelサービスプロバイダーを登録および使用する方法Mar 07, 2025 am 01:18 AM

Laravelのサービスコンテナとサービスプロバイダーは、そのアーキテクチャの基本です。 この記事では、サービスコンテナ、詳細サービスプロバイダーの作成、登録、および実用的な使用法を例で説明します。 Oveから始めます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

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