# -*- coding: utf-8 -*- # !/usr/bin/env python from library.jdbase.exceptions import JDException from library.jdopen import WithdrawMode from library.jdopen.client.api.base import BaseJdOpenAPI class JdOpenSettle(BaseJdOpenAPI): def create_account( self, customerNum, bankAccountName, bankAccountNum, province, city, bankName, bankBranchName, settleAmount, payBankList, accountType, phone, privateType = None, settlerCertificateCode = None, settlerCertificateStartDate = None, settlerCertificateEndDate = None ): """ 创建结算账户 """ url = "/v2/agent/declare/settleinfo/create" data = { "customerNum": customerNum, "bankAccountName": bankAccountName, "bankAccountNum": bankAccountNum, "province": province, "city": city, "bankName": bankName, "bankBranchName": bankBranchName, "settleAmount": settleAmount, "accountType": accountType, "phone": phone, "privateType": privateType, "settlerCertificateCode": settlerCertificateCode, "settlerCertificateStartDate": settlerCertificateStartDate, "settlerCertificateEndDate": settlerCertificateEndDate } sendData = {_k: str(_v) for _k, _v in data.items() if _v is not None} sendData["payBankList"] = payBankList return self._post(url, data = sendData) def modify_account( self, settleNum, customerNum, bankAccountName, bankAccountNum, province, city, bankName, bankBranchName, settleAmount, payBankList, accountType, phone, privateType = None, settlerCertificateCode = None, settlerCertificateStartDate = None, settlerCertificateEndDate = None ): """ 修改结算账户 """ url = "/v2/agent/declare/settleinfo/modify" data = { "settleNum": settleNum, "customerNum": customerNum, "bankAccountName": bankAccountName, "bankAccountNum": bankAccountNum, "province": province, "city": city, "bankName": bankName, "bankBranchName": bankBranchName, "settleAmount": settleAmount, "accountType": accountType, "phone": phone, "privateType": privateType, "settlerCertificateCode": settlerCertificateCode, "settlerCertificateStartDate": settlerCertificateStartDate, "settlerCertificateEndDate": settlerCertificateEndDate } sendData = {_k: str(_v) for _k, _v in data.items() if _v is not None} sendData["payBankList"] = payBankList return self._post(url, data = sendData) def get_account(self, settleNum): """ 获取结算账户信息 """ return self._post("/v1/agent/declare/settleinfo/{}".format(settleNum)) def query_settle(self, customerNum, startTime, endTime, pageNum = 1, pageSize = 10): def processor(self, result): if result['result'] == 'error': raise JDException( errCode = result['error'].get('errorCode'), errMsg = result['error'].get("errorMsg"), client = self) else: return result url = '/api/queryAllSettleInfo' data = { "customerNum": customerNum, "queryStartTime": startTime.strftime('%Y-%m-%d %H:%M:%S'), "queryEndTime": endTime.strftime('%Y-%m-%d %H:%M:%S'), "pageNum": pageNum, "pageSize": pageSize } return self._post(url = url, data = data, processor = processor) def set_settle_way(self, customerNum, settleWay): from library.jdopen import SettleWay assert settleWay in SettleWay.choices(), u'settle way must be MANUAL or AUTOMATIC' url = "/agent/settle/way/set" data = { "agentNum": self.agentNum, "customerNum": customerNum, "remitWay": settleWay } return self._post(url = url, data = data) def query_settle_way(self, customerNum): url = "/agent/settle/way/query" data = { "agentNum": self.agentNum, "customerNum": customerNum } return self._post(url = url, data = data) def query_balance(self, customerNum): url = '/agent/account/balance/query' data = { "agentNum": self.agentNum, "customerNum": customerNum } return self._post(url = url, data = data) def withdraw_apply(self, customerNum, requestNum, totalAmount, withdrawMode = WithdrawMode.D1): assert withdrawMode in WithdrawMode.choices(), u'settle way must be D0 or D1' url = '/agent/cash/withdrawal/apply' data = { "agentNum": self.agentNum, "customerNum": customerNum, 'totalAmount': totalAmount, 'requestNum': requestNum, 'withdrawMode': withdrawMode } return self._post(url = url, data = data) def query_withdraw_result(self, customerNum, requestNum): url = '/agent/cash/withdrawal/result/query' data = { "agentNum": self.agentNum, "customerNum": customerNum, 'requestNum': requestNum } return self._post(url = url, data = data) def query_withdraw_list(self, customerNum, startTime, endTime): url = '/agent/deposit/fund/detail/query' data = { "agentNum": self.agentNum, "customerNum": customerNum, 'startTime': startTime, 'endTime': endTime, 'pageNum': '1' } return self._post(url = url, data = data)