Pangalink-店舗の支払い方法

銀行リンク(pangalink)は、主にエストニアで配布されているクライアント、銀行、店舗の間で売買データを交換する方法です。 この方法は、銀行から店舗への有料サービスの形で提供され、支払いの可能性に加えて、ユーザーを認証する可能性があります(たとえば、教育上のsais.eeで使用されます )。 なぜこれが必要なのですか? クライアントにとって非常に便利なので、自分で判断してください-請求書を支払うプロセス全体:
  1. クライアントは必要な商品を選択し、最終的に請求書と銀行へのリンクを受け取ります
  2. リンク内では、支払いと請求書に関するすべてのデータが縫い合わされ、暗号耐性のある署名によって確認されます。 クライアントは、銀行で完全な情報アカウントを支払います。
  3. 銀行は、すべての支払い情報と署名を使用して、顧客を再びサイトにリダイレクトします。


エストニアにはすでにarved.eeがあり、ほぼすべての店舗に銀行のアイコンがある理由の1つです。 一般的に、動作するためには次のものが必要です。

暗号化

すべてがSSL保護モードで行われるため、銀行へのメッセージを生成するために銀行の公開鍵が必要であり、逆もまた同様です。銀行がストアの公開鍵で生成したメッセージをデコードする秘密鍵が必要です。 したがって、ストアの秘密鍵は次のようになります( base64エンコーディングのデータの方が簡単です) -----BEGIN RSA PRIVATE KEY-----

MIICWwIBAAKBgQC6GI5uaA7hEkgeP98VHL6TSxJwwPI+Mh+rFx KQPCgarT3/nZCS

Gz1r223+gfH/adV4IDvlbYT18VQ4vSspX+QRAidFeZvsfv99Fe wnwNoTL3LwYp/K

r9eW5YCpCEe8Crziks0vf92PNoHgNAL0iVo0Zma1ScDBSPBlQJ oZ1UiwoQIDAP//

-----END RSA PRIVATE KEY-----




-----BEGIN RSA PRIVATE KEY-----

MIICWwIBAAKBgQC6GI5uaA7hEkgeP98VHL6TSxJwwPI+Mh+rFx KQPCgarT3/nZCS

Gz1r223+gfH/adV4IDvlbYT18VQ4vSspX+QRAidFeZvsfv99Fe wnwNoTL3LwYp/K

r9eW5YCpCEe8Crziks0vf92PNoHgNAL0iVo0Zma1ScDBSPBlQJ oZ1UiwoQIDAP//

-----END RSA PRIVATE KEY-----




-----BEGIN RSA PRIVATE KEY-----

MIICWwIBAAKBgQC6GI5uaA7hEkgeP98VHL6TSxJwwPI+Mh+rFx KQPCgarT3/nZCS

Gz1r223+gfH/adV4IDvlbYT18VQ4vSspX+QRAidFeZvsfv99Fe wnwNoTL3LwYp/K

r9eW5YCpCEe8Crziks0vf92PNoHgNAL0iVo0Zma1ScDBSPBlQJ oZ1UiwoQIDAP//

-----END RSA PRIVATE KEY-----




したがって、PRIVATEの代わりに、公開キーには他のデータとPUBLICヘッダーがあります。 当然、秘密鍵は秘密であり、突然点灯した場合、十分なスキルを持っている人なら誰でも商品の架空の支払いに署名することができます。 キーはOpenSSLを使用して生成できます

PHPでの作業用

phpで記述し、キーを.pemファイルに保存し、POSTメソッドを使用してすべてをフォームで銀行に転送します。 つまり、データを受信する銀行のURLを設定するアクションとして、POSTメソッドを使用してフォームを作成します。 ハンザの場合、これはwww.hanza.net/cgi-bin/hanza/pangalink.jspです。 次に、VK_RETURN型の名前の隠しフィールド(支払い後に戻る必要があるリンク)をフォームに書き込みます。 各銀行には独自の変数と独自の順序があります。 全体は、関数openssl_pkey_get_privateとopenssl_signによって生成される同じ変数VK_MACによって署名されています。商品が支払われた後、あなたのウェブサイトで支払い確認を行う必要があります。 これを行うには、銀行に送られたREQUEST変数を取り出し、同じVK_MACのopenssl_pkey_get_publicとopenssl_verifyを使用して署名を確認します。 銀行の署名が正しく、VK_SERVICE = 1101である場合、すべてが問題ありませんここにzone.eeの例があります -支払いフォームでのpay.php 、確認でのnotify.php 、および設定でのconfig.php c ++でも同様のことができますが、自然に大きな神経が必要です。



All Articles