|  | @@ -33,12 +33,11 @@ from apps.web.common.models import FrontendLog, FAQ
 | 
	
		
			
				|  |  |  from apps.web.common.transaction.pay.alipay import AliPayWithdrawNotifier
 | 
	
		
			
				|  |  |  from apps.web.common.utils import WechatMessage, WechatText, WechatMenu, WechatSubscribe, WechatUnSubscribe, \
 | 
	
		
			
				|  |  |      WechatScanEvent, MessageHandler
 | 
	
		
			
				|  |  | -from apps.web.constant import Const, AppPlatformType, AdSpace, USER_RECHARGE_TYPE
 | 
	
		
			
				|  |  | +from apps.web.constant import Const, AppPlatformType, AdSpace
 | 
	
		
			
				|  |  |  from apps.web.core import ROLE
 | 
	
		
			
				|  |  |  from apps.web.core.exceptions import InvalidFileSize, InvalidFileName
 | 
	
		
			
				|  |  |  from apps.web.core.file import AliOssFileUploader, WechatSubscriptionAccountVerifyFileUploader
 | 
	
		
			
				|  |  |  from apps.web.core.models import WechatPayApp, AliApp, AliUserAgreementSign, AliFundAccountBookApp
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  from apps.web.core.utils import DefaultJsonErrorResponse, JsonOkResponse, JsonErrorResponse
 | 
	
		
			
				|  |  |  from apps.web.dealer.models import Dealer
 | 
	
		
			
				|  |  |  from apps.web.device.models import Device
 | 
	
	
		
			
				|  | @@ -1028,3 +1027,58 @@ def saveWechatWithdrawInfo(request):
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  |          request.user.set_withdraw_wechat(**payload)
 | 
	
		
			
				|  |  |          return JsonOkResponse()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +@error_tolerate(nil = DefaultJsonErrorResponse)
 | 
	
		
			
				|  |  | +def makeAliUserAgreementSign(request):
 | 
	
		
			
				|  |  | +    companyName = request.GET.get('companyName')
 | 
	
		
			
				|  |  | +    certNo = request.GET.get('certNo')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    gateway = PlatformPayGatewayUtil.get_ali_isv_pay_gateway()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    signModel = AliUserAgreementSign.issue(
 | 
	
		
			
				|  |  | +        cooperAppId = gateway.appid,
 | 
	
		
			
				|  |  | +        external_agreement_no = AliUserAgreementSign.makeNo(companyName),
 | 
	
		
			
				|  |  | +        external_logon_id = companyName,
 | 
	
		
			
				|  |  | +        attach = {
 | 
	
		
			
				|  |  | +            'action': 'make_fund_account_book',
 | 
	
		
			
				|  |  | +            'certNo': certNo
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    url = gateway.create_transfer_agreement_sign(signModel, notify_url = ALIPAY_NOTIFY_URL)
 | 
	
		
			
				|  |  | +    return JsonOkResponse(payload = {
 | 
	
		
			
				|  |  | +        'signUrl': url
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +@error_tolerate(nil = DefaultJsonErrorResponse)
 | 
	
		
			
				|  |  | +def queryAliUserAgreementSign(request):
 | 
	
		
			
				|  |  | +    externalAgreementNo = request.GET.get('externalAgreementNo')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    isvGateway = PlatformPayGatewayUtil.get_ali_isv_pay_gateway()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    signModel = AliUserAgreementSign.objects(
 | 
	
		
			
				|  |  | +        external_agreement_no = externalAgreementNo).first()  # type: AliUserAgreementSign
 | 
	
		
			
				|  |  | +    if not signModel:
 | 
	
		
			
				|  |  | +        return JsonErrorResponse(description = u'该协议号不存在')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    result = isvGateway.query_transfer_agreement(signModel)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    signModel.agreementNo = result['agreement_no']
 | 
	
		
			
				|  |  | +    signModel.save()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if result['status'] == 'NORMAL' and signModel.attachParas['action'] == 'make_fund_account_book':
 | 
	
		
			
				|  |  | +        agreementNo = signModel.agreementNo
 | 
	
		
			
				|  |  | +        certNo = signModel.attachParas['certNo']
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if not AliFundAccountBookApp.objects(agreementNo = agreementNo, certNo = certNo).first():
 | 
	
		
			
				|  |  | +            bookModel = AliFundAccountBookApp.apply(signModel)
 | 
	
		
			
				|  |  | +            create_rv = PlatformPayGatewayUtil.get_ali_isv_pay_gateway().create_fund_accountbook(bookModel)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            bookModel.appid = create_rv['account_book_id']
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            card_info = create_rv['ext_card_info']
 | 
	
		
			
				|  |  | +            card_info.pop('status')
 | 
	
		
			
				|  |  | +            bookModel.cardInfo = card_info
 | 
	
		
			
				|  |  | +            bookModel.save()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return JsonOkResponse(payload = result)
 |