小程序带参数贰维码生成接口,关于小程序未上线2维码识别成效开发

By admin in 4858美高梅 on 2019年4月11日

近些年触及了小程序开发,发现大家能够动用微信小程序提供的接口来生成小程序二维码,具体什么操作能够瞻仰那里:微信小程序获取2维码。

小程序获得小程序码提供了八个接口

多年来做微信PC端网页微信相关职能的开支,从三个新手的角度来说,微信公众号的文书档案照旧倒霉精晓的,网上找的帖子大都也都大致是复制微信公众平台上给的文书档案,开发微信带参数2维码进程中恐怕遭遇不少坑的,在此把本人的开支进度相比详细的笔录下,希望对我们全体协助。

赢得2维码

通过后台接口能够获得小程序任意页面包车型客车二维码,扫描该贰维码能够直接进入小程序对应的页面。最近微信协助二种贰维码,小程序码(左),小程序贰维码(右),如下所示:

4858美高梅 1

咱俩应用的是接口B:

接口A: 适用于必要的码数量较少的思想政治工作场景 接口地址:

自家此番开发应用的是注明服务号。 

赢得小程序码

笔者们推荐生成并利用小程序码,它富有更加好的辨识度。如今有五个接口能够变动小程序码,开发者能够根据本人的内需采纳适宜的接口。

接口A: 适用于须求的码数量较少的工作场景
接口地址:

https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN

获取 access_token
详见文档

4858美高梅 2

 

接口B:适用于须求的码数量极多,或仅一时半刻接纳的政工场景注意:通过该接口生成的小程序码,永久有效,数量限制见文末表达,请小心使用。用户扫描该码进入小程序后,将直接进入
path 对应的页面。

接口地址:

https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

获取 access_token
详见文档

4858美高梅 3

 

在意:通过该接口生成的小程序码,永久有效,数量暂Infiniti制。用户扫描该码进入小程序后,开发者需在对应页面获取的码中
scene 字段的值,再做处理逻辑。使用如下代码能够收获到2维码中的 scene
字段的值。调试阶段能够选取开发工具的口径编写翻译自定义参数 scene=xxxx
进行效仿,开发工具模拟时的 scene 的参数值要求举办 urlencode

// 这是首页的 js
Page({
  onLoad: function(options) {
    // options 中的 scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
    var scene = decodeURIComponent(options.scene)
  }
})

 

https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN

1 接入 首先进入微信公众号 -> 基本配备 
上边是基本配置的页面,在U昂CoraL中填入服务器地址,这么些地方便是经受微信推送事件的多少个接口,小编是使用thinkPHP框架开发的次第,在中间2个Module(Decoration)的Action目录下新建一个类,比如叫:
WechatAction.class.php ,在该Action中新建1个public方法,比如叫:
UOdysseyLRedirect() ,那么在那么些URL中填入的就是
,然后填写Token,Token随意填,EncodingAESKey要不要都行,然后点击确认,微信会往这么些UPRADOL上发送2个get请求,里面包涵众多参数,在那之中多数都以让我们和好核查本次访问是否微信服务器请求的,小编本身从来不表明,他的要求是一旦我们审查批准成功,即原样重返get请求中的2个参数echostr,这里的回到不是return,也不是ajaxReturn,而利用echo,如果用thinkPHP开发以来,直接行使
echo I(‘echostr’); 即可。然后接口即验证成功了。 

得到小程序2维码

接口C:适用于必要的码数量较少的业务场景

接口地址:

https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

获取 access_token
详见文档

POST 参数表明

4858美高梅 4

示范:注意:通过该接口生成的小程序二维码,永久有效,数量限制见文末表明,请谨慎运用。用户扫描该码进入小程序后,将一贯进去
path 对应的页面。

{"path": "pages/index?query=1", "width": 430}

 

注:pages/index
需要在 app.json 的 pages 中定义

