@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();

Dependents (0)

Package Sidebar

Install

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

Weekly Downloads

0

Version

0.0.3

License

ISC

Unpacked Size

13.2 kB

Total Files

12

Last publish

Collaborators

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