qm_new_create_link.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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 crypto = require('crypto');
  6. const CMD = {}
  7. CMD.runTask = async function (data,main_info,PlatformInfo,call_back) {
  8. let timestamp = helper.getCurrentUnixTimestamp()
  9. let tg_link_config = JSON.parse(main_info.tg_link_config)
  10. let chongzhi_id = tg_link_config['chongzhi_id']
  11. let huichuan_id = tg_link_config['huichuan_id']
  12. let f_chongzhi_id = tg_link_config['f_chongzhi_id']
  13. let chongzhi_list = JSON.parse(PlatformInfo.chongzhi)
  14. let huichuan_list = JSON.parse(PlatformInfo.huichuan)
  15. let f_chongzhi_list = JSON.parse(PlatformInfo.f_chongzhi)
  16. let recharge_template_id = ""
  17. let f_recharge_template_id = ""
  18. let call_back_template_id = ""
  19. for (let index = 0; index < chongzhi_list.length; index++) {
  20. const cz_obj = chongzhi_list[index];
  21. if(cz_obj.id==chongzhi_id){
  22. recharge_template_id = cz_obj.value
  23. break
  24. }
  25. }
  26. for (let index = 0; index < huichuan_list.length; index++) {
  27. const hc_obj = huichuan_list[index];
  28. if(hc_obj.id==huichuan_id){
  29. call_back_template_id = hc_obj.value
  30. break
  31. }
  32. }
  33. for (let index = 0; index < f_chongzhi_list.length; index++) {
  34. const cz_obj = f_chongzhi_list[index];
  35. if(cz_obj.id==f_chongzhi_id){
  36. f_recharge_template_id = cz_obj.value
  37. break
  38. }
  39. }
  40. let param_list = main_info.qm_id.split(',')
  41. let target_id = param_list[0]
  42. let random_id = tools.generateCryptoNumericUUID(5)
  43. let postData = {
  44. admin_account_name:"zhuoyue",
  45. account_id:target_id,
  46. project:PlatformInfo.mini_program_platform_id==config.wx?8:6, // 6 抖音小程序 8 微信小程序
  47. appid:main_info.app_id,
  48. book_id:data.product_id,
  49. chapter_num:1,
  50. name:`${data.product_name}_${main_info.id}_${random_id}`,
  51. media_id: '1', //1 巨量 2 广点通 3 百度 4 微博 5 B站
  52. is_platform_postback:true,
  53. postback_rule_id: call_back_template_id, //# 回传规则 value
  54. // first_panel_id:recharge_template_id, //首充模板id
  55. recharge_panel_id:recharge_template_id
  56. // repeated_panel_id:f_recharge_template_id, //# 复充模板id
  57. }
  58. console.log("postData:",postData)
  59. try{
  60. let client = tools.getOneNewClinet()
  61. let uuid = tools.generateCryptoNumericUUID()
  62. // let params = `?access_key=${config.qimao_config.access_key}&random=${uuid}&timestamp=${timestamp}`
  63. // let url = `${config.qimao_config.new_create_link_host}${params}`
  64. // let sign = tools.generateQMSignature(url,config.qimao_config.access_key)
  65. const baseUrl =config.qimao_config.new_create_link_host;
  66. const params = {
  67. access_key: config.qimao_config.access_key,
  68. random: uuid,
  69. timestamp: timestamp
  70. };
  71. // 按参数名排序并拼接
  72. const sortedParams = Object.keys(params)
  73. .sort()
  74. .map(key => `${key}=${params[key]}`)
  75. .join('&');
  76. // 假设这是您的secret_key,请替换成实际的值
  77. const secretKey = config.qimao_config.secret_key; // 这里需要替换成您的实际secret_key
  78. // 计算签名
  79. const sign = crypto.createHash('md5')
  80. .update(sortedParams + secretKey)
  81. .digest('hex');
  82. // 构建最终URL
  83. const finalUrl = `${baseUrl}?${sortedParams}&sign=${sign}`;
  84. console.log("finalUrl:",finalUrl)
  85. let response = await client.post(finalUrl,postData)
  86. if(response.data.code!=0){
  87. throw response.data
  88. }
  89. let n_data = response.data.data
  90. console.log("生成连接:",n_data)
  91. let promotion_id = n_data.id
  92. let promotion_info = n_data.link
  93. let t_params = promotion_info.split('?')
  94. let start_page = t_params[0]
  95. let start_param = t_params[1]
  96. data.start_page = start_page
  97. data.start_param = start_param
  98. data.promotion_id = promotion_id
  99. call_back(data,null)
  100. } catch (error) {
  101. call_back(data,error)
  102. console.error('请求错误:', error);
  103. }
  104. }
  105. module.exports = CMD;