tools.py 2.9 KB

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