qm_create_link.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. const fetch = require('node-fetch'); // Node.js 18以下版本需要安装 node-fetch
  2. const tools = require('../tools');
  3. const helper = require('../src/helper');
  4. const config = require('../etc/config.json')
  5. const CMD = {}
  6. CMD.runTask = async function (data,main_info,PlatformInfo,call_back) {
  7. let timestamp = helper.getCurrentUnixTimestamp()
  8. let tg_link_config = JSON.parse(main_info.tg_link_config)
  9. let chongzhi_id = tg_link_config['chongzhi_id']
  10. let huichuan_id = tg_link_config['huichuan_id']
  11. let f_chongzhi_id = tg_link_config['f_chongzhi_id']
  12. let chongzhi_list = JSON.parse(PlatformInfo.chongzhi)
  13. let huichuan_list = JSON.parse(PlatformInfo.huichuan)
  14. let f_chongzhi_list = JSON.parse(PlatformInfo.f_chongzhi)
  15. let recharge_template_id = ""
  16. let f_recharge_template_id = ""
  17. let call_back_template_id = ""
  18. for (let index = 0; index < chongzhi_list.length; index++) {
  19. const cz_obj = chongzhi_list[index];
  20. if(cz_obj.id==chongzhi_id){
  21. recharge_template_id = cz_obj.value
  22. break
  23. }
  24. }
  25. for (let index = 0; index < huichuan_list.length; index++) {
  26. const hc_obj = huichuan_list[index];
  27. if(hc_obj.id==huichuan_id){
  28. call_back_template_id = hc_obj.value
  29. break
  30. }
  31. }
  32. for (let index = 0; index < f_chongzhi_list.length; index++) {
  33. const cz_obj = f_chongzhi_list[index];
  34. if(cz_obj.id==f_chongzhi_id){
  35. f_recharge_template_id = cz_obj.value
  36. break
  37. }
  38. }
  39. const url = 'https://new-media-fx.qimao.com/api/promotion/create';
  40. let postData = {
  41. media_id: '1', //今日头条
  42. postback_rule_id: call_back_template_id, //# 回传规则 value
  43. book_id:data.product_id,
  44. book_name:data.product_name,
  45. chapter_num:1,
  46. first_panel_id:recharge_template_id, //首充模板id
  47. repeated_panel_id:f_recharge_template_id, //# 复充模板id
  48. batch_num:1,
  49. promotion_name:`${data.product_name}_${timestamp}`,
  50. env: '',
  51. t: timestamp // 当前时间戳
  52. }
  53. console.log("postData:",postData)
  54. // 请求参数
  55. const params = new URLSearchParams(postData);
  56. // 请求头
  57. var dy_headers = {
  58. 'accept': 'application/json, text/plain, */*',
  59. 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
  60. 'app-external-id': '4c6e8d8709c14de9a4397b6cbb978f85',
  61. 'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0MDg4MjI1LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0MTc0NjI1LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQwODgyMjUsIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.LaEHd147NoCt1Wfo9ZZlCs4pludA7D3LajN4xff2H5o',
  62. 'project': 'reader_paid_dyminiapp',
  63. "Content-Type": "application/json;charset=UTF-8",
  64. 'signature': 'b4782a395b0d0de3f78bb5c8157cb35ab0d6c51f3677a1cfb4b5390c39f63169',
  65. 'target-id': '544180064332673816',
  66. 'cookie': 'sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%7D; sajssdk_2015_new_user_new-media-fx_qimao_com=1; acw_tc=1a0c380f17341043811111513e003f4b4a7b61bafaac1abb4e5d21e565003f; sa_jssdk_2015_new-media-fx_qimao_com=%7B%22distinct_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkzYmRjMTI0NjQ1ZTItMGNiZWFlZTE3MmQ0Y2U4LTRjNjU3YjU4LTkyMTYwMC0xOTNiZGMxMjQ2NTU2NyJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%7D',
  67. 'Referer': 'https://new-media-fx.qimao.com/backend/postback-configuration/index?projectId=reader_paid_dyminiapp&appId=4c6e8d8709c14de9a4397b6cbb978f85&accountId=544180064332673816'
  68. };
  69. var wx_headers = {
  70. 'accept': 'application/json, text/plain, */*',
  71. 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
  72. 'app-external-id': '9a2737aabb8f11ef93f90293e6ac97a2',
  73. 'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0MDg4MjI1LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0MTc0NjI1LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQwODgyMjUsIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.LaEHd147NoCt1Wfo9ZZlCs4pludA7D3LajN4xff2H5o',
  74. 'project': 'reader_paid_wxminiapp',
  75. "Content-Type": "application/json;charset=UTF-8",
  76. 'signature': 'b4782a395b0d0de3f78bb5c8157cb35ab0d6c51f3677a1cfb4b5390c39f63169',
  77. 'target-id': '544180064332673816',
  78. 'cookie': 'sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%7D; sajssdk_2015_new_user_new-media-fx_qimao_com=1; acw_tc=1a0c380f17341043811111513e003f4b4a7b61bafaac1abb4e5d21e565003f; sa_jssdk_2015_new-media-fx_qimao_com=%7B%22distinct_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkzYmRjMTI0NjQ1ZTItMGNiZWFlZTE3MmQ0Y2U4LTRjNjU3YjU4LTkyMTYwMC0xOTNiZGMxMjQ2NTU2NyJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%7D',
  79. 'Referer': 'https://new-media-fx.qimao.com/backend/postback-configuration/index?projectId=reader_paid_dyminiapp&appId=4c6e8d8709c14de9a4397b6cbb978f85&accountId=544180064332673816'
  80. };
  81. let headers = ""
  82. if(PlatformInfo.mini_program_platform_id==config.wx){
  83. headers = wx_headers
  84. }else if(PlatformInfo.mini_program_platform_id==config.dy){
  85. headers = dy_headers
  86. }
  87. headers['authorization'] = await tools.getQMToken()
  88. try {
  89. const response = await fetch(`${url}?${params}`, {
  90. method: 'Post',
  91. headers: headers
  92. });
  93. const result = await response.json();
  94. // { code: 200, data: {}, msg: 'ok' }
  95. if(result.code!=200){
  96. throw result
  97. }
  98. console.log('响应状态:', response.status);
  99. console.log('响应数据:', result);
  100. let n_data = await require("../src/api/qm/get_qm_promotion").getPromotionList(postData.promotion_name,PlatformInfo.mini_program_platform_id)
  101. if(n_data==null){
  102. throw result
  103. }
  104. if(n_data.code!=200){
  105. throw result
  106. }
  107. let promotion_id = n_data.promotion_id
  108. let promotion_info = n_data.data
  109. let t_params = promotion_info.promotion_url.split('?')
  110. let start_page = t_params[0]
  111. let start_param = t_params[1]
  112. data.start_page = start_page
  113. data.start_param = start_param
  114. data.promotion_id = promotion_id
  115. call_back(data,null)
  116. } catch (error) {
  117. call_back(data,error)
  118. console.error('请求错误:', error);
  119. }
  120. }
  121. // Node.js 18及以上版本可以直接运行
  122. // Node.js 18以下版本需要先安装 node-fetch:
  123. // npm install node-fetch@2
  124. module.exports = CMD;