察觉有个坑:未上线的小程序生成二维码时如果传入的page未上线,那么会转移失败。不过大家线上肯定是内需跳转到钦命页面包车型地铁,所以测试起来就相比较蛋疼。各方咨询,最终结果依旧是未上线不可能测试。。。

POST 参数表明(先写表格会产出多少个对markdown语法还不太熟稔,就先用dai ma
hang)

4858美高梅 5

Bug & Tip

  1. tip:通过该接口,仅能生成已发表的小程序的二维码。
  2. tip:能够在开发者工具预览时生成开发版的带参贰维码。
  3. tip:接口A加上接口C,总共生成的码数量限制为100,000,请小心调用。
  4. tip: POST 参数必要转成 json 字符串,不协助 form 表单提交。
  5. tip: auto_color line_color 参数仅对小程序码生效。

小程序参数2维码生成工具:芝麻小程序码

支撑接口A,黄华小程序参数二维码。接口B:小程序场景贰维码,接口C:普通小程序二维码

4858美高梅 6

 

page要求:必须是已经发布的小程序存在的页面(否则报错),例如 "pages/index/index" ,根路径前不要填加'/',不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
参数            类型      默认值            说明
path            String                   不能为空,最大长度 128 字节
width           Int      430             二维码的宽度
auto_color      Bool     false           自动配置线条颜色,line_color    {"r":"0","g":"0","b":"0"}

2 带参数2维码的效应 小程序带参数贰维码生成接口,关于小程序未上线2维码识别成效开发。微信的带参数2维码有二种,①种是一时2维码,一种是永远二维码,可是永久二维码的转移是有个数限制的,笔者这一次要兑现的效用是用户未登录的状态下在网址上使用产品,比如得到某商品的详细报价,不过又不想注册,不过又想保留那几个报价单,那个时候网页可以生成一张二维码,用户1旦用微信扫一扫这些贰维码,官方公众号就会给那一个用户发送1天图像和文字音信,图像和文字消息点开后正是用户刚刚获得的报价单,而且能够随时点击查阅并且享受给爱人进行比价。所以近来2维码即可平常使用。
下边是自己是怎么使用的,上面介绍一下方方面面交互的流程

 

接口B:适用于须要的码数量极多,或仅权且采纳的事情场景

当用户扫描这些贰维码,假如用户关切了公众号,用户会一贯进去与大众号的对话页面,微信服务器会给大家在上一步设置的服务器UWranglerL中推送一条新闻,个中能够指引3个我们自定义的参数。假诺用户未关心公众号,则用户率先会跳转到公众号关切页面,用户点击关怀后,会直接进去公众号的对话页面,微信服务器那时也会给我们设置的UTiggoL推送3个事变音信,引导大家自定义参数,我们能够依据那个参数和事件类型做决定下一步动作。

咱俩看一下微信官方提供的部分内容:

接口地址:

3 具体支出进度 

注意:通过该接口生成的小程序码,永久有效,数量暂无限制。用户扫描该码进入小程序后,开发者需在对应页面获取的码中 scene 字段的值,再做处理逻辑。
使用如下代码可以获取到二维码中的 scene 字段的值。调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟,开发工具模拟时的 scene 的参数值需要进行 urlencode

// 这是首页的 js
Page({
  onLoad: function(options) {
    // options 中的 scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
    var scene = decodeURIComponent(options.scene)
  }
})
 https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

3.1 获取access_token 这个access_token是我们先后调用微信接口的凭证,近日的有效期是7200秒,所以大家供给定时更新access_token。
获取艺术:
方法 : GET
url :
内部的参数APPID和APPSECRET是大家群众号的应用程式ID和应用软件SECRET,在微信公众号
-> 基本配备中得以查到,调用成功会重回如下JSON数据:
 {“access_token”:”ACCESS_TOKEN”,”expires_in”:7200}

