# 印度支付API文档:www.deekpay.com

# 印度支付API文档

1. 访问“开发者中心”-“API密钥”部分,点击“创建API密钥”。每个API密钥都拥有独立的配置页面,并绑定到固定的IP地址(“0.0.0.0”表示无IP过滤,允许任何IP访问)。您可以根据不同需求配置不同的API密钥。请务必保密您的访问密钥和秘密密钥,以防止资产损失。一旦秘密密钥生成,将无法再次查看,请确保及时保存。如果您忘记秘密密钥,可以在商家后台回收密钥对并申请新的密钥。

2. 点击“开发者中心”-“API密钥”。

3. 选择是否启用调试模式(启用调试模式后,您将收到标准化的错误消息和日志查看地址,以便查看任何错误)。

4. 选择API密钥权限。

5. 输入白名单地址(“0.0.0.0”代表任何IP地址均可访问)。

注意:当输入白名单域名时,使用逗号分隔多个IP。

6. 点击“创建”以生成API密钥。

(生成API密钥后,您可以在下方的“我的API密钥”列表中复制、查看、编辑和删除它。请注意,秘密密钥仅在生成时出现一次,请妥善保管。如果您忘记秘密密钥,请回收密钥对并申请新的密钥。)

7. 点击“编辑”以启用或禁用“开始调试”选项,并修改API密钥权限和白名单地址。修改后,点击“保存”。

8. 注意:创建或编辑API密钥后,请等待90秒以使API密钥生效。

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请求头(header)中传递上述公共参数(不包括secret_key)。公共参数包括(access_key、timestamp、nonce、sign)。其他签名参数请参考API接口描述。

13. 定义一个Map字典对象,并将请求中的参数以键值形式添加。

14. 将第一步中定义的Map中的access_key、timestamp和nonce添加。

15. 根据ASCII码(字典顺序)对Map中的属性进行升序排序,并将Map转换为“key1=value1&key2=value2”格式的字符串。

16. 使用secret_key对上一步转换的字符串进行HMAC_SHA1加密,并进行Base64编码以获得sign参数值。secret_key是商家平台创建的apikey中的信息。

17. 将sign值和其他必需参数添加到请求头,并发送请求到目标接口。

18. SignUtil:登录到收银台-开发者中心-API文档-签名工具,打开签名工具页面(在工具中使用有效的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

请求类型:Header: {‘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. 请求参数:

– amount:收款金额,小数点后不能超过2位(String)(例如,40.20)- 必需

– channelType:支付类型(String)(例如,BANK、UPI、IMPS、BANK)- 必需

– externalOrderId:商家订单号(最大64个字符)(String)(例如,716134866255702461)- 必需

– notifyUrl:通知URL(String,URL)(例如,http://192.168.1.135:30001)- 可选

– remark:备注(最大255个字符)(String)(例如,123)- 可选

– returnUrl:返回地址(String,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:String – 货币代码

– amount:String – 收款金额

– tradeNote:String – 备注

23. 请求方法:POST

请求URL:/api/v3/ind/createTransferOrder

请求类型:Header: {‘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:支付类型(String)(例如,BANK)- 必需

– externalOrderId:商家订单号(最大64个字符)(String)(例如,687279463984441035)- 必需

– accountId:银行账户号码(String)(例如,13178968584)- 必需

– accountType:银行账户类型(String)(例如,INR)- 必需

– ifSC:银行代码(String)(例如,YESB)- 根据实际情况必需

– bankName:银行名称(String)(例如,YesBank)- 根据实际情况可选

– userInfoName:用户信息(String)(例如,test)- 根据实际情况可选

– remark:备注(最大255个字符)(String)(例如,123)- 可选

– notifyUrl:通知URL(String,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

请求类型:Header: {‘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个字符)(String)- 必需

– orderId:系统订单号(String)- 必需

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

请求类型:Header: {‘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个字符)(String)- 必需

– orderId:系统订单号(String)- 必需

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

请求类型:Header: {‘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

请求类型:Header: {‘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:银行名称(String)- 必需

36. 响应类型:Header: {‘Content-Type’: ‘application/json;charset=utf-8’}

响应数据:

– bankName:String – 银行名称

– bankCode:String – 银行代码

– currencyType:String – 货币类型

– channelBankId:String – 渠道银行ID

– channelId:String – 渠道ID

– BankName:AndhraBank, Bank of Baroda, BandhanBank, CentralBank of India, CanaraBank, DCBBank, FederalBank, HDFCBank, ICICIBank, IDFCFirst Bank, IndianBank, IndianOverseasBank, KarnatakaBank, KotakMahindra Bank, KarurVysyaBank, PunjabNationalBank, StateBank of India, StandardCharteredBank, SouthIndianBank, SyndicateBank, UnionBank of India, UCOBank, UPI, AxisBank, YesBank, BNIB, Canara Bank, DCB Bank, Federal Bank, HDFC Bank, Punjab National Bank, Indian Bank, ICICI Bank, Syndicate Bank, Karur Vysya Bank, Union Bank of India, Kotak Mahindra Bank, IDFC First Bank, Andhra Bank, Karnataka Bank, icici corporate bank, Axis Bank, UCO Bank, South Indian Bank, Yes Bank, Standard Chartered Bank, State Bank of India, Indian Overseas Bank, Bandhan Bank, Central Bank of India, Bank of Baroda, UPI

37. 验证描述:

通过互联网传输的API请求极易受到篡改。为确保回调的完整性,您可以设置回调参数签名认证。设置方法为:登录到收银台-开发者中心-回调地址-添加。

38.