# India Payments API Documentation: www.deekpay.com
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.