1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # -*- 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)
|