# coding=utf-8 import json import os import requests from base import init_env init_env(True) from apps.web.merchant.models import MerchantSourceInfo from apps.web.merchant.utils import JDMerchant from apps.web.core.exceptions import MerchantError def get_mchid(ownerId): record = MerchantSourceInfo.get_source_record(ownerId) agentNo = record.agentNo merchantNo = record.merchantNo productCode = "401" sign = JDMerchant.sign(agentNo, merchantNo, productCode) entity = { "agentNo": agentNo, "merchantNo": merchantNo, "productCode": productCode, "sign": sign } entitySecData = JDMerchant.encrypt(entity) data = { "agentNo": agentNo, "entity": entitySecData } url = os.path.join(JDMerchant.BASE_URL, "merchant/status/queryMerchantWXNo").replace("\\", "/") response = requests.post(url=url, data=data) result = response.json() if result.get("code") != "0000": raise MerchantError(result.get("message", "")) hlbSubNoResultJson = result.get("data", dict()).get("hlbWxSubNoResultInfo") try: subResult = json.loads(hlbSubNoResultJson) except Exception: raise MerchantError(u"微信备案查询失败") status = subResult.get("status") orderNo = subResult.get("orderNo") if status == "FAIL": raise MerchantError(u"微信备案失败") if status == "DOING": raise MerchantError(u"微信备案受理中") try: wx_mch_id = subResult.get("threePartnerNoData")[0].get("threePartnerNo") except Exception: raise MerchantError(u"微信备案查询失败") return orderNo