|
|
|
|
移动端

开源!js实现微信/QQ直接跳转到支付宝APP打开口令领红包!附:demo

最近支付宝的领红包可真是刷爆了各个微信群啊,满群都是支付宝口令。 可是这样推广可不是办法,又要复制又要打开支付宝又要点领取,太麻烦了。于是乎,提出了一个疑问!是否可以在微信里面点一个链接然后直接打开支付宝并自动领取呢???

作者:佚名来源:segmentfault|2018-01-08 19:45

年前最后一场技术盛宴 | 1月27日与京东、日志易技术大咖畅聊智能化运维发展趋势!


最近支付宝的领红包可真是刷爆了各个微信群啊,满群都是支付宝口令。

可是这样推广可不是办法,又要复制又要打开支付宝又要点领取,太麻烦了。

于是乎,提出了一个疑问!
是否可以在微信里面点一个链接然后直接打开支付宝并自动领取呢???
就像下面这样!

上图解说:
1、点击一个url
2、立即跳转到支付宝APP
3、并且秒领红包

对,没错,上面就是本次案例的demo

大家可以扫码体验:

实现的原理很简单
源码只有一个html文件和js文件

html只要是方便加载js
index.html

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

js才是重点
js可以调取默认浏览器,然后通过默认浏览器打开支付宝
在ios系统,即iphone上,基本没有看到调取浏览器的痕迹
因为很快,在安卓手机上,是先调取浏览器,再询问是否打开支付宝app

而js里面包含了领红包的二维码参数
https://qr.alipay.com/c1x0768...
上面这串就是参数
只要在支付宝里面加载这段链接
就可以直接领红包

所以js实现的是先跳转到支付宝
再加载上面这段链接
so easy

技术开源:
源码有两套:
第一套:

  1. 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,{})) 

替换支付宝领红包二维码后面这个参数即可

