# India Payments API Documentation: www.deekpay.com

# India Payments API ドキュメント

1.デベロッパーセンター(Developer Centre)"-"APIキー(API Key) "セクションで "APIキーの作成(Create API Key) "をクリックします。各APIキーには独自の設定ページがあり、固定IPアドレスにバインドされます(「0.0.0.0」はIPフィルタリングがないことを意味し、どのIPからのアクセスも許可します)。異なるニーズに応じて、異なるAPIキーを設定することができます。資産の損失を防ぐため、アクセスキーとシークレットキーは必ず秘密にしてください。シークレットキーは一度生成されると二度と見ることができませんので、必ず期限内に保存してください。シークレットキーを忘れた場合は、マーチャントバックエンドでキーペアをリサイクルし、新しいものをリクエストすることができます。

2. "デベロッパーセンター"-"APIキー "をクリックします。

3.デバッグモードを有効にするかどうかを選択します(デバッグモードを有効にすると、標準化されたエラーメッセージと、エラーを表示するためのログ表示アドレスが表示されます)。

4.APIキー権限を選択します。

5.ホワイトリストのアドレスを入力する(「0.0.0.0」は、どのIPアドレスでもアクセスできることを意味する)。

注:ホワイトリストに登録されているドメイン名を入力する場合は、カンマで複数のIPを区切ってください。

6.CreateをクリックしてAPIキーを生成する。

(APIキーを生成した後、下の「マイAPIキー」リストでコピー、表示、編集、削除ができます。シークレットキーは生成時に一度だけ表示されますので、大切に保管してください。シークレットキーを忘れた場合は、キーペアをリサイクルして新しいものをリクエストしてください)。

7.編集をクリックして、デバッグ開始オプションを有効または無効にし、APIキーの許可とホワイトリストのアドレスを変更します。変更後、"Save "をクリックする。

8.注意:APIキーを作成または編集した後、APIキーが有効になるまで90秒待ちます。

9.現在のAPIキーは、リクエスト・ヘッダーに以下のパラメーターを必要とする:

- access_key: APIアクセスキー(例:TPhoa7ZQ) - 必須

- timestamp: ミリ秒単位のタイムスタンプ(13桁、例:1679669488472) - 必須

- nonce: UUID(36桁、例:02f7a04f-53cc-47d4-bb3f-fae69dab49ac) - 必須

- sign: パラメーターの署名(例:GXx2wYUD6UVr+zcmeCSFFPzcBLA=) - 必須

10.インターネット経由で送信されるAPIリクエストは、改ざんの影響を非常に受けやすい。リクエストの完全性を保証するために、プライベート・インターフェース(基本情報や市場データなどのパブリック・インターフェースを除く)は、送信中にパラメータやパラメータ値が変更されていないことを検証するために、APIキーを使用した署名で認証されなければなりません。

11.有効なリクエストには以下のコンポーネントが含まれる:

- access_key: APIアクセスキー

- secret_key:署名暗号化のための秘密鍵(APIキー適用中にバックグラウンドで一度だけ表示されます。)

- timestamp: リクエストを送信した時間(UTC時間)。例えば、1632811287325(13桁)。クエリーリクエストにこの値を含めることで、第三者によるリクエストの傍受を防ぐことができます。

- nonce: ランダムなUUID文字列。例: 053a1b81-48a0-4bb1-96b2-60f6e509d911 (36桁)

- sign:署名によって計算される値で、署名の有効性と完全性を保証するために使用される。

12.すべてのインターフェースは、HTTPリクエスト・ヘッダーに上記のパブリック・パラメーター(secret_keyを除く)を渡す必要がある。公開パラメータには(access_key、timestamp、nonce、sign)が含まれる。その他の署名パラメータについては、APIインターフェースの説明を参照してください。

13.Map辞書オブジェクトを定義し、リクエストのパラメータをキーと値として追加する。

14.ステップ1で定義したMapに、access_key、timestamp、nonceを追加する。

15.マップの属性をASCII(辞書順)の昇順にソートし、マップを "key1=value1&key2=value2 "形式の文字列に変換する。

16.HMAC_SHA1は、前のステップで変換された文字列をsecret_keyで暗号化し、Base64エンコードしてsignパラメータ値を取得する。secret_keyは、マーチャント・プラットフォームが作成したapikeyの情報である。