也正是说大家得以在经过开发工具的尺度编译自定义参数模拟。那么些措施本身那边未有尝试。

POST 参数表达

其中access_token正是调用接口凭证,expire_in是token有效时间。
自身作者是把access_token存在数据库中,同时保留过期日子,然后装进公用函数
getWechatAccessToken()
,每一遍先检查access_token是或不是过期,倘使过期则再次取得,不然间接利用数据库保存的access_token即可,小编忘了在何方看加过,这一个access_token每日的获得次数应当是有限量的。上边是
getWechatAccessToken()  的切实落到实处:

咱俩就依据最有望正确的格局去做。对于后端是那样传值的:

参数            类型      默认值            说明
scene           String                   最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 encodeUrl 处理,请使用其他编码方式)
page            String                   不能为空,最大长度 128 字节
width           Int      430             二维码的宽度
auto_color      Bool     false           自动配置线条颜色,line_color    {"r":"0","g":"0","b":"0"}
line_color      Object   rgb(0,0,0)      auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"}{"r":"0","g":"0","b":"0"}
//获取access_token
function getWechatAccessToken(){
 $wechatInfo = M('wechat_info')->select();
 $wechatInfo = array_reduce($wechatInfo, create_function('$result, $v', '$result[$v["conf_name"]] = $v;return $result;'));
 $expireTime = $wechatInfo['PUBLIC_WECHAT_ACCESSTOKEN_EXPIRES']['conf_value'];        //前面不用管,是我数据库相应设置

 if (time() < $expireTime){    //access_token未过期
  return $wechatInfo['PUBLIC_WECHAT_ACCESSTOKEN']['conf_value'];
 }else{         //access_token过期,重新获取
  $baseUrl = C('WECHAT_PUBLIC_GET_ACCESS_TOKEN');
  $url = str_replace("##APPSECRET##", $wechatInfo['PUBLIC_WECHAT_APPSECRET']['conf_value'], str_replace("##APPID##", $wechatInfo['PUBLIC_WECHAT_APPID']['conf_value'], $baseUrl));
  $result = file_get_contents($url);
  $result = json_decode($result, true);

  if (array_key_exists('errorcode', $result)){  //失败重试一次
   return false;
  }else{
   M('wechat_info')->where(array('conf_name' => 'PUBLIC_WECHAT_ACCESSTOKEN'))->save(array('conf_value' => $result['access_token']));
   M('wechat_info')->where(array('conf_name' => 'PUBLIC_WECHAT_ACCESSTOKEN_EXPIRES'))->save(array('conf_value' => time()+$result['expires_in']-200));
   return $result['access_token'];
  }
 }
}
  scene = "uid=" + uid + "&cid=" + cid;
 Map<String, Object> twoDimensionMap = this.getTwoDimensionForWX(accessToken, page, scene);

获得小程序二维码

C(‘WECHAT_PUBLIC_GET_ACCESS_4858美高梅,TOKEN’) =

其间的getTwoDimensionForWX是我们自定义的法门,里面是调用微信的接口:

接口C:适用于需求的码数量较少的工作场景

封装好那个今后,我们每一次就可以安心的施用了。

public Map<String, Object> getTwoDimensionForWX (String accessToken, String page, String scene){
        Map<String, String> map = Maps.newHashMap();
        Map<String, Object> resultMap = Maps.newHashMap();
        map.put("page", page);
        map.put("scene", scene);
        Map<String, String> headers = Maps.newHashMap();
        String method = "POST";
        headers.put("Content-Type", "application/json; charset=UTF-8");
        Map<String, String> querys = Maps.newHashMap();
        String bodys = JSONObject.toJSONString(map);
     String host = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
     HttpResponse res =HttpUtils.doPost(host, "", method, headers, querys, bodys);
//res就是我们拿到的二维码数据
}

接口地址:

.贰 创建一时半刻2维码

