yuewen_fast_app.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import time
  2. from model.DateUtils import DateUtils
  3. from model.ComUtils import md5
  4. import requests
  5. from model.ComUtils import split_int
  6. from app.api_data.platform_order.order_util import save_order
  7. from model.DingTalkUtils import DingTalkUtils
  8. ut = DateUtils()
  9. def get_yuewen_fast_app_order_task(st, et, account):
  10. """相同参数一分钟只能调用一次"""
  11. email = account[0]
  12. appsecert = account[1]
  13. url = 'https://open.yuewen.com/cpapi/wxRecharge/quickappchargelog'
  14. start_time = DateUtils.str_to_stamp(st)
  15. # 结束时间不能超过当前的时间戳
  16. if et == ut.getNow():
  17. end_time = DateUtils.str_to_stamp(ut.get_n_minutes_ago(), "%Y-%m-%d %H:%M:%S")
  18. else:
  19. end_time = DateUtils.str_to_stamp(et) + 86399
  20. for i in split_int(start_time, end_time, 10000):
  21. print(i)
  22. start = i[0]
  23. end = i[1]
  24. page = 1
  25. last_min_id = ''
  26. last_max_id = ''
  27. total_count = ''
  28. last_page = ''
  29. li = []
  30. while True:
  31. params = {
  32. 'email': email,
  33. 'coop_type': 11,
  34. 'timestamp': int(time.time()),
  35. 'start_time': start,
  36. 'end_time': end,
  37. 'version': 1
  38. }
  39. if page > 1:
  40. params['last_min_id'] = last_min_id
  41. params['last_max_id'] = last_max_id
  42. params['total_count'] = total_count
  43. params['last_page'] = last_page
  44. sorted_data = sorted(params.items())
  45. str_params = ''
  46. for k, v in sorted_data:
  47. str_params = str_params + str(k) + str(v)
  48. sign = md5(appsecert + str_params).upper()
  49. # 放入签名
  50. params['sign'] = sign
  51. # print(params)
  52. rsp = requests.get(url=url, params=params)
  53. print(rsp.text)
  54. response_result_json=rsp.json()
  55. print(response_result_json)
  56. print(len(response_result_json["data"]["list"]))
  57. if not response_result_json.get('data'):
  58. DingTalkUtils().send('阅文订单拉取失败')
  59. response_data = response_result_json['data']
  60. total_count = response_data['total_count']
  61. last_min_id = response_data['min_id']
  62. last_max_id = response_data['max_id']
  63. last_page = response_data['page']
  64. order_item_list = response_data['list']
  65. if len(order_item_list) == 0:
  66. break
  67. for i in order_item_list:
  68. order_time = i["order_time"]
  69. li.append((order_time[:10],
  70. '',
  71. '阅文快应用',
  72. 'fast_app_'+i['app_name'],
  73. '',
  74. i['openid'], # 这部分可能要修改,openid对应的微信相关id
  75. i['order_time'],
  76. i['reg_time'],
  77. i['amount'],
  78. i['book_name'],
  79. i['order_id'],
  80. i['order_status']
  81. ))
  82. if len(order_item_list) < 100:
  83. break
  84. else:
  85. page += 1
  86. print(li)
  87. if len(li) > 0:
  88. print(f"{email} 有订单{len(li)}")
  89. save_order(li)
  90. if __name__ == '__main__':
  91. a = "guangzhouliuqi2@sina.com,10ce1dd6ccb330a82b73701d1e78f518"
  92. b = "mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee"
  93. {"version": "1", "app_secret": "74ca754515fa253c8ab790603cebc2ee", "email": "mqud82950@163.com"}
  94. a = 'mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee'
  95. a = 'qucheng66qi@163.com,21a8345b00ef9e062c940887e0dbedb3'
  96. get_yuewen_fast_app_order_task('2021-09-16', '2021-09-25', a.split(','))