利用JS实现微信/QQ跳转至支付宝领取红包的技术解析

作者:函数茶馆时间:2026-10-22 11:43:51浏览:560

本文详细解析如何通过JavaScript代码实现从微信或QQ环境直接唤起支付宝APP并自动领取红包的功能。文章介绍了iOS与Android系统的不同跳转逻辑,提供了两套核心JS源码及HTML部署步骤,并记录了该技术在2018年初期的兼容性问题与封禁情况,供开发者参考技术实现原理。

微信/QQ跳转支付宝功能背景与原理

近期,支付宝的红包活动在各微信群中广泛传播,口令分享成为主流推广方式。

微信/QQ跳转支付宝功能背景与原理 

然而,这种推广方式用户体验较差,用户需经历复制口令、打开支付宝、点击领取等多个繁琐步骤。

基于此痛点,我们产生了一个技术构想。

能否通过点击链接,在微信环境中直接唤起支付宝并自动完成红包领取?

具体效果可参考下方演示。

微信/QQ跳转支付宝功能背景与原理 

流程说明如下:

第一步,用户点击特定URL链接。

第二步,系统立即尝试唤起支付宝APP。

第三步,用户无需手动操作即可秒领红包。

上述流程即为本次案例的演示Demo。

用户可通过扫描二维码进行实际体验。

微信/QQ跳转支付宝功能背景与原理 

核心JS代码实现与部署指南

该功能的实现原理较为直观。

核心代码仅包含一个HTML文件和一个JS文件。

HTML文件主要用于加载必要的JS脚本。

HTML文件命名为index.html。


<!DOCTYPE html> 
<html lang="zh-cmn-hans"> 
<head> 
<meta charset="UTF-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<meta http-equiv="X-UA-Compatible" content="ie=edge, chrome=1"> 
<title>正在打开支付宝,请稍候……</title> 
</head> 
<body> 
<script src="kouling.js"></script> 
</body> 
</html>

JS文件是实现功能的核心部分。

JS脚本负责调用默认浏览器,并通过浏览器接口唤起支付宝应用。

在iOS系统(如iPhone)上,由于系统机制原因,几乎看不到调用浏览器的中间过程。

而在安卓手机上,流程通常为先唤起浏览器,再由浏览器询问是否打开支付宝APP。

JS代码中嵌入了领取红包所需的二维码参数。

例如链接:https://qr.alipay.com/c1x0768...。

该字符串即为关键参数。

只要支付宝客户端加载此链接。

即可直接触发红包领取功能。

因此,JS的主要作用是引导跳转至支付宝。

随后加载上述参数链接以完成领取。

整体实现逻辑简单易懂。

技术细节开源如下:

代码提供两套方案:

第一套方案:


eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('1Y(1O(p,a,c,k,e,d){e=1O(c){1P(c<a?"":e(1Z(c/a)))+((c=c%a)>1W?1Q.22(c+29):c.1U(1V))};1T(!\'\'.1S(/^/,1Q)){1R(c--)d[e(c)]=k[c]||e(c);k=[1O(e){1P d[e]}];e=1O(){1P\'\\\\w+\'};c=1};1R(c--)1T(k[c])p=p.1S(1X 21(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c]);1P p}(\'1t(P(p,a,c,k,e,d){e=P(c){O(c<a?"":e(1g(c/a)))+((c=c%a)>19?S.18(c+17):c.1c(1b))};Q(!\\\'\\\'.T(/^/,S)){U(c--)d[e(c)]=k[c]||e(c);k=[P(e){O d[e]}];e=P(){O\\\'\\\\\\\\w+\\\'};c=1};U(c--)Q(k[c])p=p.T(1a 1i(\\\'\\\\\\\\b\\\'+e(c)+\\\'\\\\\\\\b\\\',\\\'g\\\'),k[c]);O p}(\\\'7 c="l://k.n.o/m";7 g="l://k.n.o/m";3 t(){0(/E/i.p(b.a)){2 d}1{2 4}}3 A(){7 9=b.a.q();0(9.D(/(I|M)/i)){2 d}1{2 4}}3 y(){7 9=b.a.q();0(/K|L|G/.p(9)){2 d}1{2 4}}3 z(){8.C("H",{},3(e){});j.h();8.r("B")}3 u(){0(c!=""){w.v=c}1{j.h();8.r("B")}}3 5(){0(A()){z();2 4}0(y()){u();2 4}}0(t()){0(J 8=="N"){0(6.s){6.s("x",5,4)}1 0(6.f){6.f("x",5);6.f("F",5)}}1{5()}}1{0(g!=""){w.v=g}1{j.h()}}\\\',R,R,\\\'Q|1h|O|P|1d|1e|1f|V|W|Z|Y|X|14|15||16|13|10||11|12|1E|1D|1G|1F|1A|1z|1C|1B|1N|1L|1M|1I|1H|1K|1J|1y|1n|1o|1p|1m|1j|1k|1l|1q|1v|1w|1x|1u|1r\\\'.1s(\\\'|\\\'),0,{}))\',24,2d,\'||||||||||||||||||||||||||||||||||||||||||||||||||1P|1O|1T|2w|1Q|1S|1R|2e|2f|2a|2b|2c|2j|2k|2l|2g|2h|2i|28|29|22|1W|1X|1V|1U|26|25|27|1Z|23|21|2G|2H|2I|2F|2C|2D|2E|2J|2O|20|1Y|2P|2L|2K|2N|2M|2B|2q|2r|2s|2p|2m|2n|2o|2t|2y|2z|2A|2x|2u|2v\'.20(\'|\'),0,{}))',62,176,'||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||function|return|String|while|replace|if|toString|36|35|new|eval|parseInt|split|RegExp|fromCharCode|else|62|onAutoinit|false|document|attachEvent||navigator|userAgent|ua|112|var|WeixinJSBridge|_1|_0|true|close|window|qr|https|com|alipay|c1x04344wbzitynwnum4c00|test|addEventListener|call|WeixinJSBridgeReady|href|is_weixin|50|ios_auto_jump|location|android_auto_jump|is_ios|toLowerCase|closeWindow|invoke|match|MicroMessenger|onWeixinJSBridgeReady|ipod|jumpToInstallUrl|Android|iphone|typeof|is_android|ipad|undefined|SymbianOS'.split('|'),0,{}))

微信/QQ跳转支付宝功能背景与原理 

只需替换支付宝领红包二维码链接后的参数即可使用。

第二套JS代码逻辑如下。


var _0 = "替换自己的二维码扫码后的url即可"; 
var _1 = "替换自己的二维码扫码后的url即可"; 
function is_weixin() { 
  if (/MicroMessenger/i.test(navigator.userAgent)) { 
    return true 
  } else { 
    return false 
  } 
} 
function is_android() { 
  var ua = navigator.userAgent.toLowerCase(); 
  if (ua.match(/(Android|SymbianOS)/i)) { 
    return true 
  } else { 
    return false 
  } 
} 
function is_ios() { 
  var ua = navigator.userAgent.toLowerCase(); 
  if (/iphone|ipad|ipod/.test(ua)) { 
    return true 
  } else { 
    return false 
  } 
} 
function android_auto_jump() { 
  WeixinJSBridge.invoke("jumpToInstallUrl", {}, function(e) {}); 
  window.close(); 
  WeixinJSBridge.call("closeWindow") 
} 
function ios_auto_jump() { 
  if (_0 != "") { 
    location.href = _0 
  } else { 
    window.close(); 
    WeixinJSBridge.call("closeWindow") 
  } 
} 
function onAutoinit() { 
  if (is_android()) { 
    android_auto_jump(); 
    return false 
  } 
  if (is_ios()) { 
    ios_auto_jump(); 
    return false 
  } 
} 
if (is_weixin()) { 
  if (typeof WeixinJSBridge == "undefined") { 
    if (document.addEventListener) { 
      document.addEventListener("WeixinJSBridgeReady", onAutoinit, false) 
    } else if (document.attachEvent) { 
      document.attachEvent("WeixinJSBridgeReady", onAutoinit); 
      document.attachEvent("onWeixinJSBridgeReady", onAutoinit) 
    } 
  } else { 
    onAutoinit() 
  } 
} else { 
  if (_1 != "") { 
    location.href = _1 
  } else { 
    window.close() 
  } 
}

技术演进与平台封禁情况说明

更新时间:2018-1-5 下午14:35。

