jdOpenTest.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. # coding=utf-8
  2. import base64
  3. import datetime
  4. import json
  5. import os
  6. import time
  7. from pprint import pprint
  8. os.environ["DJANGO_SETTINGS_MODULE"] = "configs.dev_zjl"
  9. from base import init_env
  10. init_env(False)
  11. from apilib.monetary import VirtualCoin
  12. from apps.web.common.transaction.refund.jdaggre import JDAggreRefundNotifier
  13. from apps.web.user.transaction_deprecated import refund_cash, refund_post_pay
  14. from apps.web.user.models import RechargeRecord, RefundMoneyRecord
  15. from library.jdopen.client import JdOpenMerchantClient
  16. from library.jdopen.constants import OPEN_ACCESS_KEY, OPEN_SECRET_KEY
  17. from apps.web.merchant.models import JDOpenApplyInfo, MerchantSourceInfo
  18. from apps.web.merchant.utils import query_audit_result, get_location_by_area, query_merchant_settle, JdPsiMerchantApplier, get_psi_client, get_wechat_proxy, get_file, \
  19. get_ali_client
  20. import xmltodict
  21. from apps.web.core.models import WechatPayApp
  22. from library.wechatpy.pay import WeChatPay
  23. def get_industry():
  24. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  25. result = openClient.support.query_industry()
  26. pprint(result)
  27. def attach_upload():
  28. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  29. openClient.attach.upload_attach(
  30. customerNum="10001114504252653551690",
  31. attachType="attachType",
  32. content="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAA"
  33. )
  34. def create_customer():
  35. data = {
  36. 'agentNum': '10001016435484143212321',
  37. 'fullName': '哆啦宝商户',
  38. 'shortName': u'哆啦宝',
  39. 'industry': '其它',
  40. 'province': '湖北',
  41. 'city': '武汉',
  42. 'district': '洪山',
  43. 'linkMan': '哆啦宝',
  44. 'linkPhone': '15777777777',
  45. 'customerType': 'PERSON',
  46. 'certificateType': 'IDENTIFICATION',
  47. 'certificateCode': '230604199304163012',
  48. 'certificateName': '张三',
  49. 'accountOpenLicense': 'J1234543534533',
  50. 'certificateStartDate': '2015-01-01',
  51. 'certificateEndDate': '2018-12-31',
  52. 'contactPhoneNum': '15777777777',
  53. 'linkManId': '230604199304163012',
  54. }
  55. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  56. result = openClient.customer.create_customer(**data)
  57. pprint(result)
  58. def modify_customer():
  59. data = {
  60. 'customerNum': "10001116605440862136783",
  61. 'agentNum': '10001016435484143212321',
  62. 'fullName': '哆啦宝商户',
  63. 'shortName': u'哆啦宝',
  64. 'industry': '其它',
  65. 'province': '湖北',
  66. 'city': '武汉',
  67. 'district': '洪山',
  68. 'linkMan': '哆啦宝',
  69. 'linkPhone': '17625905488',
  70. 'customerType': 'PERSON',
  71. 'certificateType': 'IDENTIFICATION',
  72. 'certificateCode': '230604199304163012',
  73. 'certificateName': '张三',
  74. 'accountOpenLicense': 'J1234543534533',
  75. 'certificateStartDate': '2015-01-01',
  76. 'certificateEndDate': '2018-12-31',
  77. 'contactPhoneNum': '17625905488',
  78. 'linkManId': '230604199304163012',
  79. }
  80. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  81. result = openClient.customer.modify_customer(**data)
  82. pprint(result)
  83. def get_customer():
  84. num = "10001116605440604166780"
  85. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  86. result = openClient.customer.get_customer(num)
  87. print(result)
  88. def create_settle():
  89. data = {
  90. "customerNum": "10001116605440862136783",
  91. "bankAccountName": "哆啦宝",
  92. "bankAccountNum": "2323232323232323",
  93. "province": "北京",
  94. "city": "北京",
  95. "bankBranchName": "中国邮政储蓄银行股份有限公司齐齐哈尔市龙华路支行",
  96. "bankName": "招商银行",
  97. "phone": "18201223908",
  98. "settleAmount": "1.00",
  99. "payBankList": [
  100. {
  101. "num": "10031414639876930831001",
  102. "rate": "0.60"
  103. },
  104. {
  105. "num": "10031414639876930831004",
  106. "rate": "0.38"
  107. },
  108. {
  109. "num": "10031414639876930831005",
  110. "rate": "0.38"
  111. }
  112. ],
  113. "accountType": "PRIVATE",
  114. "privateType": "PERSON",
  115. "settlerCertificateCode": "230604199304163012",
  116. "settlerCertificateStartDate": "2017-11-11",
  117. "settlerCertificateEndDate": "2018-11-11"
  118. }
  119. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  120. result = openClient.settle.create_account(**data)
  121. pprint(result)
  122. def create_shop():
  123. data = {
  124. "agentNum": "10001016435484143212321",
  125. "customerNum": "10001116605440862136783",
  126. "shopName": "哆啦宝店铺",
  127. "address": "国贸",
  128. "oneIndustry": "美食",
  129. "twoIndustry": "湘菜",
  130. "mobilePhone": "13311580250",
  131. }
  132. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  133. result = openClient.shop.create_shop(**data)
  134. pprint(result)
  135. def get_shop():
  136. shop = "10001116605440862136783"
  137. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  138. result = openClient.shop.get_shop(shop)
  139. pprint(result)
  140. def make_sure_customer():
  141. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  142. result = openClient.complete.complete_customer("10001116605440862136783")
  143. pprint(result)
  144. def upload_img():
  145. with open("img.png", "rb") as f:
  146. content = f.read()
  147. bContent = base64.b64encode(content)
  148. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  149. result = openClient.attach.upload_attach(
  150. customerNum="10001116605440862136783",
  151. attachType="BANKFRONT",
  152. content=bContent
  153. )
  154. from pprint import pprint
  155. pprint(result)
  156. def get_wx_merchant():
  157. customerNum = "119103908"
  158. agentNum = "10001016435484143212321"
  159. payProduct = "ALIPAY"
  160. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  161. result = openClient.support.get_product_customer(customerNum, payProduct)
  162. pprint(result)
  163. def get_jd_open_audit():
  164. openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY)
  165. mer = JDOpenApplyInfo.get_merchant_by_id("6305e12c3530b4da7ff3e167")
  166. result = query_audit_result(mer, openClient)
  167. pprint(result)
  168. def get_location():
  169. print(get_location_by_area(u"湖北省", u"武汉市", u"洪山区", u"光谷资本大厦"))
  170. def ali_auth():
  171. mer = JDOpenApplyInfo.get_merchant_by_id("6311be60651fba2b051e5b47") # type: JDOpenApplyInfo
  172. from apps.web.core.models import AliApp
  173. app = AliApp.objects.get(id="5fa9010ec3631dd06e35c709")
  174. print(app.client.query_auth("2088710255758323"))
  175. def jd_psi_audit():
  176. from apps.web.merchant.utils import get_psi_client
  177. client = get_psi_client()
  178. result = client.query_sub_channel(agentNo="112122276", merchantNo="122015917", productCode=401)
  179. from pprint import pprint
  180. pprint(result)
  181. def jd_psi_error_test():
  182. from library.jdpsi.exceptions import JdPsiException
  183. try:
  184. raise JdPsiException(errCode="0000", errMsg="this is an error")
  185. except JdPsiException as je:
  186. print(je.errMsg)
  187. def jd_psi_settle_info_test():
  188. from apps.web.dealer.models import Dealer
  189. dealer = Dealer.objects.get(id="62188a891bab8edffc4d88ad")
  190. result = query_merchant_settle(dealer, datetime.datetime.now())
  191. pprint(result)
  192. def jd_psi_product_query_test():
  193. _id = "10001116544829294203170"
  194. mer = MerchantSourceInfo.objects.get(id=_id)
  195. JdPsiMerchantApplier(mer, get_psi_client()).query_audit_result()
  196. def jd_psi_product_success_test():
  197. _id = "6315a92300304890ed98f0ff"
  198. mer = MerchantSourceInfo.objects.get(id=_id)
  199. print(mer.is_product_success())
  200. def test_wechat_auth():
  201. _wx = "519464690"
  202. from apps.web.merchant.utils import is_wechat_authorized
  203. proxy = get_wechat_proxy()
  204. result = proxy.get_merchant_apply_state(_wx)
  205. pprint(result)
  206. def test_ali_upload_image():
  207. from alipay.aop.api.request.AntMerchantExpandIndirectImageUploadRequest import AntMerchantExpandIndirectImageUploadRequest
  208. from alipay.aop.api.response.AlipayOfflineMaterialImageUploadResponse import AlipayOfflineMaterialImageUploadResponse
  209. from alipay.aop.api.AlipayClientConfig import AlipayClientConfig
  210. from alipay.aop.api.FileItem import FileItem
  211. from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient
  212. import logging
  213. logger = logging.getLogger(__name__)
  214. from apps.web.core.models import AliApp
  215. app = AliApp.objects.get(appid="2019061165493945") # type: AliApp
  216. clientConfig = AlipayClientConfig()
  217. clientConfig.server_url = "https://openapi.alipay.com/gateway.do"
  218. clientConfig.app_id = '2019061165493945'
  219. clientConfig.app_private_key = app.app_private_key_string
  220. clientConfig.alipay_public_key = app.public_key_string
  221. client = DefaultAlipayClient(clientConfig, logger=logger)
  222. url = "https://resource.washpayer.com/uploaded/merchant/20220905/f1c306fdb5758d3501b54a4c0dc4d8e3.jpg"
  223. request = AntMerchantExpandIndirectImageUploadRequest()
  224. request.image_type = "jpg"
  225. request.image_content = FileItem(file_name="1.jpg", file_content=get_file(url=url))
  226. response_content = client.execute(request)
  227. from pprint import pprint
  228. pprint(response_content)
  229. response = AlipayOfflineMaterialImageUploadResponse()
  230. response.parse_response_content(response_content)
  231. def test_ali_proxy():
  232. from apps.web.core.models import AliApp
  233. from apps.web.core.bridge.alipay import AliPayAuthorProxy
  234. from pprint import pprint
  235. app = AliApp.objects.get(appid="2019061165493945")
  236. proxy = AliPayAuthorProxy(app)
  237. url = "https://resource.washpayer.com/uploaded/merchant/20220905/f1c306fdb5758d3501b54a4c0dc4d8e3.jpg"
  238. print(os.path.basename(url))
  239. result = proxy.upload_image_from_oss(url)
  240. pprint(result)
  241. # subMerchantId = '2021001191645419'
  242. # result = proxy.query(subMerchantId)
  243. # pprint(result)
  244. def test_wechat_pay():
  245. """
  246. 新版本测试微信支付
  247. """
  248. # 支付appId wx90dad6d2b6094bb2
  249. # 支付测试设备 JH_DUMMY
  250. # 测试项目
  251. # 地址优惠充值
  252. # 订单编号 632c1606e217c0865561a7e7 充值正常 用户正常到账
  253. # 分账单号 632c160be217c0865561a7e8 分账正常 经销商收益正常增加 代理商设备收益正常
  254. # 充值退款
  255. # 订单编号 632c1b0ae217c0865561a7eb 退款成功 用户金额到账 经销商收益扣除成功 负单建立成功
  256. # 虚拟卡充值
  257. # 订单编号 632c2cc8da87f3268613a802
  258. # 支付宝充值余额
  259. # 订单编号 632c32bdfb4eb42be56c4dee 充值正常 用户正常到账
  260. # 分账单号 632c32c5fb4eb42be56c4def 分账正常 经销商收益正常增加 代理商收益正常
  261. # TODO zjl 问题 代理商分账显示问题
  262. # # 0.14 0.56
  263. # class Request(object):
  264. #
  265. # def __init__(self, b):
  266. # self.b = b
  267. # def __getattr__(self, item):
  268. # return self.b
  269. #
  270. # body = json.dumps({u'cipherJson': u'b6e43051ab63eff16789015589769830be6ab278d09d3739ecb791001211cacd61f12cdc3fd349cc26392ef6a7cab2baa568f15fc4a4ffcf0c7ca54796a9e21308298a22e1d1ebc1c97bb87767f87e83632905e4e27c1611be4ba8f58f5e1801e0757e2e55feac9c84acb029eed30813f692d519ecd61b2646013072fbc2c43abaf79b431cb949d58924d2272a3e760cf07169737d38dc2966e13361d9997dd9f4e273db6b6dafedee206abdec94bb66a984638eba316d9817214f937efa29042c24a6354d36cac524aa20a11f73c1088ad24205c4c72ec248d61923b4e124e70f0d4f2443bdc2c60e47aa151a0eff02be50a6520bd122bd2c24a6354d36cac524aa20a11f73c1088ad24205c4c72ec248d61923b4e124e7fda69a764e08744d1e84cb7174fcd1a354b0556d9569e47176b5682b3f2b9e689e17a9a3e1c101b7a6139d32e5af154c24aa20a11f73c10894b85eea93943b7a7d3d77a4207da0e0ba53608c30c0d758051016ef1691089912ff58d2bdda79dd24aa20a11f73c108f4c4938b5dd60aa57d3d77a4207da0e0cbffc290a77ddb077a1ff67d641162883d8942e96a9df2ca28a47d367c915d7c6623cfae889ee27b1bea278d8c4a3e31ccae527031fbf1cfdf9a1a8058eab1bc37f1d78f17953f823de929b7ff727f2aeda2487ac26f44e7f19832c6be3c9b2458492160b39979cd5e7dfa2a1836118bb643a2b69ea4f8b8c9960c4e34ff732c8e6ad8d93267e043f62ac7b60bf7fc3fd2a61208744c2c1d62b3f4ab823e8186b77bc78ab86b04d6de101b2d1cfead909ef1bb0a872412893e3989fdbda919327964a01091e69a1a0d39465084ef44b388b0eaa10413b17ba7466b66692783de373557e726d96a3d348ae2a3515fbadde05e5cef78b5676b87486fef0b93b4c6649e14a97b391f8d9e3bd5b90c69f9d2c631b508bac659c824aa20a11f73c108eed98de0d7b5bf5fe5ad17f9da02cad1fa38c980f1f681d6300b26561ed1e639e54a9a340e27833e', u'success': True, u'merchantNo': u'113348986', u'errCode': u'000000', u'sign': u'e72f42c4c4cf91cda5fcae3dbd441f7c', u'systemId': u'112122276PSP', u'errCodeDes': u'\u6210\u529f'})
  271. # app = JDAggreRefundNotifier(Request(body), lambda order_no: RefundMoneyRecord.get_record(order_no))
  272. # app.do(refund_post_pay)
  273. orderId = "632d18ffeaf25201ea235a99"
  274. order = RechargeRecord.objects.get(id=orderId)
  275. print(order.money)
  276. refund_cash(order, order.money, VirtualCoin(0))
  277. if __name__ == "__main__":
  278. get_wx_merchant()