1
|
|
|
# -*- coding: utf-8 -*- |
2
|
10 |
|
from __future__ import absolute_import, unicode_literals |
3
|
10 |
|
from datetime import datetime, date |
4
|
|
|
|
5
|
10 |
|
from wechatpy.pay.base import BaseWeChatPayAPI |
6
|
|
|
|
7
|
|
|
|
8
|
10 |
|
class WeChatTools(BaseWeChatPayAPI): |
9
|
|
|
|
10
|
10 |
|
def short_url(self, long_url): |
11
|
|
|
""" |
12
|
|
|
长链接转短链接 |
13
|
|
|
|
14
|
|
|
:param long_url: 长链接 |
15
|
|
|
:return: 返回的结果数据 |
16
|
|
|
""" |
17
|
|
|
data = { |
18
|
|
|
'appid': self.appid, |
19
|
|
|
'long_url': long_url, |
20
|
|
|
} |
21
|
|
|
return self._post('tools/shorturl', data=data) |
22
|
|
|
|
23
|
10 |
|
def download_bill(self, bill_date, bill_type='ALL', device_info=None): |
24
|
|
|
""" |
25
|
|
|
下载对账单 |
26
|
|
|
|
27
|
|
|
:param bill_date: 下载对账单的日期 |
28
|
|
|
:param bill_type: 账单类型,ALL,返回当日所有订单信息,默认值 |
29
|
|
|
SUCCESS,返回当日成功支付的订单, |
30
|
|
|
REFUND,返回当日退款订单, |
31
|
|
|
REVOKED,已撤销的订单 |
32
|
|
|
:param device_info: 微信支付分配的终端设备号,填写此字段,只下载该设备号的对账单 |
33
|
|
|
:return: 返回的结果数据 |
34
|
|
|
""" |
35
|
|
|
if isinstance(bill_date, (datetime, date)): |
36
|
|
|
bill_date = bill_date.strftime('%Y%m%d') |
37
|
|
|
|
38
|
|
|
data = { |
39
|
|
|
'appid': self.appid, |
40
|
|
|
'bill_date': bill_date, |
41
|
|
|
'bill_type': bill_type, |
42
|
|
|
'device_info': device_info, |
43
|
|
|
} |
44
|
|
|
return self._post('pay/downloadbill', data=data) |
45
|
|
|
|
46
|
10 |
|
def download_fundflow(self, bill_date, account_type='Basic', |
47
|
|
|
tar_type=None): |
48
|
|
|
""" |
49
|
|
|
下载资金账单 |
50
|
|
|
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_18&index=7 |
51
|
|
|
|
52
|
|
|
:param bill_date: 下载对账单的日期 |
53
|
|
|
:param account_type: 账单的资金来源账户 |
54
|
|
|
Basic 基本账户 |
55
|
|
|
Operation 运营账户 |
56
|
|
|
Fees 手续费账户 |
57
|
|
|
:param tar_type: 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。 |
58
|
|
|
不传则默认为数据流形式。 |
59
|
|
|
""" |
60
|
|
|
if isinstance(bill_date, (datetime, date)): |
61
|
|
|
bill_date = bill_date.strftime('%Y%m%d') |
62
|
|
|
|
63
|
|
|
data = { |
64
|
|
|
'appid': self.appid, |
65
|
|
|
'bill_date': bill_date, |
66
|
|
|
'account_type': account_type, |
67
|
|
|
'sign_type': 'HMAC-SHA256' |
68
|
|
|
} |
69
|
|
|
if tar_type is not None: |
70
|
|
|
data['tar_type'] = tar_type |
71
|
|
|
return self._post('pay/downloadfundflow', data=data) |
72
|
|
|
|
73
|
10 |
|
def auto_code_to_openid(self, auth_code): |
74
|
|
|
""" |
75
|
|
|
授权码查询 openid 接口 |
76
|
|
|
|
77
|
|
|
:param auth_code: 扫码支付授权码,设备读取用户微信中的条码或者二维码信息 |
78
|
|
|
:return: 返回的结果数据 |
79
|
|
|
""" |
80
|
|
|
data = { |
81
|
|
|
'appid': self.appid, |
82
|
|
|
'auth_code': auth_code, |
83
|
|
|
} |
84
|
|
|
return self._post('tools/authcodetoopenid', data=data) |
85
|
|
|
|