settle.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. from library.jdbase.exceptions import JDException
  4. from library.jdopen import WithdrawMode
  5. from library.jdopen.client.api.base import BaseJdOpenAPI
  6. class JdOpenSettle(BaseJdOpenAPI):
  7. def create_account(
  8. self, customerNum, bankAccountName, bankAccountNum, province, city, bankName, bankBranchName,
  9. settleAmount, payBankList, accountType, phone,
  10. privateType = None, settlerCertificateCode = None, settlerCertificateStartDate = None,
  11. settlerCertificateEndDate = None
  12. ):
  13. """
  14. 创建结算账户
  15. """
  16. url = "/v2/agent/declare/settleinfo/create"
  17. data = {
  18. "customerNum": customerNum,
  19. "bankAccountName": bankAccountName,
  20. "bankAccountNum": bankAccountNum,
  21. "province": province,
  22. "city": city,
  23. "bankName": bankName,
  24. "bankBranchName": bankBranchName,
  25. "settleAmount": settleAmount,
  26. "accountType": accountType,
  27. "phone": phone,
  28. "privateType": privateType,
  29. "settlerCertificateCode": settlerCertificateCode,
  30. "settlerCertificateStartDate": settlerCertificateStartDate,
  31. "settlerCertificateEndDate": settlerCertificateEndDate
  32. }
  33. sendData = {_k: str(_v) for _k, _v in data.items() if _v is not None}
  34. sendData["payBankList"] = payBankList
  35. return self._post(url, data = sendData)
  36. def modify_account(
  37. self, settleNum, customerNum, bankAccountName, bankAccountNum, province, city, bankName, bankBranchName,
  38. settleAmount, payBankList, accountType, phone,
  39. privateType = None, settlerCertificateCode = None, settlerCertificateStartDate = None,
  40. settlerCertificateEndDate = None
  41. ):
  42. """
  43. 修改结算账户
  44. """
  45. url = "/v2/agent/declare/settleinfo/modify"
  46. data = {
  47. "settleNum": settleNum,
  48. "customerNum": customerNum,
  49. "bankAccountName": bankAccountName,
  50. "bankAccountNum": bankAccountNum,
  51. "province": province,
  52. "city": city,
  53. "bankName": bankName,
  54. "bankBranchName": bankBranchName,
  55. "settleAmount": settleAmount,
  56. "accountType": accountType,
  57. "phone": phone,
  58. "privateType": privateType,
  59. "settlerCertificateCode": settlerCertificateCode,
  60. "settlerCertificateStartDate": settlerCertificateStartDate,
  61. "settlerCertificateEndDate": settlerCertificateEndDate
  62. }
  63. sendData = {_k: str(_v) for _k, _v in data.items() if _v is not None}
  64. sendData["payBankList"] = payBankList
  65. return self._post(url, data = sendData)
  66. def get_account(self, settleNum):
  67. """
  68. 获取结算账户信息
  69. """
  70. return self._post("/v1/agent/declare/settleinfo/{}".format(settleNum))
  71. def query_settle(self, customerNum, startTime, endTime, pageNum = 1, pageSize = 10):
  72. def processor(self, result):
  73. if result['result'] == 'error':
  74. raise JDException(
  75. errCode = result['error'].get('errorCode'),
  76. errMsg = result['error'].get("errorMsg"),
  77. client = self)
  78. else:
  79. return result
  80. url = '/api/queryAllSettleInfo'
  81. data = {
  82. "customerNum": customerNum,
  83. "queryStartTime": startTime.strftime('%Y-%m-%d %H:%M:%S'),
  84. "queryEndTime": endTime.strftime('%Y-%m-%d %H:%M:%S'),
  85. "pageNum": pageNum,
  86. "pageSize": pageSize
  87. }
  88. return self._post(url = url, data = data, processor = processor)
  89. def set_settle_way(self, customerNum, settleWay):
  90. from library.jdopen import SettleWay
  91. assert settleWay in SettleWay.choices(), u'settle way must be MANUAL or AUTOMATIC'
  92. url = "/agent/settle/way/set"
  93. data = {
  94. "agentNum": self.agentNum,
  95. "customerNum": customerNum,
  96. "remitWay": settleWay
  97. }
  98. return self._post(url = url, data = data)
  99. def query_settle_way(self, customerNum):
  100. url = "/agent/settle/way/query"
  101. data = {
  102. "agentNum": self.agentNum,
  103. "customerNum": customerNum
  104. }
  105. return self._post(url = url, data = data)
  106. def query_balance(self, customerNum):
  107. url = '/agent/account/balance/query'
  108. data = {
  109. "agentNum": self.agentNum,
  110. "customerNum": customerNum
  111. }
  112. return self._post(url = url, data = data)
  113. def withdraw_apply(self, customerNum, requestNum, totalAmount, withdrawMode = WithdrawMode.D1):
  114. assert withdrawMode in WithdrawMode.choices(), u'settle way must be D0 or D1'
  115. url = '/agent/cash/withdrawal/apply'
  116. data = {
  117. "agentNum": self.agentNum,
  118. "customerNum": customerNum,
  119. 'totalAmount': totalAmount,
  120. 'requestNum': requestNum,
  121. 'withdrawMode': withdrawMode
  122. }
  123. return self._post(url = url, data = data)
  124. def query_withdraw_result(self, customerNum, requestNum):
  125. url = '/agent/cash/withdrawal/result/query'
  126. data = {
  127. "agentNum": self.agentNum,
  128. "customerNum": customerNum,
  129. 'requestNum': requestNum
  130. }
  131. return self._post(url = url, data = data)
  132. def query_withdraw_list(self, customerNum, startTime, endTime):
  133. url = '/agent/deposit/fund/detail/query'
  134. data = {
  135. "agentNum": self.agentNum,
  136. "customerNum": customerNum,
  137. 'startTime': startTime,
  138. 'endTime': endTime,
  139. 'pageNum': '1'
  140. }
  141. return self._post(url = url, data = data)