コンピューター ウィンドウズ インターネット

支払いの一意の識別子は何ですか? 支払いの一意の識別子を確認するにはどうすればよいですか? 操作「以前に受信したリクエスト識別子に基づいて、法人のステートメントのリクエストの結果を受信するリクエスト入力パラメータの説明

請求書とその後の支払いがプロジェクト側で正しく処理できることを確認するために、検証が実行されます。

統合が簡素化されているため、ユーザーIDと注文は、支払いフォームに切り替えるときと支払い方法を選択するときの2回検証されます。

プロジェクトのニーズ:

  • ユーザーIDまたは注文確認URL(個人アカウントの技術設定で指定してください);
  • システムからの要求のパラメーターを受け入れて認識し、システムが期待するとおりに応答できるハンドラー。

請求書の発行後の識別子の検証がエラーで終了した場合、請求書は発行されず、ユーザーはパラメータを使用してプロジェクトで指定された支払いエラーページにリダイレクトされます return_url_failまたは技術設定(ページが指定されていない場合は、システム側で同様のページが使用されます)。 支払いエラーページへ GETメソッドを使用するパラメータは自動的に送信されます err_msg意味を持って 「このキャラクターは存在しません。」.

システムからプロジェクトへのパラメータの要求

システムは、個人アカウントの技術設定で指定されたユーザーIDまたは注文を確認するためのURLの要求をプロジェクトに送信します。

  • 転送方法- 役職;
  • エンコーディング- UTF-8.

パラメータ

パラメータの説明

パラメータフォーマット

必須パラメーター

ユーザーID ユーザーまたは注文ID(パラメーター値と等しい) ニックネーム v) 文字列(256) はい
userid_extra プロジェクト側で支払いを行ったり統計を収集したりするために必要な追加情報(パラメーターの値に等しい) nick_extra ) 文字列(500) 番号

リクエストの検証署名。 これは、次のパラメーターの連結からmd5アルゴリズムに従ってハッシュとして形成されます。

  • パラメータ値 ユーザーID,
  • プロジェクトの秘密鍵
md5(0userid0プロジェクトシークレット) はい
0 はい
Paymentid チェックリクエストをチェックしています。 ゼロのみを受け入れます(金額= 0) 0 はい
orderid プロジェクトの会計システムの支払いID(パラメーターの値に等しい) order_id v) varchar(64) 番号

プロジェクトの応答パラメータ

プロジェクトは、システムの要求に対する応答を受け取る必要があります。

クエリパラメータを渡すには、次のルールが使用されます。

  • フォーマット - XML;
  • エンコーディング- UTF-8.

パラメータ

パラメータの説明

パラメータフォーマット

必須パラメーター

コード

応答コードを要求します。

  • はい-識別子が存在します。
  • 番号-識別子が存在しません

(大文字と小文字を区別)

はい
コメント 要求応答コードのデコード。
テキストの例:
  • useridパラメーターの検証に失敗しました。
  • orderidパラメーターの検証に失敗しました。
  • キーパラメータの検証に失敗しました
文字列(400) 番号

ユーザーIDまたは注文を確認する要求への応答の例

はい

ユーザーまたは注文IDをチェックするときの最小限のシステム要求ハンドラーの例

//応答関数を生成しますsendResponse($ status、$ message = "")($ response = ""。" \ n "; $ response。=" "。" \ n "; $ response。=" "。$ステータス。""。" \ n "; $ response。=" 「。$メッセージ。」"。" \ n "; $ response。=""; die($ response);)//ユーザーIDまたは注文が存在するかどうかを確認しますfunction checkUser($ userID)($ sql =" SELECT login FROM users WHERE usr_id = ".intval($ userID); $ query = mysql_query( $ sql); if(mysql_error())(return FALSE;)if(mysql_num_rows($ query)== 0)(return FALSE;)return TRUE;)$ secretKey = "IT \" S_A_PROJECT_SECRET_WORD "; $ projectHash = md5($ _ POST ["amount"]。$ _ POST ["userid"]。$ _ POST ["paymentid"]。$ secretKey); if($ projectHash!= $ _POST ["key"])(sendResponse( "NO"、 "リクエストの検証署名が無効です。");)if(floatval($ _ POST ["amount"])== 0 && intval($ _POST ["paymentid"])== 0)(//ユーザーIDの確認または注文のリクエストif(checkUser($ _ POST ["userid"]))(sendResponse( "YES"、 "ID存在する ");)else(sendResponse(" NO "、" IDが見つかりません ");))