这么写就能够成功博获得2维码(发表线上从此),
因而后端发表时那样写就ok。(那里的方式唯有壹对,并不完全,但完全能够表达出来意思)

https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

3.2.1 获取ticket3

接下去就是微信小程序端的处理:

POST 参数表明

恳请情势: POST
接口:
POST数据: {“expire_seconds”: 604800, “action_name”:
“QR_SCENE”, “action_info”: {“scene”: {“scene_id”: 123}}}
接口U奥迪Q7L中的TOKEN即大家在三.第11中学获得的access_token,post数据中expire_seconds是贰维码的卓有成效时间,最多为30天,action_name暂时2维码的话固定就是QLacrosse_SCENE,scene_id即大家自定义参数,是个3拾个人非0整数,小编在利用中把它设为订单的ID,微信服务器推送事件的时候会把那么些值重回给大家设置的接口中,然后作者会依照这一个值去拿相应的订单数量彰显在网页上,那是后话。 

  onLoad: function (options) {
    // 扫描二维码获取的数据
    if (options.scene) {
      var scene = decodeURIComponent(options.scene)
      // var scence = options.scene;
      var arrPara = scene.split("&");
      var arr = [];
      var testData = {};
      for (var i in arrPara) {
        arr = arrPara[i].split("=");
        if (i == 0) {
          testData.uid = arr[1];
        } else {
          testData.cid = arr[1]
        }
      }
      //这里的testData就包括了uid和cid
    }
  },
参数            类型      默认值            说明
page            String                   不能为空,最大长度 128 字节
width           Int      430             二维码的宽度

上面是包装的变更一时2维码的章程: 

小程序端根据那种方式处理就足以了。

示例:

//创建临时二维码
function getTemporaryQrcode($orderId){
 $accessToken = getWechatAccessToken();
 $url = str_replace("##TOKEN##", $accessToken, C('WECHAT_PUBLIC_GET_TEMPORARY_TICKET'));
 $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$orderId.'}}}';
 $result = api_notice_increment($url, $qrcode);
 $result = json_decode($result, true);
 return urldecode($result['url']);
}

沉凝也是那么些逻辑,微信那边只是把scene做了encode处理,里面的数目只是1个字符串,所以大家使用的时候后端传的内容是何等,大家小程序端取到的数额就是何许,所以假诺根据自身上边吧的那种办法传值,需求对字符串举行剪切获取须要多少。

{"path": "pages/index?query=1", "width": 430}

中间的方法 api_notice_increment()
是自身封装的七个POST方法函数,作者试过很多POST的艺术,或然出于微信接口对POST方法和参数的限定相比严谨,这些浪费了漫长时刻,最终在网上找到了2个得以行使的卷入好的POST方法,提出我们先自身尝试,假设微信再次来到错误啊,就用这些吧,起码小编测试微信那么些接口的时候用postman测试再次回到的都是荒唐,而且必然要用JSON字符串,一定如若十一分严苛的JSON字符串。下边是其壹办法: 

除此以外索要专注一点:那正是scene的字符限制:

注:pages/index 需要在 app.json 的 pages 中定义

function api_notice_increment($url, $data){
 $ch = curl_init();
 $header = "Accept-Charset: utf-8";
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $tmpInfo = curl_exec($ch);
 if (curl_errno($ch)) {
  curl_close( $ch );
  return $ch;
 }else{
  curl_close( $ch );
  return $tmpInfo;
 }

}
最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)

基于卖家事务要求获得小程序码我们都以急需第三个接口:

getTemporaryQrcode()
中有二个在配备文件中的参数给我们看下,其实就是微信接口链接: 
C(‘WECHAT_PUBLIC_GET_TEMPORARY_TICKET’) =

 

难点来了:第一个接口的scene字段是怎么样?1说场景值,壹说必要带的参数值。

以此接口的重返值是: 
{“ticket”:”gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==”,”expire_seconds”:60,”url”:”http:\/\/weixin.qq.com\/q\/kZgfwMTm72WWPkovabbI”}

