PB开发微信公众号

    如果你有这样的需求,需要为用户或者自己开发一个微信公众号,当有用户关注该公众号,或者发消息时,我们的系统可以自动处理,并进行回复,还需要把其中一些信息推送到我们的pb客户端。

   这个功能如何用pb实现?

配置微信公众号

进入微信公众平台测试,可以进行相关公众平台的测试开发。只需要 设置两个地方就可以,比较简单,不多说。不过有个坑比较大,坑了我好久,用红字标记。

注意:1. 必须填写域名  2.url不能太短

PB开发和运行

当用户关注或者发消息时,微信平台会调用前面配置的url地址进行通知,所以需要用PB开发一个服务后台,这个不是pb的强项,不过借助satrda组件可以很容易这个功能。satrda提供了服务端,类似tomcat等应用服务器,可以支持PB开发的pbl,pbd,dll部署到服务器上运行。satrda组件可以到QQ群:345559891下载

下载完成解压后,

 

1.打开server\plugins\config.cfg插件配置文件进行配置(建议使用用notepad++打开),打开后翻到最后名称为wx的项,效果如下:

 

 

其中Dir代表pb程序所在的目录,wxdemo代表目录在插件所在目录的wxdemo下面。

URL是当前插件需要响应的网址,这里和我们在微信平台配置的url一致。细心的朋友看到这里其实不一致,是/wx/**,而微信平台是https://www.mywx.com/wx/push这样的,这个url其实是/wx/**的一个子集,代表可以响应https://www.mywx.com/wx/push,同样也可以响应https://www.mywx.com/wx/msg等等。

task代表插件后台的定时任务"period":0表示在插件加载时执行一次,"period":30 每隔30秒执行一次。这个应用场景可以很多,大家自己想:)

DLL代表pb运行库,示例是9.0,其它版本请填入实际的值,这个dll需要放在satserver.exe的相同目录或者系统目录下面能够找到,当然如果没有安装pb环境,pb程序运行时依赖的其它dll还是需要一块包括

其它参数请参考下载demo里的文档,这里不进行改动,关掉。

 

2.打开示例的pb工程,找到n_wx对象,修改appid,appsecret,token为微信平台中设置的值

保存后,将plugin.pbl拷到server\plugins\wxdemo目录。

3.将server目录拷备到服务器,配置运行端口为80端口并运行(参考文档,这里要保证服务器的80端口不能被其它程序占用,微信公众平台http只能用80端口)

4.打开微信关注测试订阅号,到这里不出错就可以看到效果了。

5.运行pb示例看推送示例,点击推送演示进入推送窗口,server填上服务器域名或者ip,主题填上wxmsg,当公众号收到消息时就会发送到客户端,效果如图:

 

 

主要代码说明

打开示例的pb工程,找到satrda_service 如下:

代码判断了当task2任务,即启动时,先去取微信accesstoken,如果不取accesstoken,回复会发生错误。

 

of_getaccesstoken()代码如下:

//得到访问token
String ls_url,ls_null,ls_json
long ll_rtn,ll_http,ll_buffer,ll_data
string ls_token,ls_expire
long ll_time

//从缓存取出accesstoken,如果存在并且没有过期,则直接返回
ls_token = n_api.of_memcacheget("wx","access_token")
n_api.of_writeLog(n_api.log_debug,"get memcache token:" + ls_token)
if ls_token <> "" then
	ls_expire = n_api.of_memcacheget("wx","expires_in")
	n_api.of_writeLog(n_api.log_debug,"get memcache expire:" + ls_expire)
	ll_time = n_api.satrda_unixtime( )
	if long(ls_expire) >= ll_time then
		return ls_token
	end if
end if


ls_url = weixinHost + "/token?grant_type=client_credential&appid=" + appid + "&secret=" + appsecret

ll_http = n_api.SATHTTP_Create()
ll_rtn = n_api.SATHTTP_Get(ll_http, ls_url)

if ll_rtn <> 200 then
	n_api.of_writeLog(n_api.log_debug,"Https Get token error:" + string(ll_rtn))
	return ""
end if

ll_buffer = n_api.SATHTTP_GetBuffer(ll_http)
	
//String以0结尾,插入1个0
n_api.Buffer_Append(ll_buffer,n_api.StringToPtr(ls_null),1)
ll_data = n_api.Buffer_Data(ll_buffer)
ls_json = n_api.of_utf8tostring( ll_data)

n_api.of_writeLog(n_api.log_debug,ls_json)

n_api.SATHTTP_Destroy(ll_http)

//正常得到token,写入缓存
ls_token = of_getmidstr( ls_json, '"access_token":"','","')
ls_expire = of_getmidstr( ls_json, '"expires_in":','}')

ll_time = n_api.satrda_unixtime( ) + long(ls_expire)
if ls_token <> "" then
	n_api.of_writeLog(n_api.log_debug,"write to memcache access_token:" + ls_token)
	n_api.memcacheset( "wx","access_token", ls_token)
	n_api.memcacheset( "wx","expires_in", string(ll_time))
end if

return ls_token

注意:token需要通过api保存在memcache中,不能是全局变量。因为每次调用可能是相同的也可能是不同的pb应用,全局变量不能通用。

 

主要处理在n_wx的of_service中,可以打开看主要代码

微信公众号还包括很多功能,示例演示了主要功能,其它功能可以根据微信的官方文档自己进行添加。突然发现可以使用的场景有好多,发挥大家智慧的时候到了:)

 

公众号演示

手机扫描二维码,关注订阅号,可以看到上面开发的效果

 

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
开发微信扫码登录程序是一项非常有挑战性的任务。首先,我们需要了解微信扫码登录的工作原理。 微信扫码登录是一种基于OAuth 2.0协议的认证方式。下面是开发微信扫码登录程序的基本步骤: 1. 注册开发者账号:在微信开放平台注册一个开发者账号,并创建一个应用。 2. 配置开发环境:将微信提供的开发工具包集成到开发环境中。可以选择使用Java、Python等编程语言来开发。 3. 获取授权地址:在后台配置应用的授权回调地址。用户扫码登录后,微信会将授权码返回到该地址。 4. 生成二维码:调用微信提供的API生成用户扫码登录所需的二维码。 5. 监听回调:在后台实现一个回调接口,监听微信回调的授权码。 6. 获取用户信息:通过授权码,调用微信提供的API获取用户的基本信息,如昵称、头像等。 7. 实现登录逻辑:将获取到的用户信息与本地系统用户进行关联,实现用户的登录逻辑。 开发微信扫码登录程序需要对微信开放平台的文档进行深入研究,并掌握相关的API调用所需的参数和格式。此外,需要具备网络编程、接口开发等相关的技能。 开发微信扫码登录程序对于企业来说有很多好处。首先,可以提供一种方便快捷的登录方式,避免用户需要记忆过多的账号和密码。其次,可以增加用户粘性,提高用户的黏性和活跃度。最后,可以帮助企业获取用户的基本信息,便于个性化推送和精准营销。 总结来说,开发微信扫码登录程序是一项复杂的任务,需要充分了解微信扫码登录的工作原理和开发流程。通过合理的开发和配置,可以提供一种便捷的登录方式,增加用户黏性,并为企业实现个性化推送和精准营销提供基础数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值