6
0

2 Commits cac08881c2 ... 8b0333d489

Autor SHA1 Mensagem Data
  mopybird 8b0333d489 trivial há 1 ano atrás
  mopybird 696c4ac222 trivial há 1 ano atrás
2 ficheiros alterados com 58 adições e 3 exclusões
  1. 56 2
      apps/web/common/views.py
  2. 2 1
      apps/web/helpers.py

+ 56 - 2
apps/web/common/views.py

@@ -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)

+ 2 - 1
apps/web/helpers.py

@@ -8,6 +8,7 @@ from copy import deepcopy
 from functools import wraps, partial
 
 import simplejson as json
+from django.conf import settings
 from django.http import JsonResponse
 from django.utils.module_loading import import_string
 from mongoengine.base import BaseField
@@ -42,7 +43,7 @@ if TYPE_CHECKING:
     from apps.web.management.models import Manager
     SourceT = Union[Agent, Dealer, Device, Manager, DeviceDict, WithdrawRecord]
 
-    from apps.web.core.models import WechatPayApp, AliApp
+    from apps.web.core.models import WechatPayApp
 
     WechatAPP_T = Union[WechatPayApp, WechatManagerApp, WechatAuthApp]