TonHelper.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import axios from "axios";
  2. import HMAC_SHA256 from "crypto-js/hmac-sha256";
  3. // const BASE_URL="https://devmini.tongifts.app/"
  4. const BASE_URL="https://open.tongifts.app";
  5. //测试
  6. // "_id" : "H6kcGjSbEYou87VglvJba",
  7. // "apiKey" : "VG5JSNeJFrZVuwlCaUhp3",
  8. // ”taskid“: "66aa09c8962bc7cb275f8619",
  9. // "giftUrl": "https://t.me/redevelope_bot/TGTest?startapp=o_CJ6CgJ80vcGzyfN0SrOXH"
  10. //正式
  11. // {
  12. // "name": "24680.com",
  13. // "email": "dongxie.cn@gmail.com",
  14. // "active": true,
  15. // "_id": "YdolcOCszE8KhE1caHjvP",
  16. // "apiKey": "qCYfOgsl6QD2Nlv4kdYa7",
  17. // "createdAt": "2024-11-28T06:36:17.793Z",
  18. // "__v": 0
  19. // }
  20. const config={
  21. _id:"YdolcOCszE8KhE1caHjvP",
  22. apiKey:"qCYfOgsl6QD2Nlv4kdYa7"
  23. }
  24. const service = axios.create({
  25. baseURL: BASE_URL,
  26. // withCredentials: true,
  27. timeout: 10000, // Request timeout
  28. });
  29. const init=(_id,apiKey)=>{
  30. if (_id!=null)config._id=_id;
  31. if (apiKey!=null)config.apiKey=apiKey;
  32. }
  33. const signHash=(params)=>{
  34. let keys = Object.keys(params)
  35. let signData = []
  36. keys.forEach(key => {
  37. if (key === 'k' || key === 's') return
  38. if (typeof params[key] === 'object')
  39. signData.push(`${key}=${JSON.stringify(params[key])}`)
  40. else
  41. signData.push(`${key}=${params[key]}`)
  42. })
  43. let rawStr = signData.sort().join('&')
  44. let selfHash = HMAC_SHA256(rawStr, config.apiKey)
  45. return selfHash.toString();
  46. }
  47. const tonHttpReq=(url,params={})=>{
  48. if (config._id===""||config.apiKey==="")return null;
  49. if (params==null)params={};
  50. let timestamp=Math.floor(Date.now()/1000);
  51. params={...params,k:config._id,t:timestamp};
  52. let data={
  53. ...params,
  54. s:signHash(params)
  55. }
  56. return service({
  57. method: 'post',
  58. url,
  59. data
  60. });
  61. }
  62. const updateTask=(userId,taskId,status="completed")=>{
  63. let params={
  64. userIds:[userId],
  65. taskId:taskId,
  66. status:status,
  67. }
  68. return tonHttpReq("api/open/updateTask",params);
  69. }
  70. // {
  71. // "name": "24680.com",
  72. // "email": "dongxie.cn@gmail.com",
  73. // "active": true,
  74. // "_id": "YdolcOCszE8KhE1caHjvP",
  75. // "apiKey": "qCYfOgsl6QD2Nlv4kdYa7",
  76. // "createdAt": "2024-11-28T06:36:17.793Z",
  77. // "__v": 0
  78. // }
  79. const register=(name,email)=>{
  80. let data={
  81. name,
  82. email
  83. }
  84. let url="api/merchants/register";
  85. return service({
  86. method: 'post',
  87. url,
  88. data
  89. });
  90. }
  91. const TonHelper={
  92. init,
  93. updateTask,
  94. register
  95. }
  96. export default TonHelper;