17.リクエストヘッダに符号値と他の必要なパラメータを追加し、リクエストをターゲッ トインターフェースに送る。

18.SignUtil:Cashier-Developer Centre-API Documentation-Signature Toolにログインし、SignUtilページを開きます(ツールで有効なaccess_keyを使用し、このaccess_keyのIPホワイトリストを0.0.0.0に設定します。デバッグが完了したら、access_keyを破棄することを強くお勧めします)。

19.リクエスト・メソッド:GET

リクエストURL: /ping

回答データ:

- version: String - このドキュメントのすべてのインターフェイスが正しくリクエストできる場合に返されます。

- timestamp: int64 - Unix タイムスタンプ

20.リクエスト・メソッド:POST

リクエストURL:/api/v3/ind/createCollectingOrder

リクエストタイプ: ヘッダー: {'Content-Type': 'application/json;charset=utf-8'}.

リクエストヘッダ:

- access_key: 加盟店のバックオフィスから (例: pFqV75X3)

- timestamp: Unixタイムスタンプ(13桁、ミリ秒)(例:1679724896223)

- nonce: UUID V4 (例: 794c26b0-d33c-4394-b2bb-c485eca16d9e)

- sign:計算された署名(例:kAXyh+eerqrefyaF8dyFB0M4FVo=)

21.リクエストパラメーター

- 金額: 受け取る金額。小数点以下2桁まで(文字列) (例: 40.20) - 必須

- channelType: 支払いタイプ(文字列)(例:BANK、UPI、IMPS、BANK) - 必須

- externalOrderId: 取引先オーダー番号(最大64文字)(文字列)(例:716134866255702461) - Required