第二套js

  1. var _0 = "替换自己的二维码扫码后的url即可"
  2. var _1 = "替换自己的二维码扫码后的url即可"
  3.  
  4. function is_weixin() { 
  5.     if (/MicroMessenger/i.test(navigator.userAgent)) { 
  6.         return true 
  7.     } else { 
  8.         return false 
  9.     } 
  10.  
  11. function is_android() { 
  12.     var ua = navigator.userAgent.toLowerCase(); 
  13.     if (ua.match(/(Android|SymbianOS)/i)) { 
  14.         return true 
  15.     } else { 
  16.         return false 
  17.     } 
  18.  
  19. function is_ios() { 
  20.     var ua = navigator.userAgent.toLowerCase(); 
  21.     if (/iphone|ipad|ipod/.test(ua)) { 
  22.         return true 
  23.     } else { 
  24.         return false 
  25.     } 
  26.  
  27. function android_auto_jump() { 
  28.     WeixinJSBridge.invoke("jumpToInstallUrl", {}, function(e) {}); 
  29.     window.close(); 
  30.     WeixinJSBridge.call("closeWindow"
  31.  
  32. function ios_auto_jump() { 
  33.     if (_0 != "") { 
  34.         location.href = _0 
  35.     } else { 
  36.         window.close(); 
  37.         WeixinJSBridge.call("closeWindow"
  38.     } 
  39.  
  40. function onAutoinit() { 
  41.     if (is_android()) { 
  42.         android_auto_jump(); 
  43.         return false 
  44.     } 
  45.     if (is_ios()) { 
  46.         ios_auto_jump(); 
  47.         return false 
  48.     } 
  49. if (is_weixin()) { 
  50.     if (typeof WeixinJSBridge == "undefined") { 
  51.         if (document.addEventListener) { 
  52.             document.addEventListener("WeixinJSBridgeReady", onAutoinit, false
  53.         } else if (document.attachEvent) { 
  54.             document.attachEvent("WeixinJSBridgeReady", onAutoinit); 
  55.             document.attachEvent("onWeixinJSBridgeReady", onAutoinit) 
  56.         } 
  57.     } else { 
  58.         onAutoinit() 
  59.     } 
  60. else { 
  61.     if (_1 != "") { 
  62.         location.href = _1 
  63.     } else { 
  64.         window.close() 
  65.     } 

2018-1-5 下午:14:35

QQ的我已经开发好了,不过很少人玩QQ了,我就不弄了,放着.

2018-1-6 12:30

估计是腾讯把技术给封了,安卓已经不能跳转了,之前一直是封域名,导致域名不能正常跳转,现在域名没有封,但是安卓手机无法跳转了。

2018-1-6 下午17:15

QQjs实现QQ跳转到支付宝APP并领取红包!附:动图demo

跳转速度也很快。
目前先跳到浏览器再询问是否要打开支付宝。
我还在优化代码,让它直接绕过询问...
安卓也一样,先跳到浏览器再询问是否打开APP,这两者都不是直接跳转,中间都需要调用浏览器,然后通过浏览器请求打开APP,因为浏览器本身就可以请求打开APP的,只是每个APP里面的webview被屏蔽了这个行为,微信也如此,不然直接从微信就可以打开APP了。

本页面持续更新..
需要加入我们的技术交流群,可以加微信:likeyunba520

2018-1-6 晚上23:35
QQ跳转支付宝已经完成开发

demo
用手机QQ扫码体验

代码

  1. <html lang="zh-cmn-hans"
  2. <head>     
  3.     <meta charset="UTF-8">     
  4.     <meta name="viewport" content="width=device-width, initial-scale=1.0">     
  5.     <meta http-equiv="X-UA-Compatible" content="ie=edge, chrome=1">     
  6.     <title>QQ正在打开支付宝...</title>     
  7.     <script src="https://open.mobile.qq.com/sdk/qqapi.js"></script> 
  8. </head> 
  9. <body> 
  10.     <script>     
  11.     var qrurl = "你的领红包二维码链接";     
  12.     function is_weixin() {         
  13.         if (/MicroMessenger/i.test(navigator.userAgent)) {             
  14.             return true         
  15.         } else {             
  16.             return false         
  17.         }     
  18.     }     
  19.     function is_qq() {         
  20.         var ua = navigator.userAgent.toLowerCase();         
  21.         if (ua.match(/(QQ)/i)) {             
  22.             return true         
  23.         } else {             
  24.             return false         
  25.         }     
  26.     }     
  27.     function is_android() {         
  28.         var ua = navigator.userAgent.toLowerCase();         
  29.         if (ua.match(/(Android|SymbianOS)/i)) {             
  30.             return true         
  31.         } else {             
  32.             return false         
  33.         }     
  34.     }     
  35.     function is_ios() {         
  36.         var ua = navigator.userAgent.toLowerCase();         
  37.         if (/iphone|ipad|ipod/.test(ua)) {             
  38.             return true         
  39.         } else {             
  40.             return false         
  41.         }     
  42.     }     
  43.     function android_auto_jump() {         
  44.         WeixinJSBridge.invoke("jumpToInstallUrl", {}, function (e) {         
  45.         });         
  46.         window.close();         
  47.         WeixinJSBridge.call("closeWindow")     
  48.     }     
  49.     function ios_auto_jump() {         
  50.         if (qrurl != "") {             
  51.             location.href = qrurl         
  52.         } else {             
  53.             window.close();             
  54.             WeixinJSBridge.call("closeWindow")         
  55.         }     
  56.     }     
  57.     function onAutoinit() {         
  58.         if (is_android()) {             
  59.             android_auto_jump();             
  60.             return false         
  61.         }         
  62.         if (is_ios()) {             
  63.             ios_auto_jump();             
  64.             return false         
  65.         }     
  66.     }     
  67.     if (is_weixin()) {         
  68.         if (typeof WeixinJSBridge == "undefined") {             
  69.             if (document.addEventListener) {                 
  70.                 document.addEventListener("WeixinJSBridgeReady", onAutoinit, false)             
  71.             } else if (document.attachEvent) {                 
  72.                 document.attachEvent("WeixinJSBridgeReady", onAutoinit);                 
  73.                 document.attachEvent("onWeixinJSBridgeReady", onAutoinit)             
  74.             }         
  75.         } else {             
  76.             onAutoinit()         
  77.         }     
  78.     } else if(is_qq()){         
  79.         mqq.invoke("ui""openUrl", {             
  80.             url: qrurl,             
  81.             target: 2,             
  82.             style: 0         
  83.         });     
  84.     }else {         
  85.         if (qrurl != "") {             
  86.             location.href = qrurl         
  87.         } else {             
  88.             window.close()         
  89.         }     
  90.     } 
  91.     </script> 
  92. </body> 
  93. </html> 

新建index.html

复制上面代码
替换链接

上传到服务器即可

【编辑推荐】

  1. 2018年最值得关注的JavaScript趋势
  2. 很全很全的JavaScript模块讲解,看了绝不后悔!
  3. 关注JavaScript的成本
  4. 19个JavaScript有用的简写技术
  5. 不到200行JavaScript代码如何实现富文本编辑器
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

程序员教程(第2版)

本书按照人事部、信息产业部全国计算机技术与软件专业技术资格(水平)考试程序员考试大纲编写,是对2004版的修订版,内容包括计算机系统、...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