支付宝H5唤醒APP

支付宝文档地址

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.ro3ZlF&treeId=203&articleId=105285&docType=1

H5页面唤醒支付宝APP

<%--
  Created by IntelliJ IDEA.
  Date: 17/1/12
  Time: 下午1:32
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html class="normal ">
<head>
  <meta charset="UTF-8">
  <title>支付宝</title>
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="format-detection" content="telephone=no">
  <meta name="format-detection" content="email=no">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
  <style>
    *,
    :before,
    :after {
      -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    }
    body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,form,fieldset,legend,input,textarea,p,blockquote,th,td {
      margin: 0;
      padding: 0;
    }
    table {
      border-collapse: collapse;
      border-spacing: 0;
    }
    fieldset,img {
      border: 0;
    }
    li {
      list-style: none;
    }
    caption,th {
      text-align: left;
    }
    q:before,q:after {
      content: "";
    }
    input:password {
      ime-mode: disabled;
    }
    :focus {
      outline: 0;
    }
    html,body {
      text-align: center;
      -webkit-user-select: none;
      user-select: none;
      font-family:"Helvetica Neue",Helvetica,STHeiTi,sans-serif;
      font-size: 12px;
      line-height: 1.5;
      text-align: center;
    }
    html{
      background:#181c27;
    }
    .download-cover{
      display:block;
      height:360px;
      background-position:center 0;
      background-repeat:no-repeat;
      -webkit-background-size:320px auto;
      -moz-background-size:320px auto;
      -ms-background-size:320px auto;
      -o-background-size:320px auto;
      background-size:320px auto;
      margin:0 auto;
      overflow:hidden;
    }
    .download-cover .download-cover-slogan,
    .download-cover .download-cover-picture{
      display:none;
    }
    .download-interaction{
      margin-top:20px;
      height:42px;
      padding-bottom:20px;

    }
    .download-interaction .download-button{
      display:none;
      text-decoration: none;
      font-size: 16px;
      color: #ffffff;
      letter-spacing: 2px;
      margin:0 48px;
      background:#181c27;
      height:42px;
      line-height:42px;
      text-align:center;
      border:1px solid #7f7f87;
      border-top-left-radius:2px;
      border-top-right-radius:2px;
      border-bottom-left-radius:2px;
      border-bottom-right-radius:2px;
      -webkit-background-clip:padding-box;
      background-clip:padding-box;
    }

    .download-interaction .download-opening,
    .download-interaction .download-asking{
      display:none;
      color:#fff;
      font-size:15px;
    }
    .download-interaction.download-interaction-asking .download-asking,
    .download-interaction.download-interaction-opening .download-opening,
    .download-interaction.download-interaction-button .download-button{
      display:block;
    }
    .download-putcenter,
    .copyright{
      font-size:12px;
      color:#999;
      text-align:center;
    }
    .download-putcenter{
      padding-top:10px;
    }
    .download-putcenter .version,
    .download-putcenter .date,
    .download-putcenter .size{
      margin-left:3px;
    }
    .copyright{
      padding-bottom:10px;
    }
    a{
      color:#0af;
      text-decoration:none;
    }
  </style>
  <script>
    window.readyToRun = [];
  </script>
</head>
<body ryt14421="1">
<script>
  function track(type) {
    var img = new Image();
    img.onload = function(){};
    img.onerror = function(){};
    img.src = 'https://cmspromo.alipay.com/mseed/index.jsonp?seed=startAppFrom_'+type+'&t='+(new Date()).getTime();
  }
  if (!location.hash) {
    track('mobileweb');
  }