上述正是对生成码和扫码的逻辑处理。

一.第3得到ACCESS_TOKEN,什么是ACCESS_TOKEN?

其间ticket是让我们用来进展下一步调用的凭据,expire_seconds是贰维码的有效期,url是大家转移的2维码扫描后打开的链接。所以假使大家团结实现了生成二维码的措施,就不用再展开下一步调用,小编笔者即在这一步就终止了,直接回到url的值,然后使用那一个url的值生成2维码存在本地即可。PHP生成贰维码能够应用phpqrcode,挺好用的。下一步也大体提一下:

 

access_token是公众号的大局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者要求展开妥当保存。access_token的存款和储蓄至少要保留5十二个字符空间。access_token的有效期近日为贰个钟头,需定时刷新,重复获取将促成上次得到的access_token失效。

三.二.二 获取2维码地址
呼吁方式: GET
接口:
那一个接口的再次回到值是一张图纸,能够平昔彰显或然下载,大家有具体运用过,所以也不明白应该怎么显得。 

公众号能够动用AppID和AppSecret调用本接口来得到access_token。AppID和AppSecret可在“微信公众平台-开发-基本配备”页中获得(须求已经变成开发者,且帐号未有特别状态)。调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置情势,不然将不能调用成功。

叁.三 用户扫描二维码之后爆发的事务  3.三.一 扫描后爆发了哪些
地点提到了,用户扫描大家转移的方今2维码,若是用户未关心公众号,则第二会跳转到公众号的珍重页面,点击关注后,会进入公众号的对话页面,同时会给大家设置的接口推送2个风浪。假若用户已经关心了,用户微信会直接跳转到公众号会话页面,然后微信服务器会给大家设置的接口推送二个事件。

详细:网页调节和测试工具

用户关切与否微信服务器给大家推送的事件是大致的,只是新关切用户推送的轩然大波中scene_id前边会加一个前缀。下边是微信公众平台文书档案的认证:

据此最初的代码是:

用户未关怀时,实行关心后的风浪推送

wx.request({
 // 获取token
 url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential',
 data: {
  appid: '***',
  secret: '***'
 },
 success(res) {
  wx.request({
   // 调用接口C
   url: 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' + res.data.access_token,
   method: 'POST',
   data: {
    "path": "pages/meiTuan/meiTuan",
    "width": 430
   },
   success(res) {
    // res是二进制流,后台获取后,直接保存为图片,然后将图片返回给前台
   }
  })
 }
})
<xml><ToUserName><![CDATA[toUser]]></ToUserName>        //开发者微信号
<FromUserName><![CDATA[FromUser]]></FromUserName>       //发送者账号(openid)
<CreateTime>123456789</CreateTime>                //消息创建时间(整型)
<MsgType><![CDATA[event]]></MsgType>              //消息类型 event
<Event><![CDATA[subscribe]]></Event>              //事件类型(subscribe)
<EventKey><![CDATA[qrscene_123123]]></EventKey>        //事件KEY值,qrscene_为前缀,后面为二维码参数值
<Ticket><![CDATA[TICKET]]></Ticket>               //二维码ticke值,可以用来换取二维码图片
</xml> 

上边那么些事例是前者获取小程序码的写法。

 

因为前者获取到后接口再次来到的是个二进制的流,使用小程序自带的image标签是无法开始展览展示的,并且前端揭发AppID和AppSecret密钥不安全,所以那边的操作都是内需后端来拓展的,此时提交后端进行转换并赶回一张小程序码的图样给您。

用户已关怀时的轩然大波推送