- notifyUrl: notifyURL (文字列, URL) (例: http://192.168.1.135:30001) - オプション

- remark: 備考 (最大255文字) (文字列) (例: 123) - オプション

- returnUrl: リターンアドレス(文字列、URL)(例:http://192.168.1.135:30001) - オプション

22.レスポンスタイプ: Header: {'Content-Type': 'application/json;charset=utf-8'}.

回答データ:

- cashierUrl: String - レジへのリンク

- orderId: String - システムオーダーID

- externalOrderId: String - マーチャントオーダーID

- currency: 文字列 - 通貨コード

- amount: String - コレクションの金額

- tradeNote: String - メモ

23.リクエスト・メソッド:POST

リクエストURL:/api/v3/ind/createTransferOrder

リクエストタイプ: ヘッダー: {'Content-Type': 'application/json;charset=utf-8'}.

リクエストヘッダ:

- access_key: 加盟店のバックオフィスから (例: pFqV75X3)

- timestamp: Unixタイムスタンプ(13桁、ミリ秒)(例:1679724896223)

- nonce: UUID V4 (例: 794c26b0-d33c-4394-b2bb-c485eca16d9e)

- sign:計算された署名(例:kAXyh+eerqrefyaF8dyFB0M4FVo=)

24.リクエストパラメーター

- currencyAmount: 小数点以下2桁までの支払い金額(String)(例:40.20) - 必須

- channelType: 支払いタイプ (文字列) (例: BANK) - Required

- externalOrderId: 取引先オーダー番号(最大64文字)(文字列)(例:687279463984441035) - 必須

- accountId: 銀行口座番号 (文字列) (例: 13178968584) - 必須

- accountType: 銀行口座タイプ (文字列) (例: INR) - 必須

- ifSC: 銀行コード(文字列)(例:YESB) - 該当する場合は必須

- bankName: 銀行名 (文字列) (例: YesBank) - 状況により任意

- userInfoName: ユーザー情報 (String) (例: test) - 状況によりオプション。

- remark: 備考 (最大255文字) (文字列) (例: 123) - オプション

- notifyUrl: notifyURL (文字列, URL) (例: http://192.168.1.135:30001) - オプション

25.レスポンスタイプ: Header: {'Content-Type': 'application/json;charset=utf-8'}.

回答データ:

- orderId: String - オーダーID

- orderStatus: String - 注文状況

- externalOrderId: String - マーチャントオーダーID

- currencyType: String - 法定通貨の種類。

26.リクエスト・メソッド:POST

リクエストURL:/api/v3/ind/query/collectingOrder

リクエストタイプ: ヘッダー: {'Content-Type': 'application/json;charset=utf-8'}.

リクエストヘッダ:

- access_key: 加盟店のバックオフィスから (例: pFqV75X3)

- timestamp: Unixタイムスタンプ(13桁、ミリ秒)(例:1679724896223)

- nonce: UUID V4 (例: 794c26b0-d33c-4394-b2bb-c485eca16d9e)

- sign:計算された署名(例:kAXyh+eerqrefyaF8dyFB0M4FVo=)

27.リクエストパラメーター

- externalOrderId: 取引先注文番号(最大64文字)(文字列) - 必須

- orderId: システム注文番号 (文字列) - Required

28.レスポンスタイプ: Header: {'Content-Type': 'application/json;charset=utf-8'}.

回答データ:

- orderId: String - オーダーID

- cashierId: String - レジID

- orderType: int64 - オーダータイプ

1 - コレクション

- orderResourceType: int64 - 注文のビジネスタイプ。

2 - 法定入札注文

- userId: String - ユーザーID

- orderStatus: int64 - 注文状況

1 - 支払い済み

2 - 支払い成功

- orderTime: int64 - 注文開始時刻。

- channelOrderId: String - 注文が関連付けられているチャンネル注文ID。

- externalOrderId: String - 加盟店の注文番号

- orderAmount: String - 注文金額

- orderActualAmount: String - 実際の注文金額。

- orderFee: int64 - オーダー料金

- orderPayTime: int64 - オーダーペイタイム

- orderCompleteTime: int64 - 注文完了時間。

- currencyType: String - 通貨の種類

- payType: int64 - 支払いタイプ

102: BANK

202: BANK

- tradeNote: String - メモ

- notifyUrl: String - コールバックURL

- markStatus: int64 - マークステータス

- errorMsg: String - エラーメッセージ。

- errorMsgEn: String - 英語のエラーメッセージ。

- accountType: String - 口座の種類

- accountName: String - アカウント名

- accountNo: String - 口座番号

- orderTypeCode: String - 注文タイプコード。

- orderResourceTypeCode: String - 注文ビジネスタイプコード。

- orderStatusCode: String - 注文ステータスの説明

- payTypeCode: String - 支払いタイプコード(payType を参照)。

29.リクエスト・メソッド:POST

リクエストURL:/api/v3/ind/query/transferOrder

リクエストタイプ: ヘッダー: {'Content-Type': 'application/json;charset=utf-8'}.

リクエストヘッダ:

- access_key: 加盟店のバックオフィスから (例: pFqV75X3)

- timestamp: Unixタイムスタンプ(13桁、ミリ秒)(例:1679724896223)

- nonce: UUID V4 (例: 794c26b0-d33c-4394-b2bb-c485eca16d9e)

- sign:計算された署名(例:kAXyh+eerqrefyaF8dyFB0M4FVo=)

30.リクエストパラメーター

- externalOrderId: 取引先注文番号(最大64文字)(文字列) - 必須

- orderId: システム注文番号 (文字列) - Required

31.レスポンスタイプ: Header: {'Content-Type': 'application/json;charset=utf-8'}.

回答データ:

- orderId: String - オーダーID

- cashierId: String - レジID

- orderType: int64 - オーダータイプ

2 - 支払い

- orderResourceType: int64 - 注文のビジネスタイプ。

2 - 法定入札注文

- userId: String - ユーザーID

- orderStatus: int64 - 注文状況

1 - 承認

2 - 銀行処理中

4 - 不合格(銀行は受け付けない)

8 - 成功

16 - 失敗

- orderTime: int64 - 注文開始時刻。

- channelOrderId: String - 注文が関連付けられているチャンネル注文ID。

- externalOrderId: String - 加盟店の注文番号

- orderAmount: String - 注文金額

- orderActualAmount: String - 実際の注文金額。

- orderFee: int64 - オーダー料金

- orderPayTime: int64 - オーダーペイタイム

- currencyType: String - 通貨の種類

- payType: int64 - 支払いタイプ

102: BANK

202: BANK

- tradeNote: String - メモ

- notifyUrl: String - コールバックURL

- markStatus: int64 - マークステータス

- errorMsg: String - エラーメッセージ。

- errorMsgEn: String - 英語のエラーメッセージ。

- accountType: String - 口座の種類

- accountName: String - アカウント名

- accountNo: String - 口座番号

- orderTypeCode: String - 注文タイプコード。

- orderResourceTypeCode: String - 注文ビジネスタイプコード。

- orderStatusCode: String - 注文ステータスの説明

- payTypeCode: String - 支払いタイプコード(payType を参照)。

32.リクエスト・メソッド:GET

リクエストURL:/api/v3/ind/query/balance

リクエストタイプ: ヘッダー: {'Content-Type': 'application/json;charset=utf-8'}.

リクエストヘッダ:

- access_key: 加盟店のバックオフィスから (例: pFqV75X3)

- timestamp: Unixタイムスタンプ(13桁、ミリ秒)(例:1679724896223)

- nonce: UUID V4 (例: 794c26b0-d33c-4394-b2bb-c485eca16d9e)

- sign:計算された署名(例:kAXyh+eerqrefyaF8dyFB0M4FVo=)

33.レスポンスタイプ: Header: {'Content-Type': 'application/json;charset=utf-8'}.

回答データ:

- accountBalance: String - 口座の利用可能残高

- accountFreezeAmount: String - 口座凍結額

- accountStatusId: int64 - アカウントステータスID

- accountWaitSettledAmount: String - 決済待ち口座金額

- currencyType: String - 法定通貨の種類。

- accountStatus: String - アカウントステータス

34.リクエスト・メソッド:POST

リクエストURL:/api/v3/ind/query/bank

リクエストタイプ: ヘッダー: {'Content-Type': 'application/json;charset=utf-8'}.

リクエストヘッダ:

- access_key: 加盟店のバックオフィスから (例: pFqV75X3)

- timestamp: Unixタイムスタンプ(13桁、ミリ秒)(例:1679724896223)

- nonce: UUID V4 (例: 794c26b0-d33c-4394-b2bb-c485eca16d9e)

- sign:計算された署名(例:kAXyh+eerqrefyaF8dyFB0M4FVo=)

35.リクエストパラメーター

すべての銀行を照会する必要がある場合は、空の文字列を渡してください。例

- bankName: 銀行名 (文字列) - Required

36.レスポンスタイプ: Header: {'Content-Type': 'application/json;charset=utf-8'}.

回答データ:

- bankName: String - 銀行名

- bankCode: String - 銀行コード

- currencyType: String - 通貨の種類

- channelBankId: String - チャンネルバンクID

- channelId: String - チャンネルID

- 銀行名: AndhraBank, Bank of Baroda, BandhanBank, CentralBank of India, CanaraBank, DCBBank, FederalBank, HDFCBank, ICICIBank.IDFCFirstBank、IndianBank、IndianOverseasBank、KarnatakaBank、KotakMahindraBank、KarurVysyaBank、PunjabNationalBank、StateBank of India、スタンダードチャータード銀行、南インド銀行、シンジケートバンク、ユニオンバンク・オブ・インディア、UCO銀行、UPI、アクシスバンク、イエスバンク、BNIB、カナラ銀行、DCB銀行、フェデラル銀行、HDFC銀行、パンジャブ・ナショナル銀行、インドステイトバンク・オブ・インディアBank, HDFC Bank, Punjab National Bank, Indian Bank, ICICI Bank, Syndicate Bank, Karur Vysya Bank, Union Bank of India, Kotak Mahindra Bank, IDFC Firstインド海外銀行、バンダナ銀行、インド銀行、ICICI銀行、シンジケート銀行、Karur Vysya銀行、ユニオン・バンク・オブ・インディア、インド銀行、バンダナ銀行、ICICI銀行、シンジケート銀行、Karur Vysya銀行、ユニオン・バンク・オブ・インディア、インド銀行、インド海外銀行、バンダナ銀行、インド銀行、ICICI銀行、シンジケート銀行、Karur Vysya銀行、ユニオン・バンク・オブ・インディアインド海外銀行、バンダン銀行、インド中央銀行、バローダ銀行、UPI

37.記述の検証

インターネット経由で送信されるAPIリクエストは、改ざんの影響を非常に受けやすい。コールバックの整合性を確保するために、コールバックのパラメータ「署名認証」を設定することができます。これを設定するには、Cashier - Developer Centre - Callback Address - Addにログインします。

38.