LiqPayとPHP4-実装経験と問題解決オプション

こんにちは!Habraコミュニティ!

liqpay支払いシステムに出会いました。 原則として、システムは非常に快適な第一印象を作ります。

しかし、サイトに統合しようとすると、いくつかの欠点と問題に遭遇しました。

彼らの説明と解決策をあなたと共有したいと思います。



サポートフォーラム



非常に面白い写真-フォーラムをざっと見て、興味のあるAPIと統合に関する質問への回答を探しています。 liqpayからの回答の大部分:「問題の解決策を記載した手紙がメールに送信されました」...

このようなフォーラムのために、これは何ですか、すみません。 プライベートでのコミュニケーション? なぜそれが必要なのですか、答えを得るためにサポートする手紙を書く必要があるのですか?

申し訳ありませんが、解決策が見つかりませんでした。 それでも、サポートサービスは、問題を抱えている人に個人的に応答するよりも、一般に回答する方が簡単であることを理解すると思います。



文言



私にとって2番目の驚きは、用語の表現が正確ではなかったことです。

たとえば、選択した「商人に有利な支払いを受け取るためのAPI」のページで:

マーチャントパスワード(merchant_sig)は、システムへのストアの登録時に発行される一意のマーチャントレコードです。

認証後、ストア設定セクションで、merchant_id(販売者番号)とmerchant_sig(販売者の署名{パスワード})を確認できます。

「Liq&Buy 1.2インストール手順」からの引用



登録時に、マーチャントには2つの署名が発行されますが、いずれもMerchant_sigとは呼ばれません...

1つは「送金API LiqPay操作の署名」、もう1つは「他の操作の署名」と呼ばれます。

したがって、インターネット経由でAPI経由で支払いを受け取るには、「API LiqPay」という言葉ではなく、残りの操作に適しています。



PHPバージョンとsha1



統合の推奨事項で、PHPバージョン情報が見つかりませんでした(または単に表示されませんでした)。 結局のところ、liqpayはそのようなシステム要件を公開しています。

コード例:

PHP:$ sign = base64_encode(sha1($ merc_sign。$ Xml。$ Merc_sign、1));

Perl:$ sign = encode_base64(sha1($ merc_sign。$ Xml。$ Merc_sign));

「Liq&Buy 1.2のインストール手順::署名の作成」からの引用



PHPバージョン4でいくつかのプロジェクトをサポートしているため、最初に書いたテストは彼女のためでした。 インタープリターは、Sha1関数のパラメーターの数の不一致のエラーを示しました。 通常の開発者として、ドキュメントに目を向けると、2番目のオプションのパラメーターはバージョン5.0.0でのみ導入されたことがわかります。



解決策:


  1. シンプル:PHP 5へのアップグレード
  2. 複雑な(:)):ドキュメントを注意深く読み、パラメータを使用した場合と使用しない場合の関数の動作の違いを理解します。


パラメーターがない場合、sha1はハッシュを40ビットの16進数として返します。

パラメータは、20文字のバイナリ文字列の形式のハッシュです。

したがって、40ビットの16進数をバイナリ文字列に変換する必要がありますか? 20文字で構成されます。

判明したように、これは非常に簡単に行われます- パック機能があなたのためにそれを行います:)

合計

PHP5:sha1($str,true) = PHP4:pack( "H40", sha1($str) )





出来上がり:)

それが興味深く、より多くの状況が発生する場合-退会してください:)



All Articles