微信小程序demo开发总结

简介

学习微信小程序开发中遇到问题,总结一下。

模板消息遇到的问题

  • 区分ID和template_id, id是所有小程序都可以使用的,是"模板库"里面的ID, template_id 是我的模板中的ID, template_id 是发模板消息时需要使用的。
  • 请求POST接口时, request body需要是json字符串, 比如PHP语言,需要这样设置request body curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)) data是由请求参数组成的数组, 比如:/cgi-bin/wxopen/template/library/list 这个接口,要是request_body 格式不对, 会返回 system error hint:xxxx的错误信息, post请求的抓包数据如下:
POST /cgi-bin/wxopen/template/library/list?access_token=ZAnYXewHQFzsAlOwGsAgB4AIAhHnW9y-2B7EghTvvdIokI8JZtosZ-MieDNwzYdM_Sc4lNq4EJ9AOkcRTZ0PXOHg2MQlD5w7B4V__4LChI1_1qJPTlyXz-V1oplIjuK_UIVcABAAOB HTTP/1.1
Host: api.weixin.qq.com
Accept: */*
Content-Length: 22
Content-Type: application/x-www-form-urlencoded

{"offset":0,"count":3}HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json; encoding=utf-8
Date: Sat, 16 Sep 2017 15:19:33 GMT
Content-Length: 183

{"errcode":0,"errmsg":"ok","list":[{"id":"AT0002","title":".................."},{"id":"AT0003","title":".................."},{"id":"AT0004","title":"............"}],"total_count":880}

鉴权服务搭建,

github: https://github.com/tencentyun/wafer-session-server

会话服务来实现cookie的功能, 需要创建存储appid以及用户session信息的表,并导入appid和secret记录,

并且需要检查system/db/db.ini文件中db访问的配置

鉴权服务和小程序后端服务的nginx配置

server {
    listen 80;
    rewrite_log on;
    access_log  /Users/huyongde/Desktop/wxapplet/wafer-demo/logs/access.log ;
    error_log  /Users/huyongde/Desktop/wxapplet/wafer-demo/logs/error.log  debug;
    root /Users/huyongde/Desktop/wxapplet;

    location ^~ /wafer-demo {
        root /Users/huyongde/Desktop/wxapplet/wafer-demo;
        rewrite ^/wafer-demo/(.*)$ /index.php/$1 break;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include        fastcgi.conf;
    }
    location ^~ /wafer-session-server {
        rewrite ^/wafer-session-server(.*)$ /wafer-session-server/index.php/$1 break;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include        fastcgi.conf;
    }
}

对应的代码目录是:

▾ wxapplet/

▸ demo/

▸ server/

▸ wafer-client-demo/

▸ wafer-demo/

▸ wafer-session-server/

其中wafer-demo对应的是wafer-php-server-demo的代码

wafer-session-server是会话服务的代码

wafer-demo(小程序后端) 代码修改:

application/config/routes.php

文件最后一行加一个路由设置

$route['wafer-demo/(.*)'] = '$1';

配合nginx的conf来实现ci框架的自动路由

配置sdk.config, 配置小程序后端用到的各项服务:

wafer-demo 目录下创建sdk.config文件,并且修改wafer-demo/wafer-demo/install_qcloud_sdk.php文件中的sdkConfig变量 $sdkConfig='./sdk.config

sdk.config文件内容为:

{

"serverHost": "127.0.0.1",
"authServerUrl": "http://127.0.0.1/wafer-session-server/",
"tunnelServerUrl": "https://ws.qcloud.com",
"tunnelSignatureKey": "key",
"networkTimeout": 6000

}

其中authServerUrl 是会话的鉴权服务

tunnelServerUrl是websockets的信道服务, 使用腾讯云提供的就可以

如上改动之后的小程序相关代码, 记录在了 https://github.com/huyongde/wxminapp中,server 中的代码是小程序API相关的, wafer开头的目录是搭建小程序官方demo使用的。

问题

  • FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, 解决方法:用普通账户运行php-fpm, 不用root账户, 也不用sudo php-fpm

小程序信道服务

wafer-demo/vendor/qcloud/weapp-sdk/lib/Tunnel/TunnelService.php

修改此处签名教研部分的代码后才跑通信道测试。

如上内容仅供参考,如有问题欢迎交流。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

backend技术总结

2 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏L宝宝聊IT

VBR的部署

1385
来自专栏一“技”之长

Git命令集之一——配置参数 原

这个命令用于修改git命令执行的目录,例如在桌面执行如下命令和进入到IBox文件夹中执行status是一样的:

501
来自专栏JAVA技术站

Jmeter的压测使用

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。...

771
来自专栏加米谷大数据

Kafka日志设置和清除策略

config/log4j.properties中日志的级别设置的是TRACE,在长时间运行过程中产生的日志大小吓人,所以如果没有特殊需求,强烈建议将其更改成IN...

1792
来自专栏坚毅的PHP

my linux FAQ

用命令查询系统是32位还是64位 getconf LONG_BIT or getconf WORD_BIT 例如: [root@sy02 /]# getconf...

2993
来自专栏技术之路

Http概述(一)

Http使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,也能够确保数据在传输过程中不会被损坏或产生混乱。 这样用户在访问信息时就不用担心其完整性了。 ...

1875
来自专栏向治洪

cocos2d 在windows环境下搭建

详细搭建步骤如下: 1、Android 开发环境搭建 Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。 1、下载 ...

1977
来自专栏北京马哥教育

零基础用Python | 实现12306火车票实时查询

大家都用过12306,今天我们来学习写一个Python程序,要求在命令行敲一行命令来获得你想要的火车票信息。 1 接口设置 先给这个小应用起个名字吧,既然及查询...

2989
来自专栏小樱的经验随笔

【批处理学习笔记】第十一课:常用DOS命令(1)

【 文件夹管理 】 cd 显示当前目录名或改变当前目录。 md 创建目录。 rd 删除一个目录。 dir 显示目录中的文件和子目录列表。 tree 以图形显示驱...

2696
来自专栏大内老A

WCF如何克服HTTP传输协议的局限提供对不同消息传输模式的实现

WCF采用消息作为通信的唯一手段,它支持不同的消息交换模式(MEP:Message Exchange Pattern),比较典型的有以下三种MEP:One-Wa...

1716

扫码关注云+社区