在很多场景下我们需要用户在微信内打开网页时获取用户的openid并做对应的业务处理,因为openid对同一个公众号是唯一的,所以可以根据openid实现诸如投票,抽奖,注册等等的业务,那么如何获取用户的openid呢,根据微信官方提供的网页授权接口可以分为两种情况,一种是只获取用户的openid...
  提起支付宝支付接口其实核心的还是电脑网站支付,其他的不论是手机网站支付还是手机扫码支付,还是网页唤醒支付宝APP支付都可以在电脑网站支付的基础上“改良”出来。下面以电脑支付接口为基准对比一下支付宝新版和老版接口在PC和手机上的请求参数差异。  支付宝电脑网站支付与手机网站...
  在开发过程中经常遇到根据不同的设备显示不同的数据或者在页面样式上做不同的布局,另外在做支付接口的时候也可能会判断当前是什么设备访问,例如判断如果是微信内置浏览器访问则只启用微信支付功能,如果是支付宝内置浏览器访问也是类似的处理方式,那么如何判断当前访问的设备呢,通常使用的方式是通过请求头信息中的...
  这里所说的二码合一指的是不管是支付宝和微信扫描的是同一个二维码来完成整个支付的过程,并且是通过调用支付接口来实现的,不同于使用PS将微信支付宝二维码合成一张图片。有时我们在某些门店扫码结账时可能遇到店家只有一个二维码不管使用微信还是支付宝都能扫,这里讲的就是这种方案的实现方式。其实二码合一可以延...
  在调试微信公众号支付时遇到了一个比较诡异的问题,在安卓手机上完全正常,但是同样的代码在苹果设备上就不行,iphone和ipad都测试过也是报同样的错误调用JSAPI缺少参数:timeStamp。开始打印了一下数据发现生成的json数据中是有时间戳这个参数的,但是为什么在IOS上就不行呢。规则完全...
  市面上的NoSQL数据库已经很多了,SSDB也是其中的一份子,和Redis的安装使用都非常接近。但是存储机制依赖于硬盘,因此支持的存储数据量非常大,某些情况下速度可能比Redis要差一些。官方有和Redis的对比测试,这个可以作为参考,和实际的应用场景有关系。下面说一下安装方式。#首先下载源码包...
  关于icomet的安装及使用方式可以阅读前面几篇博文,有了前面的基础再来实现一对一或者群聊就比较容易了,关键是如何设计。在实现的基础上还要保证信息实时送达,保证信息安全。  首先说一下一对一聊天,每一个用户有自己的独立通道(频道)和token(icomet生成),并且用户只接收自己通道(频道)的...
  在《icomet消息推送原理与常用指令》这篇文章中介绍了icomet的消息推送实现方式但是未涉及到安全认证,本文会介绍token认证的实现方式。首先需要在配置文件icomet.conf中开启token认证(将auth项由none修改为token),修改为如下配置:......front: ...
  在《即时通讯消息服务器icomet在Linux下的安装》这篇文章中已经介绍了icomet的安装方式,本文介绍一下即时通信实现的原理和常用的指令。首先看一下icomet的工作时序图。下面说一下常用的一些指令:在订阅方面支持SSE(Server Sent Event)代码格式如下:<scrip...
  iComet 是C++ 编写的高性能即时通讯服务器,支持百万并发,可用于多人聊天、一对一实时聊天,支持token权限认证,安全性很高。 支持移动或web应用,多浏览器和操作系统平台。本文以Linux的发行版CentOS7作为安装的服务器讲解安装过程,其他版本也是类似的。github地址是http...
  上一篇博文已经使用程序实现了聊天功能,但是数据无法持久化,本文介绍一下数据持久化的实现思路。其实数据的持久化和消息服务器或者使用的协议都没有关系,属于应用层方面的事情。  实现思路主要有两点,即数据的存储于数据的读取。在数据存储方面,可以使用关系型或者非关系型数据库,可以保存频道和内容,接收到客...
  在《使用nginx-push-stream-module构建在线聊天室(一)》这篇文章中已经介绍了nginx-push-stream-module插件的安装,本文中介绍一下如何通过程序来实现聊天功能。   其实实现聊天功能一个是客户单代码另外是服务器端的代码,关于客户端的程序在安装源文件中也有...
  在线聊天的实现方案有很多,像Ajax长短轮循、富客户端、HTTP长连接、HTML5的event source和websocket等。目前来看HTML5的websocket比较具有优势,对于不支持H5的浏览器可以忽略或者采用兼容的形式来实现。接下来提到的nginx-push-stream-modu...
  有时我们需要在现有的web服务器上增加新的模块实现更为丰富的功能,Nginx算是比较常用的web服务器,但是nginx也不仅仅只可以做web服务器,只要有对应的插件还可用作反向代理、即时通讯、文件下载、流媒体服务等功能,如果已经安装好了Nginx有不想重新安装覆盖的前提下如何新增模块呢?下面通过...
  很多云服务器(如阿里云)没有开启swap交换分区,安装某些比较占用内存的服务(例如MySQL5.7+、gitlab等)时如果物理内存不够则会安装失败,一种解决方案是购买更大的内存,另一种方案是可以设置交换分区,下面就以阿里云CentOS为例介绍一下增加交换分区的方法。首先创建一个文件用于swap...
  我们知道COOKIE保存在客户端,但是我们在设置和读取COOKIE的时候几乎无论使用什么语言编程都是在服务器端操作的,原理是通过HTTP的header传输信息。其实客户端的脚本语言JavaScript也是可以操作COOKIE的,默认情况下服务器端设置的COOKIE数据也是可以操作的,下面给出封装...
  pclzip可以将文件或文件夹压缩成zip格式的压缩文件,感觉还是比较好用的,可以满足线上对文件打包或者对压缩包进行解压的需求。下面给出几个例子和下载地址://压缩文件代码 require_once('pclzip.lib.php'); $zip = new Pcl...
  因为支付宝支付接口只有企业身份才能申请,但是由于种种原因个人开发者没有企业资质无法申请到支付接口权限,这也是很多开发者遇到的问题。在之前推出了支付宝支付接口开发系列课程之后也遇到了很多开发者的反馈:没有企业账号无法开发。  其实个人账号也可以进行支付宝支付接口调试的,那就是利用支付宝提供的沙箱环...
  首先需要安装Xdebug,如果没有安装可以查看PHP断点调试工具Xdebug的安装这篇文章。phpStorm是开发者经常用的一款编辑器,当然也支持Xdebug调试,下面说一下配置步骤。  phpStorm不需要安装插件所以配置起来比较简单,编辑器上依次打开文件->设置(或者Ctrl+Alt...
  首先需要安装Xdebug,如果没有安装可以查看PHP断点调试工具Xdebug的安装这篇文章。sublime text是开发者经常用的一款轻量级编辑器,在Xdebug调试上也是支持的,下面说一下配置步骤。首先需要安装sublime的xdebug插件,可以在线安装,但是在线安装可能会因为版本或者网络...