前端只要求获得后端重临图片的图纸展现即可。现与后端约定:

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>        //开发者微信号
<FromUserName><![CDATA[FromUser]]></FromUserName>     //发送者账号(openid)
<CreateTime>123456789</CreateTime>             //消息创建时间
<MsgType><![CDATA[event]]></MsgType>     //消息类型event
<Event><![CDATA[SCAN]]></Event>               //事件类型 event
<EventKey><![CDATA[SCENE_VALUE]]></EventKey>   //事件key值,是一个32位无符号整数,即创建二维码时的二维码scene_id
<Ticket><![CDATA[TICKET]]></Ticket>      //二维码的ticke,可以用来换取二维码图片
</xml>

小编给页面page(第3,第9个接口是path)路径,以及要求的scene字段。

3.三.2 大家要做些什么

中间蒙受的难题:scene字段是怎么样?作者怎么得到?

大家必要在协调填写的ULX570L接口中吸收那些事件,然后获得大家供给的事物做大家想干的事体。因为本身要落到实处的坚守相比不难,只须求获得scene_id即可,因为那是自己要出示给用户看的订单数量。上面是自作者写的收取和拍卖部分,比较不难,主要看一下应有怎么接收微信推送的轩然大波: 

时期设想scene是扫码后才能得到的场景值,注意是扫码后才会有,那笔者怎么变卦小程序码,那里陷入二个误区了。

public function urlRedirect(){
  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  $fromUsername = (string)$postObj->FromUserName;
  $EventKey = trim((string)$postObj->EventKey);
  $keyArray = explode("_", $EventKey);
  if (count($keyArray) == 1){   //已关注者扫描
   $this->sendMessage($fromUsername, $EventKey);
  }else{                   //未关注者关注后推送事件
   $this->sendMessage($fromUsername, $keyArray[1]);
  }
 }

其实scene在那里你能够知道为传参数的2个字段。

小编一贯不动用其它参数,只是依照不一样的推送事件得到自笔者想要的订单ID,然后那时候其实一定于你在此间用群众号的客服在跟扫码的这一个用户对话,上段代码中调用的sendMessage()是运用客户账号给扫码用户发送四个图文消息,因为小编在拿scen_id的还要也得到了用户的openid,能够使用这么些给用户发送新闻。

⚠️第贰个第5个接口是不须要传入scene字段的且字段为path

下面是sendMessage()方法: 

path: 'pages/index/index?jobId=111111' //此时字段是path
//给用户发送图文消息,点击跳转到报价页面
 public function sendMessage($openid,$orderId){
  $url = str_replace('##TOKEN##', getWechatAccessToken(), C('WECHAT_SEND_MESSAGE'));
  $redirectUrl = str_replace("##ORDERID##", $orderId, str_replace("##OPENID##", $openid, C('WECHAT_REDIRECT_URL_PRE')));
  $orderInfo = M('order')->where(array('orderid' => $orderId))->field(array('totalMoney', 'savedMoney', 'roomarea'))->find();
  $description = str_replace("##ROOMAREA##", intval($orderInfo['roomarea'] * 1.25), C('WECHAT_MESSAGE_BRIEF'));
  $description = str_replace("##TOTALBUDGET##", $orderInfo['totalMoney'], $description);
  $description = str_replace("##MARKETBUDGET##", $orderInfo['totalMoney']+$orderInfo['savedMoney'], $description);
  $description = str_replace("##SAVEMONEY##", $orderInfo['savedMoney'], $description);
  $dataStr = '{"touser":"' . $openid . '","msgtype":"news","news":{"articles":[{"title":"' . C('WECHAT_MESSAGE_TITLE') .
   '","description":"' . $description . '","url":"' . $redirectUrl . '","picurl":"' . C('WECHAT_MESSAGE_PICURL') . '""}]}}';
  api_notice_increment($url, $dataStr);
 }

⚠️第壹个接口是亟需的且字段为page

其中 C(‘WECHAT_SEND_MESSAGE’) =

至于上面的一大段str_replace,正是在组给用户发送的文字而已,须求留意$dataStr的格式,那中间供给JSON字符串比较严格,必须具备的字符串都用双引号括起来。微信接口对POST参数的限量真心严俊。

