JSAPI

  • Since 8.1

    scan

    调用扫码组件。
    获取码值,用码值路由,获取码值并用码值路由是三种不同的actionType。
    码值路由,新业务需要找码平台配置业路由规则。@码平台daily(什么样的码,返回什么样的结果。)

    API

    AlipayJSBridge.call('scan', {
      type,scanType, actionType, qrcode, hideAlbum
    }, fn);
    

    入参

    名称类型描述必选默认值版本
    typestring控制扫描框样式与类别,qr / bar / lottery(dm+pdf417),,建议使用 「scanType」明确扫描类型Y10.1.28
    scanTypeArray识别类型,[‘qrCode’ , ‘barCode’, ‘dmCode’, ‘pdf417Code’ ]N[‘qrCode’ , ‘barCode’ ]10.1.65
    actionTypestring操作类型
    “scan”只扫码值
    “route”只路由码值
    “scanAndRpc”扫描返回原码及跳转后的路径
    “scanAndRoute”扫描并路由,类同首页效果
    N‘scan’9.9.1
    route类型只有ios支持
    10.1.32新增scanAndRpc
    qrcodestring指定用于”route”操作类型的码值N9.9.1
    hideAlbumbool指定右上角是否隐藏相册按钮(拥有扫相册功能)Nfalse10.1.25
    charsetstring指定目标码CharsetN10.1.32新增
    fnfunction扫码获取码信息后的回调函数N

    出参

    回调函数带入的参数result: {error, barCode, qrCode, cardNumber}

    名称类型描述
    barCodestring扫描所得条码数据
    qrCodestring扫描所得二维码数据
    errorint错误码(10: 用户取消, 11: 操作失败)
    // 以下 10.1.28 版本及以后新增(建议使用)
    imageChannelstring相机还是相册扫出的码 camera/album
    codeTypestring扫描所得码类型 (qr/bar/dm/pdf417)
    codeContentstring扫描所得码数据内容
    // 以下 10.1.32 版本及以后新增
    pathstring码平台路由后的地址

    使用方法

    AlipayJSBridge.call('scan', {
      scanType:['qrCode' , 'barCode'],
      actionType: 'scanAndRoute'
    }, function(result) {
      alert(JSON.stringify(result));
    });
    

    代码演示

    只获取二维码的信息

    <h1>点击扫码后输出码对应的信息</h1>
    
    <a href="#" class="btn read">开始扫码</a>
    
    <script>
    function ready(callback) {
      // 如果jsbridge已经注入则直接调用
      if (window.AlipayJSBridge) {
        callback && callback();
      } else {
        // 如果没有注入则监听注入的事件
        document.addEventListener('AlipayJSBridgeReady', callback, false);
      }
    }
    
    ready(function() {
      document.querySelector('.read').addEventListener('click', function() {
        AlipayJSBridge.call('scan', {
          scanType:['qrCode'],
        }, function(result) {
          alert(JSON.stringify(result));
        });
      });
    });
    </script>
    

    扫描二维码并发起路由

    <h1>扫码后不输出信息,直接让支付宝解码</h1>
    
    <a href="#" class="btn read">开始扫码</a>
    
    <script>
    function ready(callback) {
      // 如果jsbridge已经注入则直接调用
      if (window.AlipayJSBridge) {
        callback && callback();
      } else {
        // 如果没有注入则监听注入的事件
        document.addEventListener('AlipayJSBridgeReady', callback, false);
      }
    }
    
    ready(function() {
      document.querySelector('.read').addEventListener('click', function() {
        AlipayJSBridge.call('scan', {
          scanType:['qrCode'],
          actionType: 'scanAndRoute'
        }, function(result) {
          alert(JSON.stringify(result));
        });
      });
    });
    </script>