# coding=utf-8 import base64 import datetime import json import os import time from pprint import pprint os.environ["DJANGO_SETTINGS_MODULE"] = "configs.dev_zjl" from base import init_env init_env(False) from apilib.monetary import VirtualCoin from apps.web.common.transaction.refund.jdaggre import JDAggreRefundNotifier from apps.web.user.transaction_deprecated import refund_cash, refund_post_pay from apps.web.user.models import RechargeRecord, RefundMoneyRecord from library.jdopen.client import JdOpenMerchantClient from library.jdopen.constants import OPEN_ACCESS_KEY, OPEN_SECRET_KEY from apps.web.merchant.models import JDOpenApplyInfo, MerchantSourceInfo 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, \ get_ali_client import xmltodict from apps.web.core.models import WechatPayApp from library.wechatpy.pay import WeChatPay def get_industry(): openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.support.query_industry() pprint(result) def attach_upload(): openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) openClient.attach.upload_attach( customerNum="10001114504252653551690", attachType="attachType", content="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAA" ) def create_customer(): data = { 'agentNum': '10001016435484143212321', 'fullName': '哆啦宝商户', 'shortName': u'哆啦宝', 'industry': '其它', 'province': '湖北', 'city': '武汉', 'district': '洪山', 'linkMan': '哆啦宝', 'linkPhone': '15777777777', 'customerType': 'PERSON', 'certificateType': 'IDENTIFICATION', 'certificateCode': '230604199304163012', 'certificateName': '张三', 'accountOpenLicense': 'J1234543534533', 'certificateStartDate': '2015-01-01', 'certificateEndDate': '2018-12-31', 'contactPhoneNum': '15777777777', 'linkManId': '230604199304163012', } openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.customer.create_customer(**data) pprint(result) def modify_customer(): data = { 'customerNum': "10001116605440862136783", 'agentNum': '10001016435484143212321', 'fullName': '哆啦宝商户', 'shortName': u'哆啦宝', 'industry': '其它', 'province': '湖北', 'city': '武汉', 'district': '洪山', 'linkMan': '哆啦宝', 'linkPhone': '17625905488', 'customerType': 'PERSON', 'certificateType': 'IDENTIFICATION', 'certificateCode': '230604199304163012', 'certificateName': '张三', 'accountOpenLicense': 'J1234543534533', 'certificateStartDate': '2015-01-01', 'certificateEndDate': '2018-12-31', 'contactPhoneNum': '17625905488', 'linkManId': '230604199304163012', } openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.customer.modify_customer(**data) pprint(result) def get_customer(): num = "10001116605440604166780" openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.customer.get_customer(num) print(result) def create_settle(): data = { "customerNum": "10001116605440862136783", "bankAccountName": "哆啦宝", "bankAccountNum": "2323232323232323", "province": "北京", "city": "北京", "bankBranchName": "中国邮政储蓄银行股份有限公司齐齐哈尔市龙华路支行", "bankName": "招商银行", "phone": "18201223908", "settleAmount": "1.00", "payBankList": [ { "num": "10031414639876930831001", "rate": "0.60" }, { "num": "10031414639876930831004", "rate": "0.38" }, { "num": "10031414639876930831005", "rate": "0.38" } ], "accountType": "PRIVATE", "privateType": "PERSON", "settlerCertificateCode": "230604199304163012", "settlerCertificateStartDate": "2017-11-11", "settlerCertificateEndDate": "2018-11-11" } openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.settle.create_account(**data) pprint(result) def create_shop(): data = { "agentNum": "10001016435484143212321", "customerNum": "10001116605440862136783", "shopName": "哆啦宝店铺", "address": "国贸", "oneIndustry": "美食", "twoIndustry": "湘菜", "mobilePhone": "13311580250", } openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.shop.create_shop(**data) pprint(result) def get_shop(): shop = "10001116605440862136783" openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.shop.get_shop(shop) pprint(result) def make_sure_customer(): openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.complete.complete_customer("10001116605440862136783") pprint(result) def upload_img(): with open("img.png", "rb") as f: content = f.read() bContent = base64.b64encode(content) openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.attach.upload_attach( customerNum="10001116605440862136783", attachType="BANKFRONT", content=bContent ) from pprint import pprint pprint(result) def get_wx_merchant(): customerNum = "119103908" agentNum = "10001016435484143212321" payProduct = "ALIPAY" openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) result = openClient.support.get_product_customer(customerNum, payProduct) pprint(result) def get_jd_open_audit(): openClient = JdOpenMerchantClient(OPEN_ACCESS_KEY, OPEN_SECRET_KEY) mer = JDOpenApplyInfo.get_merchant_by_id("6305e12c3530b4da7ff3e167") result = query_audit_result(mer, openClient) pprint(result) def get_location(): print(get_location_by_area(u"湖北省", u"武汉市", u"洪山区", u"光谷资本大厦")) def ali_auth(): mer = JDOpenApplyInfo.get_merchant_by_id("6311be60651fba2b051e5b47") # type: JDOpenApplyInfo from apps.web.core.models import AliApp app = AliApp.objects.get(id="5fa9010ec3631dd06e35c709") print(app.client.query_auth("2088710255758323")) def jd_psi_audit(): from apps.web.merchant.utils import get_psi_client client = get_psi_client() result = client.query_sub_channel(agentNo="112122276", merchantNo="122015917", productCode=401) from pprint import pprint pprint(result) def jd_psi_error_test(): from library.jdpsi.exceptions import JdPsiException try: raise JdPsiException(errCode="0000", errMsg="this is an error") except JdPsiException as je: print(je.errMsg) def jd_psi_settle_info_test(): from apps.web.dealer.models import Dealer dealer = Dealer.objects.get(id="62188a891bab8edffc4d88ad") result = query_merchant_settle(dealer, datetime.datetime.now()) pprint(result) def jd_psi_product_query_test(): _id = "10001116544829294203170" mer = MerchantSourceInfo.objects.get(id=_id) JdPsiMerchantApplier(mer, get_psi_client()).query_audit_result() def jd_psi_product_success_test(): _id = "6315a92300304890ed98f0ff" mer = MerchantSourceInfo.objects.get(id=_id) print(mer.is_product_success()) def test_wechat_auth(): _wx = "519464690" from apps.web.merchant.utils import is_wechat_authorized proxy = get_wechat_proxy() result = proxy.get_merchant_apply_state(_wx) pprint(result) def test_ali_upload_image(): from alipay.aop.api.request.AntMerchantExpandIndirectImageUploadRequest import AntMerchantExpandIndirectImageUploadRequest from alipay.aop.api.response.AlipayOfflineMaterialImageUploadResponse import AlipayOfflineMaterialImageUploadResponse from alipay.aop.api.AlipayClientConfig import AlipayClientConfig from alipay.aop.api.FileItem import FileItem from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient import logging logger = logging.getLogger(__name__) from apps.web.core.models import AliApp app = AliApp.objects.get(appid="2019061165493945") # type: AliApp clientConfig = AlipayClientConfig() clientConfig.server_url = "https://openapi.alipay.com/gateway.do" clientConfig.app_id = '2019061165493945' clientConfig.app_private_key = app.app_private_key_string clientConfig.alipay_public_key = app.public_key_string client = DefaultAlipayClient(clientConfig, logger=logger) url = "https://resource.washpayer.com/uploaded/merchant/20220905/f1c306fdb5758d3501b54a4c0dc4d8e3.jpg" request = AntMerchantExpandIndirectImageUploadRequest() request.image_type = "jpg" request.image_content = FileItem(file_name="1.jpg", file_content=get_file(url=url)) response_content = client.execute(request) from pprint import pprint pprint(response_content) response = AlipayOfflineMaterialImageUploadResponse() response.parse_response_content(response_content) def test_ali_proxy(): from apps.web.core.models import AliApp from apps.web.core.bridge.alipay import AliPayAuthorProxy from pprint import pprint app = AliApp.objects.get(appid="2019061165493945") proxy = AliPayAuthorProxy(app) url = "https://resource.washpayer.com/uploaded/merchant/20220905/f1c306fdb5758d3501b54a4c0dc4d8e3.jpg" print(os.path.basename(url)) result = proxy.upload_image_from_oss(url) pprint(result) # subMerchantId = '2021001191645419' # result = proxy.query(subMerchantId) # pprint(result) def test_wechat_pay(): """ 新版本测试微信支付 """ # 支付appId wx90dad6d2b6094bb2 # 支付测试设备 JH_DUMMY # 测试项目 # 地址优惠充值 # 订单编号 632c1606e217c0865561a7e7 充值正常 用户正常到账 # 分账单号 632c160be217c0865561a7e8 分账正常 经销商收益正常增加 代理商设备收益正常 # 充值退款 # 订单编号 632c1b0ae217c0865561a7eb 退款成功 用户金额到账 经销商收益扣除成功 负单建立成功 # 虚拟卡充值 # 订单编号 632c2cc8da87f3268613a802 # 支付宝充值余额 # 订单编号 632c32bdfb4eb42be56c4dee 充值正常 用户正常到账 # 分账单号 632c32c5fb4eb42be56c4def 分账正常 经销商收益正常增加 代理商收益正常 # TODO zjl 问题 代理商分账显示问题 # # 0.14 0.56 # class Request(object): # # def __init__(self, b): # self.b = b # def __getattr__(self, item): # return self.b # # 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'}) # app = JDAggreRefundNotifier(Request(body), lambda order_no: RefundMoneyRecord.get_record(order_no)) # app.do(refund_post_pay) orderId = "632d18ffeaf25201ea235a99" order = RechargeRecord.objects.get(id=orderId) print(order.money) refund_cash(order, order.money, VirtualCoin(0)) if __name__ == "__main__": get_wx_merchant()