scene: 'jobId=111111',  //(string类型)
page: 'pages/index/index' //此时字段是page注意前面不要加'/'

上边是微信公众平台开发者文书档案中必要发送图像和文字消息的POST data格式: 

⚠️生成的小程序码都以只好跳转线上的小程序页面,固然线上未曾页面是跳转不了的,当然跳转后必要在本人要跳转的页面onLoad里得到scene字段然后开始展览逻辑操作

{
 "touser":"OPENID",
 "msgtype":"news",
 "news":{
  "articles": [
   {
    "title":"Happy Day",
    "description":"Is Really A Happy Day",
    "url":"URL",
    "picurl":"PIC_URL"
   },
   {
    "title":"Happy Day",
    "description":"Is Really A Happy Day",
    "url":"URL",
    "picurl":"PIC_URL"
   }
   ]
 }
}

选取如下代码能够拿走到贰维码中的 scene
字段的值。调节和测试阶段能够应用开发工具的尺度编译自定义参数 scene=xxxx
进行效仿,开发工具模拟时的 scene 的参数值要求展开 encodeUrl

内部url是用户点击那一个消息随后打开的地方,今年自个儿就组了贰个祥和网址的地方,是三个get请求地址,里面带领参数是用户的openid和订单id,那样用户点击开图文音信就足以看到本人刚刚下单的始最后,因为需求在网页上海展览中心示用户的微信头像和别名,所以作者把openid也置于参数里,在页面加载前先拿到用户的个人消息和订单数量,再呈现网页。那样流程:用户未登录下单
-> 生成微信2维码 -> 用户扫码关切群众号 -> 查看订单详细消息就完结了。而且因为这些图像和文字消息打开后的链接引导的参数是其壹用户的额openid和其下单的订单ID,不管分享到什么地方,用什么样浏览器打开都是能够访问的,且显示的也是这几个用户的头像和别名音讯,这也是自小编要落实的3个功能。

Page({
  onLoad: function(options) {
    // options 中的 scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
    var scene = decodeURIComponent(options.scene)
  }
})

如上便是本文的全体内容,希望对大家的学习抱有扶助,也可望大家多多帮忙脚本之家。

  1. tip:通过该接口,仅能生成已公布的小程序的二维码。
  2. tip:能够在开发者工具预览时生成开发版的带参贰维码。
  3. tip:接口A加上接口C,总共生成的码数量限制为十0,000,请谨慎调用。
  4. tip: POST 参数需求转成 json 字符串,不帮忙 form 表单提交。
  5. tip: auto_color line_color 参数仅对小程序码生效。
  6. 那般举行调剂模拟线上环境壹旦在onLoad里得到scene即可

您大概感兴趣的小说:

  • 选取PHP生成2维码的二种格局(带logo图像)
  • php生成2维码的三种艺术整理及接纳实例
  • PHP下通过Q奥迪Q5Code类库创立中间带网站LOGO的二维码
  • PHP分享图片的成形方法

4858美高梅 7

image

4858美高梅 8

image

因产品须要原因需先上线,所以生成小程序码必要在正儿八经上才能测试,所以那里先用到第二个接口,然后再慢慢改为第贰个接口调节和测试。

青团社招聘:

选聘职位:高级前端开发工程师P5及以上
坐标台州市富阳区文壹西路1380号金之源大厦1一层

简历投递到:hr@qtshe.com
||
haochen@qtshe.com

职位描述:

一、建设工具、提炼组件、抽象框架,促进前端工程化、服务化,持续进步研究开发功效,保证线上产质量量

2、塑造H5/PC应用基础设备,主导建设前端各样发表/监察和控制等楼台,指引落到实处消除方案

三、持续优化前端页面品质,维护前端代码规范,钻研各个前沿技术和立异互动,增强用户体验、开拓前端能力边界

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有