authorder.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. # coding=utf-8
  2. import os
  3. from alipay.aop.api.FileItem import FileItem
  4. from alipay.aop.api.request.AlipayMerchantIndirectAuthorderCloseRequest import AlipayMerchantIndirectAuthorderCloseRequest
  5. from alipay.aop.api.request.AlipayMerchantIndirectAuthorderCreateRequest import AlipayMerchantIndirectAuthorderCreateRequest
  6. from alipay.aop.api.request.AlipayMerchantIndirectAuthorderQuerystatusRequest import AlipayMerchantIndirectAuthorderQuerystatusRequest
  7. from alipay.aop.api.request.AlipayMerchantIndirectSmidbindQueryRequest import AlipayMerchantIndirectSmidbindQueryRequest
  8. from alipay.aop.api.request.AntMerchantExpandIndirectImageUploadRequest import AntMerchantExpandIndirectImageUploadRequest
  9. from alipay.aop.api.response.AlipayMerchantIndirectAuthorderCloseResponse import AlipayMerchantIndirectAuthorderCloseResponse
  10. from alipay.aop.api.response.AlipayMerchantIndirectAuthorderCreateResponse import AlipayMerchantIndirectAuthorderCreateResponse
  11. from alipay.aop.api.response.AlipayMerchantIndirectAuthorderQuerystatusResponse import AlipayMerchantIndirectAuthorderQuerystatusResponse
  12. from alipay.aop.api.response.AlipayMerchantIndirectSmidbindQueryResponse import AlipayMerchantIndirectSmidbindQueryResponse
  13. from alipay.aop.api.response.AlipayOfflineMaterialImageUploadResponse import AlipayOfflineMaterialImageUploadResponse
  14. from apps.web.core.bridge.alipay.base import AliApiProxy
  15. from apps.web.core.file import AliOssFileUploader
  16. class AliPayAuthorProxy(AliApiProxy):
  17. def upload_image_from_oss(self, url):
  18. content = AliOssFileUploader.load(url)
  19. return self.upload(os.path.basename(url), content)
  20. def upload(self, imageName, imageContent):
  21. """
  22. 上传图片
  23. """
  24. _type = imageName.rsplit(".")[-1]
  25. image = FileItem(file_name=imageName, file_content=imageContent)
  26. request = AntMerchantExpandIndirectImageUploadRequest()
  27. request.image_type, request.image_content = _type, image
  28. response = self.request(request, AlipayOfflineMaterialImageUploadResponse()) # type: AlipayOfflineMaterialImageUploadResponse
  29. return {
  30. "media_id": response.image_id
  31. }
  32. def query(self, subMerchantId): # type: (str) -> dict
  33. request = AlipayMerchantIndirectSmidbindQueryRequest()
  34. request.biz_content = {"sub_merchant_id": subMerchantId}
  35. response = self.request(request, AlipayMerchantIndirectSmidbindQueryResponse()) # type: AlipayMerchantIndirectSmidbindQueryResponse
  36. return {
  37. "checkResult": response.check_result
  38. }
  39. def close(self, applyId=None, busCode=None):
  40. """
  41. 关闭申请单
  42. """
  43. request = AlipayMerchantIndirectAuthorderCloseRequest()
  44. if applyId:
  45. request.biz_content = {"order_no": applyId}
  46. else:
  47. request.biz_content = {"out_biz_no": busCode}
  48. response = self.request(request, AlipayMerchantIndirectAuthorderCloseResponse())
  49. return dict()
  50. def query_status(self, applyId=None, busCode=None):
  51. """
  52. 查询申请状态
  53. """
  54. request = AlipayMerchantIndirectAuthorderQuerystatusRequest()
  55. if applyId:
  56. request.biz_content = {"order_no": applyId}
  57. else:
  58. request.biz_content = {"out_biz_no": busCode}
  59. response = self.request(request, AlipayMerchantIndirectAuthorderQuerystatusResponse()) # type: AlipayMerchantIndirectAuthorderQuerystatusResponse
  60. data = {
  61. "applyId": response.order_no,
  62. "auditStatus": response.order_status,
  63. "qrCode": response.qr_code
  64. }
  65. if response.verify_list:
  66. data["errorMsg"] = "{}-{}".format(response.verify_list[0]["fail_param"], response.verify_list[0]["fail_reason"])
  67. return data
  68. def create(self, applier):
  69. request = AlipayMerchantIndirectAuthorderCreateRequest()
  70. request.biz_content = applier.to_ali_auth()
  71. response = self.request(request, AlipayMerchantIndirectAuthorderCreateResponse()) # type: AlipayMerchantIndirectAuthorderCreateResponse
  72. return {
  73. "applyId": response.order_no,
  74. "auditStatus": response.order_status
  75. }