Nocturnal Prancing Mosquito

    sht-sdk

    1.1.0 • Public • Published

    商户通服务号接入网页开发文档

    版本:V1.1.0

    日期:20220110

    一、安装

    npm i sht-sdk
    

    也可通过以下标签引入的方式:

    <script src="https://mopen.unionpay.com/scripts/sht.js"></script>
    

    二、使用方法

    如果通过npm方法安装,使用时需要import,如下:

    import * as sht from "sht-sdk"
    

    然后就可调用方法了,如sht.config(successFunc, failFunc, args);

    如果使用标签引入的方式安装,直接调用sht.config(successFunc, failFunc, args);

    商户通jsbridge规范定义了前端H5页面和商户通客户端之间通讯的规则,通讯的主要过程包括以下三个过程:

    1.认证过程:该过程是向商户通app提供您的身份信息进行权限认证,具体的参数见注册接口的使用示例,每个url需要调到一次;(该过程为必须过程)

    2.检测过程:该过程是检测商户通App版本支持的接口,具体调用见检测接口的使用示例;(该过程非必须,如果需要使用特殊权限接口建议使用)

    3.使用功能性接口:认证成功之后调用的的功能性接口,具体使用见功能接口的使用示例;(该过程按需使用即可)

    4.使用UI接口:认证成功之后调用的的UI接口,具体使用见UI接口的使用示例;(该过程按需使用即可)

    1、注册接口

    接口说明:js调用native认证过程,具体参数目前如下:

    config(success, fail, args); 
    

    参数说明

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 调用接口的传参,封装为对象

    使用示例

    sht.config(function(successData){}, function(failData){}, {
        debug: true, // 开启调试模式(默认是false,关闭),开启之后调用所有api的返回值会在客户端alert出来
        appId: '', // 必填,公众号的唯一标识
        timestamp: '', // 必填,生成签名的时间戳
        nonceStr: '', // 必填,生成签名的随机串
        signature: '',// 必填,签名
        jsApiList: [] // 必填,需要使用的JS接口列表
    }); 
    

    签名生成规则如下:参与签名的字段包括nonceStr(随机字符串), 有效的jsApiTicket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。对string1作sha256加密,字段名和字段值都采用原始值,不进行URL 转义。返回数据规范:

    successData {
        "resultCode": "000000", 
        "resultMsg" : "成功",
    }
    failData {
        "resultCode": "响应码", 
        "resultMsg": "描述",
    }
    

    2、检测接口,检测客户端app版本是否支持某api接口

    checkApi(success, fail, args);
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 需要检测的接口,以对象形式发送,{"jsApiList":['takePhoto']}

    使用示例:

    sht.checkApi(function(successData){}, function(failData){}, {
        "jsApiList":['takePhoto', 'getLocation']
        });
    

    返回数据规范:

    successData {
        "resultCode":"000000",
        "resultMsg" : "success",
        "data": {
            "takePhoto":true,
            "getLocation":false
        }
    }
    
    failData {
        "resultCode":"响应码",
        "resultMsg":"描述",
    }
    

    3、功能性接口

    3.1、扫码功能(包括二维码和条形码)

    scanQRCode(success, fail, args);  
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 将所有参数放入对象

    使用示例:

    sht.scanQRCode(function(successData){}, function(failData){});
    

    返回数据规范:

    successData {
        "resultCode":"000000",
        "resultMsg" : "success",
        "data": "https://www.baidu.com"
    }
    
    failData {
        "resultCode":"响应码",
        "resultMsg":"描述",
    }
    

    3.2、检测NFC硬件功能

    checkNFC(success, fail, args);
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 将所有参数放入对象

    使用示例:

    sht.checkNFC(function(successData){}, function(failData){});
    

    返回数据规范:

    successData {
        "resultCode":"000000",
        "resultMsg" : "描述",
    }
    
    failData {
        "resultCode":"响应码",
        "resultMsg":"描述",
    }
    

    3.3、创建NFC标签

    createNFCTag(success, fail, args);
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 将所有参数放入对象

    使用示例:

    sht.createNFCTag(function(successData){}, function(failData){}, {"data":"sht"});
    

    返回数据规范:

    successData {
        "resultCode":"000000",
        "resultMsg" : "描述",
    }
    
    failData {
        "resultCode":"响应码",
        "resultMsg":"描述",
    }
    

    3.4、定位功能

    getLocation(success, fail, args);
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 将所有参数放入对象

    使用示例:

    sht.getLocation(function(successData){}, function(failData){});
    

    返回数据规范:

    successData {
        "resultCode":"000000",
        "resultMsg" : "描述",
        "data":{
            "longitude":17.012,
            "latitude": 65.011,
            "speed":100,
            "accuracy":0.15
        }
    }
    
    failData {
        "resultCode":"响应码",
        "resultMsg":"描述",
    }
    

    3.5、拍照或者选取照片功能

    takePhoto(success, fail, args);
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 可选,{type:"photo"}只能选图片,{type:"camera"}只能拍照,不传时相机和图片都可以,其他值调用失败回调。

    使用示例:

    sht.takePhoto(function(successData){}, function(failData){});
    

    返回数据规范:

    successData {
        "resultCode":"000000",
        "resultMsg" : "描述",
        "data":{
            "size":844084,
            "type":"image/jpeg",
            "content":"fdsafdsafdsafdsafsadfdsafdsafdsafdsafdsafdsafd", //图片的base64编码
            "mode":"2"
        }
    }
    
    failData {
        "resultCode":"响应码",
        "resultMsg":"描述",
    }
    

    3.6、外部用户获取授权接口

    getAuthCode(success, fail, args);
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 需要发送的数据信息,以对象形式发送例如:{appId:"服务号ID",scope:"base 或 userInfo"}

    使用示例:

    sht.getAuthCode(success, fail, {appId:"服务号ID",scope:"base 或 userInfo"});
    

    返回数据规范:

    successData {
        "data":{
            "code":"..."
        },
        "resultCode":"000000",
        "resultMsg":"成功"
    }
    
    failData {
        "data":{
            "status":"1",
            "msg":"服务号不存在"
        }
        "resultCode":"010001",
        "resultMsg":"拉取授权信息失败"
    }
    

    3.7、获取银行卡列表和默认卡接口

    getBankCard(success, fail, args)
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 是否弹出银行卡列表,参数isPopList,true代表弹出卡列表,由用户选择一张卡返回;false代表默认返回一张银行卡信息

    使用示例:

    sht.getBankCard(success, fail, {isPopList:false});
    

    返回数据规范:

    successData {
        "data":{
            "cardNoSuffix":"8935",
            "issuerName":"农业银行",
            "token":"...",
            "cardNoPrefix":"6200",
        },
        "resultCode":"000000",
        "resultMsg":"成功"
    }
    
    failData {
        "resultCode":"009002",
        "resultMsg":"无银行卡"
    }
    

    3.8、扫描银行卡接口

    scanBankCard(success, fail)
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数,扫描不成功会一直扫描,不会调用失败函数,但是为了保持一致,需要传入失败回调,可传入空函数

    使用示例:

    sht.scanBankCard(success, fail);
    

    返回数据规范:

    successData {
        "data":"6214 1234 5678 6852",
        "resultCode":"000000",
        "resultMsg":"成功"
    }
    

    3.9、扫描身份证接口

    scanIDCard(success, fail)
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数

    使用示例:

    sht.scanIDCard(success, fail);
    

    返回数据规范:

    successData {
        "data":{
            "err_msg":"",
            "err_no":"0",
            "brithday":"19780405",
            "sex":"男",
            "idNum":"340223197804051234",
            "nationality":"汉",
            "address":"安徽省芜湖市...",
            "name":"张山",
            "base64ImageData":"..."
        },
        "resultCode":"000000",
        "resultMsg":"成功"
    }
    
    failData {
        "resultCode":"009002",
        "resultMsg":"扫描身份证失败"
    }
    

    3.10、扫描营业执照接口

    scanLicense(success, fail)
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数

    使用示例:

    sht.scanLicense(success, fail);
    

    返回数据规范:

    successData {
        "resultCode": "000000",
        "resultMsg": "成功",
        "data": {
            "scc": "无",
            "err_msg": "",
            "address": "北京市朝阳区师家攻村156号1层06号记机关",
            "err_no": "0",
            "validity": "长期",
            "registerDate": "无",
            "name": "北京树托育型务有限公司",
            "corporator": "州",
            "number": "无",
            "format": "json",
            "type": "其他有阻任公到",
            "registerCapital": "10053万元"
        }
    }
    
    failData {
        "resultCode":"013001",
        "resultMsg":"识别失败,确认照片"
    }
    

    3.11、分享接口

    sharePlugin(success, fail, args)
    

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 包含:type(必输),data(必输)

    args分一下场景

    (1)链接分享

    {
        type: "01"
        data: {title:"标题示例", "url":"https://www.baidu.com","img":"baseUrl"}
    }
    

    (2)图片分享

    {
        type: "02"
        data: {"img" : "baseUrl"}
    }
    

    (3)截屏分享

    {
        type: "03"
        data: {}
    }
    

    使用示例:

    sht.sharePlugin(success, fail, {type:"01", data:{title:"标题", url:"www.baidu.com", img:"baseUrl"}});
    

    返回数据规范:

    successData {
        "resultCode": "000000",
        "resultMsg": "成功",
    }
    
    failData {
        "resultCode":"014001",
        "resultMsg":"分享失败"
    }
    

    3.12、调起第三方地图导航接口

    callNav(success, fail, args)

    参数说明:

    参数名 是否必须 参数类型 说明
    success function 成功的回调函数
    fail function 失败的回调函数
    args object 包含:type(必输),data(必输)

    args示例:

    {
      "type" : "invoke",         //必填,选择操作,”check“:检测;”invoke“:调用
      "data" : {
          "dlat": "31.242214",    //必填,目的地纬度
          "dlon": "121.672465",   //必填,目的地经度
          "dname": "上丰路1483弄",    //选填,目的地名称
          "coordtype": "gcj02",    //必填,原始坐标系类型,bd09ll(百度经纬度坐标)gcj02(经国测局加密的坐标)wgs84(gps获取的原始坐标)
          "target" : "baidu"      //必填,要调起的地图类型,”gaode“、”baidu“、”apple“三选一
          }
    }
    

    使用场景:

    (1)type为check,检测本地安装APP列表:

    sht.callNav(success, fail, {
      "type" : "check",  
      "data" : {}
    });
    

    返回数据规范:

    successData {
        "resultCode": "000000",
        "resultMsg": "成功"
        "data": {
    
    ​     	"list" : ["gaode","baidu","apple"]
    
    ​    }
    }
    
    failData {
    ​        "resultCode":"000005",
    ​        "resultMsg":"H5传递过来的参数非法"
    
    }
    

    (2)type为invoke,唤起第三方地图APP

    sht.callNav(success, fail, {
      "type" : "invoke",  
      "data" : {     
          "dlat": "31.242214",    
          "dlon": "121.672465",  
          "dname": "上丰路1483弄",    
          "coordtype": "gcj02",
          "target" : "baidu" 
          }
    });
    

    返回数据规范(此种情况下没有成功回调,只有错误回调):

    failData {
    ​        "resultCode":"000005",
    ​        "resultMsg":"H5传递过来的参数非法"
    
    }
    
    failData {
            "resultCode":"015001",
            "resultMsg":"本地未安装指定地图"
    
    }
    

    4.1、打开新webview接口

    sht.startNewWebview(url, closeCallback)
    

    参数说明:

    参数名 是否必须 参数类型 说明
    url String 页面地址
    closeCallback function 新webview关闭时的回调函数

    4.2、关闭当前webview接口

    sht.closeWebview()
    

    参数说明:

    ##全量响应码参考:

    响应码 描述
    000000 成功
    000001 客户端异常
    000002 api接口列表未配置
    000003 当前客户端不支持该接口
    000004 服务器异常
    000005 参数不合法
    000006 域名验证失败
    000007 请求错误
    000008 服务器验证失败
    001001 签名验证不通过
    001002 接口调用越权
    003001 扫码失败
    004001 设备支持nfc,但是未开启
    004002 设备不支持nfc
    005001 没有发现tag标签
    005002 标签不可写
    005003 tag写数据错误
    005004 tag镜像操作错误
    005005 tag锁定错误
    005006 手机与tag在写入过程中断开连接
    006001 客户端定位未开启
    006002 定位失败
    006003 该服务号未授权定位
    008001 通讯错误
    009001 授权失败
    009002 扫描身份证失败 //需要修改为012001
    010001 拉取授权信息失败
    011001 获取银行卡失败
    011002 无银行卡
    013001 识别失败,确认照片
    013002 网络或者客户端内部错误
    015001 本地未安装指定地图
    014001 分享失败
    014002 资源解析错误

    Keywords

    Install

    npm i sht-sdk

    DownloadsWeekly Downloads

    10

    Version

    1.1.0

    License

    ISC

    Unpacked Size

    102 kB

    Total Files

    12

    Last publish

    Collaborators

    • yefy