一般情報

  • 入力パラメータの説明

  • 入力データ: XMLドキュメントスキームWS_ULIPZAPRID_2_311_11_04_0による2 _01_01.XSD
        1. 出力パラメーターの説明

    出力:スキーマWS_OTVVIPULXSD_2_311_14_04_02_01.XSDに従ったXMLドキュメント

    また

    出力: WS_ULIPOTVID_2_311_09_04_02_01.XSDスキーマに従ったXMLドキュメント

    複合型パラメーターについては、付録「一般的なデータ構造の説明」(10、6、9節)で説明しています。

        1. 戻りコード




    戻りコード

    戻りコードの説明

    発生条件

    コメント

    1

    01

    要求された情報が見つかりませんでした。

    法人に関する情報が法人の統一州登録簿に見つからない場合に発生します

    2

    51

    処理のリクエストを受け付けました

    処理要求が正常に受信されたときに発生します



    3

    52

    答えは準備ができていません

    処理のために正常に受け入れられた要求に対して応答の準備ができていない場合に発生します

    非同期リクエストを行うときに使用されます

    4

    53

    法人/個人起業家に関する情報は、 電子形式で

    電子形式でリクエストへの応答を形成することが不可能な場合に発生します

    5

    82

    フォーマット-論理制御エラー

    ドキュメント(リクエスト)がxsd-schemaと一致しない場合に発生します

    予約、使用できません

    6

    83

    指定された要求IDとこの機関から要求された情報のタイプの要求はありません

    法人ステートメントのステートメントの結果を取得するためのリクエストで誤った(不明な)リクエスト識別子が示されている場合、および(または)そのような識別子を持つリクエストがこの機関から受信されていない場合に発生します

    非同期リクエストで使用されます(法人のステートメントリクエストの結果を受信する場合)

    9

    99

    システムエラー

    ロシア連邦税務局のISソフトウェアに内部エラーがある場合に発生します


        1. テストケース

    法人の声明を取得するための要求の結果を取得するための要求

    要求がまだ処理されていない場合の、法人の声明の要求の結果を受け取る要求への応答

    戻りコード53の法人のステートメントの要求の結果を受け取る要求への応答

    エラーのある法人の声明の要求の結果を受け取る要求への応答(その処理コードは予約されていません)
    (属性値が変更され、)



    注:テスト環境でのこのエラーの条件は、人為的にトリガーされました。 この例エラー応答の一般的なロジックと構造について説明します。 実稼働環境でテストする場合、必要な条件を提供せずにまったく同じ応答を返すことはできません。

    1. インターフェイスは、サブネットのIPアドレスからのHTTPS経由の要求を受け入れる必要があります。
      • 79.142.16.0、マスク255.255.240.0(20)
      • 91.232.230.0、マスク255.255.254.0(23)
    2. インターフェイスは、HTTPGETメソッドを使用してシステムから渡されたパラメータを処理する必要があります。
    3. インターフェイスは、UTF-8エンコーディングのXML形式でシステムへの応答を形成する必要があります。
    4. 情報の交換は「要求/応答」モードで実行されますが、応答速度は60秒を超えてはなりません。それ以外の場合、システムはタイムアウトによって接続を終了します。
    5. 接続されたプロバイダーのサービスに対して予想される支払い回数が多いと予想される場合(1分あたり最大10回以上の支払い)、インターフェイスは最大10〜15回の同時接続のマルチスレッド通信をサポートする必要があります。
    6. インターフェイスは、80、81、443、8008、8080、8081、8090、8443、4433のいずれかのTCPポートでHTTPS要求を受け入れる必要があります。他のポートの使用は許可されていません。

    インターフェースの基本原則

    すべてのリクエストはGETメソッドによって渡され、パラメータはリクエストパスで渡されます。

    支払いに関する情報のプロバイダーへの転送は、QIWI Walletシステムによって、サブスクライバーのステータスの確認と直接支払いの2つの段階で実行されます。 加入者にいくつかのサービスを提供するプロバイダーから追加の支払いパラメーターを取得する予備段階を追加して、支払人に通知し、支払人の選択で支払いパラメーターを追加することもできます。

    リクエストのタイプは、コマンド変数でQIWI Walletシステムによって送信されます-値check、pay、またはgetInfoをとる文字列:

    クエリパラメータ

    すべてのパラメーターは、それらが使用されるクエリで必要です。

    パラメータ フォーマット 説明 クエリが使用される場所
    txn_id 20文字までの整数 QIWIシステムでの支払いの一意の識別子。 この識別子は、物議を醸す問題を解決するために使用されます。 小切手、支払い
    100分の1まで正確な小数で、区切り文字として使用されます。 (点)。 合計が整数を表す場合でも、ドットとゼロが埋め込まれます(例:-152.00)。 お支払い金額 小切手、支払い
    ccy 通貨コードAlpha-3ISO 4217 支払い通貨 小切手、支払い
    txn_date YYYYMMDDHHMMSS 支払い日(システムでの支払い日とは、クライアントからのリクエストの受信日を意味します)。 この日付までに、QIWIウォレットとプロバイダーの間の決済のさらなる調整が実行されます。
    たとえば、クライアントは2010年12月31日の23:59:59にQIWI Walletシステムに要求を送信し、QIWIWalletシステムは2011年1月1日の00:00:05にプロバイダーに要求を送信しました。 これにより、プロバイダーのシステムがトランザクションを次の請求期間に配置した場合に、支払いの調整の問題が発生する可能性があります。 このような問題を回避するために、QIWIウォレットはプロバイダーに元の支払い日を提供します。
    支払い
    アカウント 最大200文字の文字、数字、特殊文字を含む文字列 サブスクライバーID。 プロバイダーは、一意の識別子(個人アカウント番号、電話番号、ログインなど)によってサブスクライバーを識別します。 プロバイダーに送信される前に、識別子は正規表現に対して検証されます。 小切手、支払い、getInfo
    追加 許可されるのは、数字(0〜9)、アンダースコア(_)、および小文字のラテン文字(a〜z)です。 追加の支払いの詳細(追加フィールド)。 これらのパラメーターは、追加データなしで支払いを行うことができない場合に使用できます(プロバイダーのシステムの1つのユーザーIDでは不十分です)。
    たとえば、ユーザーIDはクレジットカード番号ですが、支払いを行うにはカードの有効期限も指定する必要があります。
    プロバイダーへの送信に必要なフィールドのリストは、で指定する必要があります。
    小切手、支払い
    prvId 整数 のサービスID 共通システムプロバイダー。 情報を取得
    parameter_name パラメーターの名前と値の形式は、プロバイダーによってで指定されます。 サブスクライバー識別用の追加パラメーター 情報を取得

    プロトコルによって提供されるさまざまな機能が有効になっている間(たとえば、新しい支払いの詳細の転送を有効にするなど)、拡張性をサポートし、サービスプロバイダーの保守性を維持するために、プロバイダーは新しいHTTPパラメーターがリクエスト。

    リクエストに新しいパラメータが表示されても、そのようなロジックの変更がプロバイダーと合意されていない限り、プロバイダーによるリクエストの処理を変更する必要がないことが保証されます。

    応答形式

    プロバイダーは、要求に対する応答をXML形式でシステムに返す必要があります。 応答の一般的な構造は、右側のタブに示されています。

    123323498 12369Bdkjh9 100.00 643 2012-04-05T12:00:07 0

    プロバイダーへの要求のいずれかが失敗した場合、プロバイダーはに従ってエラーコードを返します。

    プロバイダーの情報システムには、同じtxn_id番号を持つ2つの成功した支払いが含まれていてはなりません。 システムがプロバイダーの情報システムにすでに存在するtxn_id識別子を使用して要求を再送信する場合、プロバイダーは前の要求の処理結果を返す必要があります。

    次のタグが応答に存在する可能性があります。

    たとえば、ある状況があります。クライアントが2010年12月31日の23:59:59にシステムに要求を送信しました。 データの処理と通信チャネルを介した情報の送信の遅延を考慮して、プロバイダーは2011年1月1日00:00:05に支払いを受け取り、それに応じて、別のレポート期間にプロバイダーのシステムに記録されます。 調整時に異なるレポート期間の問題を回避するには、プロバイダーがシステムでアカウンティングが行われた日付を返す必要があります。

    加入者の口座の状況を確認し、支払いを登録するリクエストの例

    条件の例:

    プロバイダーの支払いアプリケーションpayment_appはyourservice.prv.ruにあり、サーバーはポート8443でHTTPS接続をサポートします。

    サブスクライバーのステータスを確認するために、QIWI Walletシステムはリクエストを生成します(右側のタブを参照)。

    得る / Payment_app?コマンド=チェック&txn_id = 1234567&アカウント= 4957835959&合計= 10.45&ccy = RUB 1234567 2016AB 10.45 こする 0 わかった

    リクエストにはパラメータが含まれています:

    • command = check-サブスクライバーのステータスをチェックするための要求識別子。

    プロバイダーからの正常な応答(右側のタブを参照)。

    チェックリクエストに結果= 0を返すことは、アカウントフィールドに対応する番号を持つサブスクライバーの個人アカウントに、合計フィールドのリクエストで指定された金額を補充できることを示します。 加入者の口座状況の確認に成功した後、システムは残高の補充要求(支払い要求)の形成と送信に進みます。

    個人口座の補充依頼の例

    条件の例:

    支払いを確認するために、QIWI Walletシステムはリクエストを生成します(右側のタブを参照)。

    得る / Payment_app?コマンド= pay&txn_id = 1234567&txn_date = 20110815120133&account = 4957835959&sum = 10.45&ccy = RUB HTTP / 1.1ホスト:yourservice.prv.ru:8443プロバイダーの応答 1234567 2016AB 10.45 こする 0 わかった 2011-08-15T12:06:45

    リクエストにはパラメータが含まれています:

    • command = pay-サブスクライバーの残高を補充するための要求ID。
    • txn_id = 1234567-QIWIシステムの内部支払い番号。
    • txn_date = 20090815120133-QIWIシステムの支払い会計日。
    • account = 4957835959-プロバイダーの情報システムのサブスクライバー識別子。
    • 合計= 10.45-サブスクライバーの個人アカウントにクレジットされる金額。
    • ccy = RUB-加入者の個人口座に入金された金額の通貨。

    支払い要求に対して結果= 0を返すと、プロバイダーは残高補充操作が正常に完了したことを通知します。 システムは、このトランザクションの処理を完全に完了します。

    オプションのコメントフィールドには、サービスコメントが含まれます。

    追加の支払いデータを受け取るリクエストの例

    条件の例:

    プロバイダーの支払いアプリケーションpayment_appはyourservice.prv.ruにあり、サーバーはポート8443でHTTPS接続をサポートします。

    追加の支払いデータを取得するために、QIWI Walletシステムはリクエストを生成します(右側のタブを参照)。

    得る / Payment_app?コマンド= getInfo&prvId = 12345&account = 4957835959&name1 =%26%30AB&name2 = 0 HTTP / 1.1ホスト:yourservice.prv.ru:8443プロバイダーの応答 account1 term2 0 わかった

    リクエストにはパラメータが含まれています:

    • command = getInfo-サブスクライバーの追加の支払いデータを受信する要求の識別子。
    • prvId = 12345-サービスプロバイダーを識別するための識別子。
    • account = 4957835959-プロバイダーの情報システムのサブスクライバー識別子。
    • name1、name2-追加のサブスクライバー識別子。

    プロバイダーの回答については、右側のタブを参照してください。

    getInfoリクエストに結果= 0を返すことは、リクエストが正常に完了し、サブスクライバーに表示する追加のデータが受信されたことを示します。

    オプションのコメントフィールドには、サービスコメントが含まれます。

    毎日の和解

    モスクワ時間の10:00まで、システムは前日に受け取った支払いの電子記録を生成し、指定されたアドレスに送信します。

    レジストリの構造は次のとおりです。

    取引日(モスクワ);報告日;タイプ;取引番号;取引通貨ID;取引金額;販売者のコメント;販売者の取引/請求書番号;請求書発行日; QWID;アカウント;払い戻しID

    ;; 支払い; ;;;;;;;;

    ;; 支払い; ;;;;;;;;

    フィールドは記号で区切られます。 、合計の小数部分はドット、日付/時刻で区切られます-モスクワ、改行は両方の文字x0D x0A、および単にx0Dで構成できます。

    例えば:

    31.02.2005 00:04:00;31.02.2005

    00:00:00;支払い; 3464968222; USD; 5.00 ;;;;; 0957835959 ;;

    2005年2月31日00:04:00; 2005年2月31日00:00:00;支払い; 3464968912; RUB; 10.34 ;;;;; [メール保護];;

    2005年2月31日00:11:00; 2005年2月31日00:00:00;支払い; 3464974548; EUR; 4.72 ;;;;; ABC-12345 ;;

    システムは、レジスターに成功した支払いのみを含みます。

    確認済みの支払いは、メッセージのオンライン交換と登録の両方で行われた支払いと見なされます。

    レジスターにプロバイダーのデータベースで行われた支払いが含まれていない場合、プロバイダーのデータベースにない支払いが含まれている場合、またはレジスターが受信されない場合は、12:00までに契約で指定されたQIWI担当者に連絡する必要があります。状況を明確にし、決定を下すため。

    リクエストを承認するための追加オプション

    接続のアプリケーションでは、プロバイダーは識別子(ログイン)とそれにシークレットパスワードを指定できます。これらは、QIWIから要求を行う際の承認に使用されます。

    この認証データはによって送信されます 標準ルール HTTP(S)要求の基本認証。 AuthorizationHTTPヘッダーがリクエストに追加されます。 ヘッダーには、基本行(末尾にスペースがあります)と、BASE64でエンコードされた「ログイン:パスワード」のペアが含まれています。

    承認:基本***

    BASE64( "ログイン:パスワード")= "***"

    接続アプリケーション(サンプル)

    完了コードのリスト

    システムからのリクエストを処理する場合、プロバイダーは、アプリケーションで発生するすべてのエラーを以下のリストと照合し、要素内の対応するコードを返す必要があります。

    致命的な列の+記号は、致命的なエラーの兆候を示します。 QIWI Walletシステムの場合、致命的なエラーとは、同じパラメーターを使用してリクエストを再送信すると、同じエラーが100%繰り返されることを意味します。したがって、システムはクライアントリクエストの処理を停止し、エラーで終了します。

    致命的でないエラーとは、システムにとって、一定期間後に同じパラメーターを使用して要求を繰り返すと、成功につながる可能性があることを意味します。 システムは、致命的ではないエラーで失敗した要求を再試行し、操作が成功または失敗するまで、または要求が期限切れになるまで(24時間)間隔を継続的に増やします。

    プロバイダーのサーバーとの通信の失敗は致命的ではないエラーです。

    応答に要素がない(無効なXML、サービスが一時的に利用できないページなど)ことも、致命的ではないエラーです。

    コード