Nine Point Mulligan

    @wecity/weapps-plugin-citycode-callback

    0.0.3 • Public • Published

    城市码-回调 sdk

    功能: 1.回调的能力 2.回调后开启消息订阅的能力,当小程序设置中关闭了消息订阅,则会先去提醒用户开启,若开启了,则会调起消息订阅的授权弹框。

    使用方法:

    1. 导入并创建实例

    import { cbClass } from "@govcloud/weapps-plugin-city-code-utils";
    cb = new cbClass({
      duration: 3000, // 轮询时间(ms),默认3s
      timeout: 15000, // 超时时间(ms),不传则进行超时处理
    });

    2. 启动轮询

    调用方式

    cb.onScanWaiting(() => {
      //...
    })
      .then((res) => {
        // ...回调成功处理
      })
      .catch((res) => {
        // ...回调失败处理
      });

    举例:

    cb.onScanWaiting(() =>
      app.http.default({
        url: "/ebus/citycode/ext/callback/mock/polling",
        method: "POST",
        data: { cityCodeId },
      })
    )
      .then((res) => {
        console.log("扫码回调的最终结果-成功", res);
        $page.handler.refreshQrCode();
      })
      .catch((res) => {
        console.log("扫码回调的最终结果-失败", res);
      });

    cb.onScanWaiting 需传入一个方法,一般是 http 请求,并且该方法返回的是模版数据,必须是如下结构:

    模版数据结构

    模版数据中: 当 templateType = 0 时,回调结束将直接 resolve, 当 templateType 为其他值时, 回调结束后将会先跳转到回调模版页面,点击按钮后会调起消息订阅的触发流程,其中 tmplIds 是模版 id,目前仅支持一次订阅 3 个。

    {
        "bizData": {
            "templateType": ,                            //... 模版类型
            "document": {
            "desc": "你的城市码已被门禁于2018年3月26日扫描",  // 模版页面描述
            "button": "确定"                              // 模版页面按键文字
            },
            "msgTmpl": {
                "tmplIds": [
                                                          //... 模版id
                ],
                "subscribe": true                         // 是否需要订阅消息
            }
        },
        //...
    }

    举例如下:

    {
      "cityCodeAppId": "A00D",
      "cityCodeId": "xxx",
      "bizData": {
        "templateType": 0
        //...
      }
    }
    
    {
      "cityCodeAppId": "A00D",
      "cityCodeId": "xxxx",
      "bizData": {
        "templateType": 4,
        "document": {
            "desc": "你的城市码已被门禁于2020年10月1日扫描",
            "button": "确定"
        },
        "msgTmpl": {
        "tmplIds": ["xxxxx"],
        "subscribe": true
        }
      }
    }

    返回的结果

    注意:当回调成功后,则会在.then 中输出结果,即使订阅消息失败 只有在回调失败或者入参错误等,才会 reject 出来

    例如:成功时.then 中的结果有以下几种形式:

    1. 当 templateType = 0 时的回调,即不需要进行消息订阅的后续行为,则返回的结果就是回调结果的 body
    2. 当 templateType != 0 时,且订阅消息均成功时:
    {
        esScanRes: {
            bizData : {
                document: {
                    //...
                },
                msgTmpl: {
                    //...
                  }
            }
        },
        subscribRes: {
            res: {
                ZdxKTIrKR_bedh1K3aed2ZunNOB_EHqSe0i0oCT8hWM: "accept",
                d9CZgtdL5rifendw2SsekvhoZj1mEexKnFiGga0oC6s: "accept"
            }
        }
    }

    其中esScanRes是回调请求的结果。 subscribRes是订阅的结果,若订阅成功,则subscribRes会返回res,res里面是订阅的结果;若订阅失败,则会返回errMsg,显示错误来源。

    2. 关闭轮询

    cb.offScanWaiting();

    3. 关闭轮询后,重新开启轮询需要先调用 reset

    cb.reset();

    Keywords

    none

    Install

    npm i @wecity/weapps-plugin-citycode-callback

    DownloadsWeekly Downloads

    1

    Version

    0.0.3

    License

    ISC

    Unpacked Size

    13.2 kB

    Total Files

    12

    Last publish

    Collaborators

    • zystylish
    • brian_zhang
    • legendlu
    • fenfeizeng
    • colinczhu
    • easonruan
    • yikazhu
    • daniel-dx
    • domy
    • delenzhang
    • vickiliang
    • derrickliu
    • xiaoyaojones
    • smileswlin
    • jillysong
    • allennzhang
    • sharryliao
    • pechelhuang
    • phspan