</script>
<script>
  if (typeof AlipayWallet !== 'object') {
    AlipayWallet = {};
  }

  (function () {
    var ua = navigator.userAgent.toLowerCase(),
            locked = false,
            domLoaded = document.readyState==='complete',
            delayToRun;

    function customClickEvent() {
      var clickEvt;
      if (window.CustomEvent) {
        clickEvt = new window.CustomEvent('click', {
          canBubble: true,
          cancelable: true
        });
      } else {
        clickEvt = document.createEvent('Event');
        clickEvt.initEvent('click', true, true);
      }

      return clickEvt;
    }

    function getAndroidVersion() {
      var match = ua.match(/android\s([0-9\.]*)/);
      return match ? match[1] : false;
    }

    var noIntentTest = /aliapp|360 aphone|weibo|windvane|ucbrowser|baidubrowser/.test(ua);
    var hasIntentTest = /chrome|samsung/.test(ua);
    var isAndroid = /android|adr/.test(ua) && !(/windows phone/.test(ua));
    var canIntent = !noIntentTest && hasIntentTest && isAndroid;
    var openInIfr = /weibo|m353/.test(ua);
    var inWeibo = ua.indexOf('weibo')>-1;

    if (ua.indexOf('m353')>-1 && !noIntentTest) {
      canIntent = false;
    }

    // 是否在 webview
    var inWebview = '';
    if (inWebview) {
      canIntent = false;
    }


    /**
     * 打开钱包
     * @param   {string}    params  唤起钱包的参数设置('alipays://platformapi/startapp?'后面的值)
     * @param   {boolean}   jumpUrl 唤起钱包后,android下要跳转到的URL;
     *                      若传"default",则为https://d.alipay.com/i/index.htm?nojump=1#once
     */
    AlipayWallet.open = function (params, jumpUrl) {
      if (!domLoaded && (ua.indexOf('360 aphone')>-1 || canIntent)) {
        var arg = arguments;
        delayToRun = function () {
          AlipayWallet.open.apply(null, arg);
          delayToRun = null;
        };
        return;
      }

      // 唤起锁定,避免重复唤起
      if (locked) {
        return;
      }
      locked = true;

      var o;
      // 参数容错
      if (typeof params==='object') {
        o = params;
      } else {
        o = {
          params: params,
          jumpUrl: jumpUrl
        };
      }

      // 参数容错
      if (typeof o.params !== 'string') {
        o.params = '';
      }
      if (typeof o.openAppStore !== 'boolean') {
        o.openAppStore = true;
      }

      o.params = o.params || 'appId=20000001';
      o.params = o.params + '';
      o.params = o.params + '&_t=' + (new Date()-0);

      if (o.params.indexOf('startapp?')>-1) {
        o.params = o.params.split('startapp?')[1];
      } else if (o.params.indexOf('startApp?')>-1) {
        o.params = o.params.split('startApp?')[1];
      }

      // 是否为RC环境
      var isRc = '';

      // 是否唤起re包
      var isRe = '';
      if (typeof o.isRe==='undefined') {
        o.isRe = !!isRe;
      }

      // 通过alipays协议唤起钱包
      var schemePrefix;
      if (ua.indexOf('mac os')>-1 && ua.indexOf('mobile')>-1) {
        // IOS RC包前缀为 alipaysrc
        if (isRc) {
          if (o.isRe) {
            schemePrefix = 'alipayrerc';
          } else {
            schemePrefix = 'alipaysrc';
          }
        }
      }
      if (!schemePrefix && o.isRe) {
        schemePrefix = 'alipayre';
      }
      schemePrefix = schemePrefix || 'alipays';

      // 由于历史原因,对 alipayqr 前缀做特殊处理
      if (location.href.indexOf('scheme=alipayqr') > -1) {
        schemePrefix = 'alipayqr';
        isRc = false;
      }




      if (!canIntent) {
        var alipaysUrl = schemePrefix + '://platformapi/startapp?' + o.params;

        if ( ua.indexOf('qq/') > -1 || ( ua.indexOf('safari') > -1 && ua.indexOf('os 9_') > -1 ) ) {
          var openSchemeLink = document.getElementById('openSchemeLink');
          if (!openSchemeLink) {
            openSchemeLink = document.createElement('a');
            openSchemeLink.id = 'openSchemeLink';
            openSchemeLink.style.display = 'none';
            document.body.appendChild(openSchemeLink);
          }
          openSchemeLink.href = alipaysUrl;
          // 执行click
          openSchemeLink.dispatchEvent(customClickEvent());
        } else {
          var ifr = document.createElement('iframe');
          ifr.src = alipaysUrl;
          ifr.style.display = 'none';
          document.body.appendChild(ifr);
        }
      } else {
        // android 下 chrome 浏览器通过 intent 协议唤起钱包
        var packageKey = 'AlipayGphone';
        if (isRc) {
          packageKey = 'AlipayGphoneRC';
        }
        var intentUrl = 'intent://platformapi/startapp?'+o.params+'#Intent;scheme='+ schemePrefix +';package=com.eg.android.'+ packageKey +';end';

        var openIntentLink = document.getElementById('openIntentLink');
        if (!openIntentLink) {
          openIntentLink = document.createElement('a');
          openIntentLink.id = 'openIntentLink';
          openIntentLink.style.display = 'none';
          document.body.appendChild(openIntentLink);
        }
        openIntentLink.href = intentUrl;
        // 执行click
        openIntentLink.dispatchEvent(customClickEvent());
      }

      // 延迟移除用来唤起钱包的IFRAME并跳转到下载页
      setTimeout(function () {
        if (typeof o.jumpUrl !== 'string') {
          o.jumpUrl = '';
        }

        // URL白名单
        var urlPattern = /^http(s)?:\/\/([a-z0-9_\-]+\.)*(alipay|taobao|alibaba|alibaba-inc|tmall|koubei)\.(com|net|cn|com\.cn)(:\d+)?([/;?].*)?$/;
        // 默认跳转地址
        if (o.jumpUrl==='default') {
          o.jumpUrl = 'https://ds.alipay.com/?nojump=true';
        }

        if (o.jumpUrl && typeof o.jumpUrl==='string' && urlPattern.test(o.jumpUrl)) {
          location.href = o.jumpUrl;
        }
      }, 1000)


      // 唤起加锁,避免短时间内被重复唤起
      setTimeout(function () {
        locked = false;
      }, 2500)
    }

    if (!domLoaded) {
      document.addEventListener('DOMContentLoaded', function () {
        domLoaded = true;
        if (typeof delayToRun === 'function') {
          delayToRun();
        }
      }, false);
    }
  })();
