# -*- coding: utf-8 -*- # !/usr/bin/env python import getopt import os import sys PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..') sys.path.insert(0, PROJECT_ROOT) from script.base import init_env os.environ["DJANGO_SETTINGS_MODULE"] = "configs.production" init_env(False) def revoke(order_no, check): from library.alipay import AliPayServiceException from library.wechatbase.exceptions import WeChatPayException from apps.web.common.models import WithdrawRecord record = WithdrawRecord.objects(order = order_no).first() # type: WithdrawRecord if not record: print 'order<> not exists.'.format(order_no) from apps.web.core.payment.base import WithdrawGateway gateway = WithdrawGateway.from_withdraw_gateway_key( record.withdrawGatewayKey, record.extras.get('gateway_version', 'v1')) try: if record.payType == WithdrawRecord.WithdrawPayType.BANK: print gateway.get_transfer_result_via_bank(record.order) elif record.payType == WithdrawRecord.WithdrawPayType.WECHAT: print gateway.get_transfer_result_via_changes(record.order) except (WeChatPayException, AliPayServiceException) as e: if e.errCode not in ['ORDERNOTEXIST', 'NOT_FOUND', 'ORDER_NOT_EXIST']: if check: return from apps.web.core import ROLE payee = ROLE.from_role_id(record.role, record.ownerId) handler = payee.new_withdraw_handler(record) handler.revoke(remarks = u'平台退单', description = u'提现失败') if __name__ == '__main__': try: options, args = getopt.getopt(sys.argv[1:], 'o:c:', ['order=', 'check=']) except getopt.GetoptError as e: print(str(e)) sys.exit() order_no = None check = True for name, value in options: if name in ('-o', '--order'): order_no = value if name in ('-c', '--check'): if value == 'y' or value == 'Y': check = True else: check = False revoke(order_no, check)