# coding=utf-8 import os from alipay.aop.api.FileItem import FileItem from alipay.aop.api.request.AlipayMerchantIndirectAuthorderCloseRequest import AlipayMerchantIndirectAuthorderCloseRequest from alipay.aop.api.request.AlipayMerchantIndirectAuthorderCreateRequest import AlipayMerchantIndirectAuthorderCreateRequest from alipay.aop.api.request.AlipayMerchantIndirectAuthorderQuerystatusRequest import AlipayMerchantIndirectAuthorderQuerystatusRequest from alipay.aop.api.request.AlipayMerchantIndirectSmidbindQueryRequest import AlipayMerchantIndirectSmidbindQueryRequest from alipay.aop.api.request.AntMerchantExpandIndirectImageUploadRequest import AntMerchantExpandIndirectImageUploadRequest from alipay.aop.api.response.AlipayMerchantIndirectAuthorderCloseResponse import AlipayMerchantIndirectAuthorderCloseResponse from alipay.aop.api.response.AlipayMerchantIndirectAuthorderCreateResponse import AlipayMerchantIndirectAuthorderCreateResponse from alipay.aop.api.response.AlipayMerchantIndirectAuthorderQuerystatusResponse import AlipayMerchantIndirectAuthorderQuerystatusResponse from alipay.aop.api.response.AlipayMerchantIndirectSmidbindQueryResponse import AlipayMerchantIndirectSmidbindQueryResponse from alipay.aop.api.response.AlipayOfflineMaterialImageUploadResponse import AlipayOfflineMaterialImageUploadResponse from apps.web.core.bridge.alipay.base import AliApiProxy from apps.web.core.file import AliOssFileUploader class AliPayAuthorProxy(AliApiProxy): def upload_image_from_oss(self, url): content = AliOssFileUploader.load(url) return self.upload(os.path.basename(url), content) def upload(self, imageName, imageContent): """ 上传图片 """ _type = imageName.rsplit(".")[-1] image = FileItem(file_name=imageName, file_content=imageContent) request = AntMerchantExpandIndirectImageUploadRequest() request.image_type, request.image_content = _type, image response = self.request(request, AlipayOfflineMaterialImageUploadResponse()) # type: AlipayOfflineMaterialImageUploadResponse return { "media_id": response.image_id } def query(self, subMerchantId): # type: (str) -> dict request = AlipayMerchantIndirectSmidbindQueryRequest() request.biz_content = {"sub_merchant_id": subMerchantId} response = self.request(request, AlipayMerchantIndirectSmidbindQueryResponse()) # type: AlipayMerchantIndirectSmidbindQueryResponse return { "checkResult": response.check_result } def close(self, applyId=None, busCode=None): """ 关闭申请单 """ request = AlipayMerchantIndirectAuthorderCloseRequest() if applyId: request.biz_content = {"order_no": applyId} else: request.biz_content = {"out_biz_no": busCode} response = self.request(request, AlipayMerchantIndirectAuthorderCloseResponse()) return dict() def query_status(self, applyId=None, busCode=None): """ 查询申请状态 """ request = AlipayMerchantIndirectAuthorderQuerystatusRequest() if applyId: request.biz_content = {"order_no": applyId} else: request.biz_content = {"out_biz_no": busCode} response = self.request(request, AlipayMerchantIndirectAuthorderQuerystatusResponse()) # type: AlipayMerchantIndirectAuthorderQuerystatusResponse data = { "applyId": response.order_no, "auditStatus": response.order_status, "qrCode": response.qr_code } if response.verify_list: data["errorMsg"] = "{}-{}".format(response.verify_list[0]["fail_param"], response.verify_list[0]["fail_reason"]) return data def create(self, applier): request = AlipayMerchantIndirectAuthorderCreateRequest() request.biz_content = applier.to_ali_auth() response = self.request(request, AlipayMerchantIndirectAuthorderCreateResponse()) # type: AlipayMerchantIndirectAuthorderCreateResponse return { "applyId": response.order_no, "auditStatus": response.order_status }