</script>

<script type="text/javascript">
  (function(){
    var schemeParam = '';
    schemeParam = schemeParam.replace(/&/ig, '&');


    if (!location.hash) {
      AlipayWallet.open({
        params: schemeParam,
        jumpUrl: '',
        openAppStore: false
      });
    }



    function pageFuntion(){
    }

    if (/complete|loaded|interactive/.test(document.readyState && document.body)) {
      pageFuntion();
    } else {
      document.addEventListener('DOMContentLoaded', function () {
        pageFuntion();
      }, true);
    }
  })();
</script>

<iframe src="alipays://platformapi/startapp?appId=20000001&_t=1464601210564" style="display: none;"></iframe>
<style>
  .normal .download-cover{
    background-image:url("https://os.alipayobjects.com/rmsportal/hNfINSQHpUoLRly.png");
  }
  html{background-color:#019fe8;}
  a{color:#8cffff;}
  .download-interaction .download-button{background:#019fe8;border:1px solid #fff;}
  .download-putcenter, .copyright{color:#fff;}
</style>

<script>
  window.readyToRun.push(function () {
    setTimeout(function () {
      var downloadCover = document.getElementById('downloadCover');
      if (downloadCover) {
        downloadCover.style.backgroundImage = 'url(https://os.alipayobjects.com/rmsportal/hNfINSQHpUoLRly.png)';
      }
    }, 50);
  });
</script>

<div class="download-view-wrap" id="downloadViewWrap">
  <div class="wrap-view-addon-1"></div>
  <div class="wrap-view-addon-2"></div>
  <div class="wrap-view-addon-3"></div>
  <div class="wrap-view-addon-4"></div>
  <div class="download-inner-view" id="downloadInnerView">
    <div class="inner-view-addon-1"></div>
    <div class="inner-view-addon-2"></div>
    <div class="inner-view-addon-3"></div>
    <div class="inner-view-addon-4"></div>
    <div class="download-view" id="downloadView">
      <div class="download-view-addon-1"></div>
      <div class="download-view-addon-2"></div>
      <div class="download-view-addon-3"></div>
      <div class="download-view-addon-4"></div>
      <div class="download-cover" id="downloadCover" style="background-image: url("https://os.alipayobjects.com/rmsportal/hNfINSQHpUoLRly.png");">
      <div class="download-cover-logo" id="downloadCoverLogo"></div>
      <div class="download-cover-slogan" id="downloadCoverSlogan"></div>
      <div class="download-cover-picture" id="downloadCoverPicture">
        <div class="download-cover-picture-1"></div>
        <div class="download-cover-picture-2"></div>
        <div class="download-cover-picture-3"></div>
        <div class="download-cover-picture-4"></div>
      </div>
    </div>
    <div id="J_downloadInteraction" class="download-interaction download-interaction-button">
      <div class="inner-interaction">
        <p class="download-opening">正在打开支付宝<span class="download-opening-1">.</span><span class="download-opening-2">.</span><span class="download-opening-3">.</span></p>
        <p class="download-asking">如果没有打开支付宝,<a id="J_downloadBtn" href="https://itunes.apple.com/cn/app/id333206289?mt=8">请下载最新版</a></p>
        <a id="J_downloadBtn" href="https://itunes.apple.com/cn/app/id333206289?mt=8" class="download-button">立即下载</a>
      </div>
    </div>

    <script>
      document.getElementById('J_downloadBtn').onclick = function () {
        var ifr = document.createElement('iframe');
        ifr.src = 'itms-apps://itunes.apple.com/app/zhi-fu-bao/id333206289?mt=8';
        ifr.style.display = 'none';
        document.body.appendChild(ifr);
        location.href = 'itms-apps://itunes.apple.com/app/zhi-fu-bao/id333206289?mt=8';
      };
    </script>
  </div>
</div>
</div>

<div class="base-info">
  <div class="download-putcenter"> <span class="word">最新版本:</span> <span class="version">9.6.6</span> <span class="date">(2016-05-10)</span> <span class="size">93.2MB</span> </div>
  <p class="copyright">支付宝版权所有 © 2004 - 2016</p>
</div>

<script>
  function jsBridgeRun(fn) {
    if (typeof window.AlipayJSBridge==='object' && window.AlipayJSBridge.startupParams) {
      fn();
    } else {
      document.addEventListener('AlipayJSBridgeReady', function () {
        fn();
      }, false);
    }
  }
  jsBridgeRun(function () {
    AlipayJSBridge.call("hideOptionMenu");
  });

  // 等待运行函数
  var rtrLen = window.readyToRun.length;
  if(window.readyToRun.length) {
    var rtrIdx, rtrFn;
    for(rtrIdx=0; rtrIdx<rtrLen; rtrIdx++) {
      rtrFn = window.readyToRun[rtrIdx];
      typeof rtrFn==='function' && rtrFn();
    }

    window.readyToRun = [];
  }
</script>
</body>
</html>

页面效果

如果是手机浏览器访问,可以直接唤起支付宝APP

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容

  • iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...
    请输入账号名阅读 6,205评论 3 22
  • 此项目已开源 赶快来围观 Start支持下吧 【客户端开源地址-JPay】【服务端端开源地址-在com.javen...
    LucasAdam阅读 1,949评论 0 3
  • iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...
    帅不过oneS阅读 2,889评论 2 8
  • 1.第一次使用支付宝连sdk和文档都找不到,可怜如我.先放文档地址:https://doc.open.alipay...
    司马捷阅读 1,140评论 0 6
  • 经过两年的努力,我熟悉了三门峡的地形,掌握了移动公司的资源,也跟相关人员建立了友好的合作关系,更提高了自己...
    路重坡阅读 290评论 0 0