B2B网络软件

标题: 短信验证码中心AIWROK万能调用端 [打印本页]

作者: YYPOST群发软件    时间: 1 小时前
标题: 短信验证码中心AIWROK万能调用端
短信验证码中心AIWROK万能调用端
http://bbs.aiwork24.com/thread-588-1-1.html



短信验证码中心AIWROK万能调用端 B2B网络软件

短信验证码中心AIWROK万能调用端 B2B网络软件

短信验证码中心AIWROK万能调用端 B2B网络软件

短信验证码中心AIWROK万能调用端 B2B网络软件


  1. /**
  2. * 短信验证码中心 - AIWROK 万能调用端(单文件)
  3. * ====================================================
  4. * Import("sms_center.js"); 然后按需调函数即可
  5. *
  6. * 服务器:http://192.168.10.106:9527
  7. */

  8. // ===================== 改这里 =====================
  9. var SC = {
  10.     服务器: "http://192.168.10.106:9527",
  11.     本机手机号: "13800138000"
  12. };
  13. // ================================================

  14. var http = new okHttp();

  15. function sleepMs(ms) { try { java.lang.Thread.sleep(ms); } catch (e) {} }

  16. // ====================================================
  17. //  第一部分:上传(手机 A 收到短信时调)
  18. // ====================================================

  19. function 上传短信(phone, content, sender) {
  20.     if (!content) { printl("[上传] skip 空内容"); print.log("[上传] skip 空内容"); return false; }
  21.     phone = phone || SC.本机手机号;
  22.     var t = "[上传] -> " + phone + " content=" + content.substring(0, 40);
  23.     printl(t); print.log(t);
  24.     try {
  25.         var url = SC.服务器 + "/api/sms/submit";
  26.         var body = { phone: phone, content: content, sender: sender || "" };
  27.         var r = http.json(url, body);
  28.         var j = JSON.parse(r);
  29.         if (j.ok) {
  30.             var code = 提取验证码(content);
  31.             var o = "[上传] ok code=" + code;
  32.             printl(o); print.log(o);
  33.             return true;
  34.         }
  35.         var f = "[上传] fail " + JSON.stringify(j);
  36.         printl(f); print.log(f);
  37.     } catch (e) {
  38.         var er = "[上传] err " + String(e.message).substring(0, 50);
  39.         printl(er); print.log(er);
  40.     }
  41.     return false;
  42. }

  43. function 提取验证码(content) {
  44.     if (!content) return "";
  45.     var m = content.match(/(\d{4,6})/);
  46.     return m ? m[1] : "";
  47. }

  48. // ====================================================
  49. //  第二部分:查询(手机 B 需要填验证码时调)
  50. // ====================================================

  51. function 查验证码(phone) {
  52.     try {
  53.         var r = http.get(SC.服务器 + "/api/sms/get?phone=" + encodeURIComponent(phone));
  54.         var j = JSON.parse(r);
  55.         if (j.ok && j.code) return j.code;
  56.     } catch (e) {
  57.         var er = "[查询] err " + String(e.message).substring(0, 50);
  58.         printl(er); print.log(er);
  59.     }
  60.     return "";
  61. }

  62. function 等验证码(phone, 超时秒数, 间隔秒数) {
  63.     超时秒数 = 超时秒数 || 60;
  64.     间隔秒数 = 间隔秒数 || 3;
  65.     var t = "[等待] " + phone + " timeout=" + 超时秒数 + "s interval=" + 间隔秒数 + "s";
  66.     printl(t); print.log(t);
  67.     var 已等 = 0;
  68.     var 上次码 = "";
  69.     while (已等 < 超时秒数) {
  70.         var code = 查验证码(phone);
  71.         if (code && code !== 上次码) {
  72.             var g = "[等待] got " + code + " (waited " + 已等 + "s)";
  73.             printl(g); print.log(g);
  74.             return code;
  75.         }
  76.         上次码 = code;
  77.         sleepMs(间隔秒数 * 1000);
  78.         已等 += 间隔秒数;
  79.     }
  80.     var to = "[等待] timeout " + 超时秒数 + "s";
  81.     printl(to); print.log(to);
  82.     return "";
  83. }

  84. function 填验证码(code, confirmBtnText) {
  85.     if (!code) return false;
  86.     var t = "[填入] start " + code;
  87.     printl(t); print.log(t);
  88.     try {
  89.         var node = auto.nodeSearch().textContains("验证码").type("EditText").findOne(3000);
  90.         if (node) {
  91.             node.clickPoint(); sleepMs(300);
  92.             node.inputText(code);
  93.         } else {
  94.             auto.input(code);
  95.         }
  96.         printl("[填入] ok"); print.log("[填入] ok");
  97.     } catch (e) {
  98.         try { auto.input(code); } catch (e2) {
  99.             var f = "[填入] fail " + String(e.message).substring(0, 40);
  100.             printl(f); print.log(f);
  101.             return false;
  102.         }
  103.     }
  104.     sleepMs(800);
  105.     if (confirmBtnText) {
  106.         try { auto.clickText(confirmBtnText); printl("[填入] click " + confirmBtnText); print.log("[填入] click " + confirmBtnText); } catch (e) {}
  107.     } else {
  108.         try { auto.clickText("确定"); printl("[填入] click 确定"); print.log("[填入] click 确定"); } catch (e) {}
  109.         try { auto.clickText("提交"); printl("[填入] click 提交"); print.log("[填入] click 提交"); } catch (e) {}
  110.         try { auto.clickText("下一步"); printl("[填入] click 下一步"); print.log("[填入] click 下一步"); } catch (e) {}
  111.     }
  112.     return true;
  113. }

  114. // ====================================================
  115. //  一键组合:等码 -> 填码 -> 点确定
  116. // ====================================================

  117. function 等码并填入(phone, 超时秒数, confirmText) {
  118.     var t = "[一键] start phone=" + phone;
  119.     printl(t); print.log(t);
  120.     var code = 等验证码(phone, 超时秒数 || 60);
  121.     if (!code) { printl("[一键] fail 没拿到码"); print.log("[一键] fail 没拿到码"); return ""; }
  122.     填验证码(code, confirmText);
  123.     var d = "[一键] done code=" + code;
  124.     printl(d); print.log(d);
  125.     return code;
  126. }


  127. // ====================================================
  128. //  演示代码(直接运行)
  129. // ====================================================
  130. printl("========== 短信中心演示 ==========");
  131. print.log("========== 短信中心演示 ==========");

  132. // 演示 1:上传一条模拟短信
  133. 上传短信(SC.本机手机号, "【抖音】您的验证码是885231,5分钟内有效", "10690123");
  134. sleepMs(500);

  135. // 演示 2:只查一次
  136. var c = 查验证码(SC.本机手机号);
  137. printl("查询结果: " + c);
  138. print.log("查询结果: " + c);
  139. sleepMs(500);

  140. // 演示 3:等验证码(最多等10秒,因为上面刚上传过,应该立刻拿到)
  141. var code = 等验证码(SC.本机手机号, 10, 2);
  142. if (code) {
  143.     printl("等码成功: " + code);
  144.     print.log("等码成功: " + code);
  145. } else {
  146.     printl("等码超时");
  147.     print.log("等码超时");
  148. }
  149. sleepMs(500);

  150. // 演示 4:一键等码+填入(填入自动匹配"确定/提交/下一步"按钮)
  151. // var code2 = 等码并填入(SC.本机手机号, 10);
  152. // sleepMs(500);

  153. printl("========== 演示结束 ==========");
  154. print.log("========== 演示结束 ==========");
复制代码









欢迎光临 B2B网络软件 (http://bbs.niubt.cn/) Powered by Discuz! X3.2