wx_mrechant.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # coding=utf-8
  2. import json
  3. import os
  4. import requests
  5. from base import init_env
  6. init_env(True)
  7. from apps.web.merchant.models import MerchantSourceInfo
  8. from apps.web.merchant.utils import JDMerchant
  9. from apps.web.core.exceptions import MerchantError
  10. def get_mchid(ownerId):
  11. record = MerchantSourceInfo.get_source_record(ownerId)
  12. agentNo = record.agentNo
  13. merchantNo = record.merchantNo
  14. productCode = "401"
  15. sign = JDMerchant.sign(agentNo, merchantNo, productCode)
  16. entity = {
  17. "agentNo": agentNo,
  18. "merchantNo": merchantNo,
  19. "productCode": productCode,
  20. "sign": sign
  21. }
  22. entitySecData = JDMerchant.encrypt(entity)
  23. data = {
  24. "agentNo": agentNo,
  25. "entity": entitySecData
  26. }
  27. url = os.path.join(JDMerchant.BASE_URL, "merchant/status/queryMerchantWXNo").replace("\\", "/")
  28. response = requests.post(url=url, data=data)
  29. result = response.json()
  30. if result.get("code") != "0000":
  31. raise MerchantError(result.get("message", ""))
  32. hlbSubNoResultJson = result.get("data", dict()).get("hlbWxSubNoResultInfo")
  33. try:
  34. subResult = json.loads(hlbSubNoResultJson)
  35. except Exception:
  36. raise MerchantError(u"微信备案查询失败")
  37. status = subResult.get("status")
  38. orderNo = subResult.get("orderNo")
  39. if status == "FAIL":
  40. raise MerchantError(u"微信备案失败")
  41. if status == "DOING":
  42. raise MerchantError(u"微信备案受理中")
  43. try:
  44. wx_mch_id = subResult.get("threePartnerNoData")[0].get("threePartnerNo")
  45. except Exception:
  46. raise MerchantError(u"微信备案查询失败")
  47. return orderNo