QQ跳转功能已开发完成,但因QQ使用率较低,暂不深入推广。

更新时间:2018-1-6 12:30。

推测腾讯已封堵相关技术,安卓端已无法直接跳转。此前为域名封禁导致跳转失败,现域名虽未封禁,但安卓手机已无法触发跳转。

更新时间:2018-1-6 下午17:15。

QQ跳转支付宝功能实现及领取红包Demo展示。

微信/QQ跳转支付宝功能背景与原理 

跳转速度依然较快。

目前流程为先跳转至浏览器,再询问是否打开支付宝APP。

作者正在优化代码,试图绕过浏览器询问步骤。

安卓端同样需先跳转浏览器再询问,两者均非直接跳转。这是因为浏览器本身具备唤起APP的能力,但各APP内的WebView屏蔽了这一行为,微信环境亦如此,否则可直接从微信唤起APP。

本页面将持续更新进展。

如需加入技术交流群,可添加微信:likeyunba520。

更新时间:2018-1-6 晚上23:35。

QQ跳转支付宝功能已完成开发。

演示Demo。

请使用手机QQ扫码体验。

微信/QQ跳转支付宝功能背景与原理 

QQ跳转功能代码与使用步骤

具体代码实现。


<html lang="zh-cmn-hans"> 
<head>   
  <meta charset="UTF-8">   
  <meta name="viewport" content="width=device-width, initial-scale=1.0">   
  <meta http-equiv="X-UA-Compatible" content="ie=edge, chrome=1">   
  <title>QQ正在打开支付宝...</title>   
  <script src="https://open.mobile.qq.com/sdk/qqapi.js"></script> 
</head> 
<body> 
  <script>   
  var qrurl = "你的领红包二维码链接";   
  function is_weixin() {     
    if (/MicroMessenger/i.test(navigator.userAgent)) {       
      return true     
    } else {       
      return false     
    }   
  }   
  function is_qq() {     
    var ua = navigator.userAgent.toLowerCase();     
    if (ua.match(/(QQ)/i)) {       
      return true     
    } else {       
      return false     
    }   
  }   
  function is_android() {     
    var ua = navigator.userAgent.toLowerCase();     
    if (ua.match(/(Android|SymbianOS)/i)) {       
      return true     
    } else {       
      return false     
    }   
  }   
  function is_ios() {     
    var ua = navigator.userAgent.toLowerCase();     
    if (/iphone|ipad|ipod/.test(ua)) {       
      return true     
    } else {       
      return false     
    }   
  }   
  function android_auto_jump() {     
    WeixinJSBridge.invoke("jumpToInstallUrl", {}, function (e) {     
    });     
    window.close();     
    WeixinJSBridge.call("closeWindow")   
  }   
  function ios_auto_jump() {     
    if (qrurl != "") {       
      location.href = qrurl     
    } else {       
      window.close();       
      WeixinJSBridge.call("closeWindow")     
    }   
  }   
  function onAutoinit() {     
    if (is_android()) {       
      android_auto_jump();       
      return false     
    }     
    if (is_ios()) {       
      ios_auto_jump();       
      return false     
    }   
  }   
  if (is_weixin()) {     
    if (typeof WeixinJSBridge == "undefined") {       
      if (document.addEventListener) {         
        document.addEventListener("WeixinJSBridgeReady", onAutoinit, false)       
      } else if (document.attachEvent) {         
        document.attachEvent("WeixinJSBridgeReady", onAutoinit);         
        document.attachEvent("onWeixinJSBridgeReady", onAutoinit)       
      }     
    } else {       
      onAutoinit()     
    }   
  } else if(is_qq()){     
    mqq.invoke("ui", "openUrl", {       
      url: qrurl,       
      target: 2,       
      style: 0     
    });   
  }else {     
    if (qrurl != "") {       
      location.href = qrurl     
    } else {       
      window.close()     
    }   
  } 
  </script> 
</body> 
</html>

新建index.html文件。

复制上述HTML代码。

替换其中的链接地址。

上传至服务器即可生效。

总结。

以上介绍了利用JS实现微信/QQ跳转至支付宝APP领取红包的功能,希望有所帮助。如有任何疑问,欢迎留言,作者将及时回复。感谢对本站的支持!

作者最新文章