适合制作API的RPC框架——Yar

Yar是鸟哥开发的一个并行的RPC框架,用来做API再合适不过了,对于Yar的介绍可以参考鸟哥的博客:http://www.laruence.com/2012/09/15/2779.html
下面切入正题:
一、准备工作
1.安装msgpack扩展
下载:http://pecl.php.net/package/msgpack,然后上传到/usr/local目录下,安装完可以删了。

继续阅读“适合制作API的RPC框架——Yar”

微信接口_curl_error_28_超时问题

在使用微信API接口时,若curl返回错误码为28,超时。则考虑以下几点:

a. 是否存在跨运营商访问的情况,详见网络超时的定位
可以ping api.mch.weixin.qq.com查询对应的解析IP
通过访问ip.qq.com获取取口IP,也可以根据商户侧服务器的外网IP确认
b. 是否使用的阿里云主机
由于阿里云使用的BGP,需要确认解析出来的IP是否为182.254.44.159,否则需要调整DNS设置,使用阿里本身的DNS服务器
c. 是否使用curl库访问
需要指定参数使用ipv4,具体可参考http://www.jb51.net/article/39788.htm
d. 确认java程序使用的HttpClient的版本是否<=4.3.4
可升级HttpClient到4.3.6版本

参考:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=11_2

微信接口开发——素材管理

在做微信素材管理接口开发时,有以下几点要注意:

①微信要求传递的数据类型为JSON,若数据中存在中文,在使用json_encode时要记得使用第二个参数( json_encode('包含中文的内容', JSON_UNESCAPED_UNICODE); ),否则中文被用unicode编码编译后,会变成一堆’u32…’的字符,使用时会有麻烦(微信不认识被unicode编码的中文)。

备注:只有PHP版本大于等于5.4版时,json_encode才支持第二个参数。

②上传永久性图文素材时,涉及到的图片media_id必须是通过以下‘上传永久性图片类型素材’接口得到的图片media_id,与‘上传临时图片的media_id’不同。

③上传永久性图片类型素材时,接口为‘http://api.weixin.qq.com/…’,官方文档中提到的‘http://file.api.weixin.qq.com/…’不正确。

屏幕快照 2015-04-14 下午6.45.28

 

④上传永久图文信息时,正常情况下,使用接口上传后,在微信后台可以看到图文式的内容,若微信编辑器无法识别html标签(即微信编辑器里都是些代码似的东西),可以考虑使用html_entity_decode()函数。(最后,提交json格式的数据时,使用json_encode(‘素材数组型内容’,JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);)

具体测试方法是,使用var_dump()函数打印出在你的编辑器中录入的内容,若浏览器可以识别html标签,则正确;若不能,则在微信编辑器中也无法识别。对比如下

代码一: var_dump($item['content']);var_dump($item2['content']);exit;

效果一(微信编辑器也无法识别):

 

屏幕快照 2015-05-19 下午6.34.53

代码二: var_dump(html_entity_decode($item['content']));var_dump($item2['content']);exit;

效果二(微信编辑器可识别):屏幕快照 2015-05-19 下午6.37.27

【参考:】

关于json_encode: http://www.laruence.com/2011/10/10/2239.html

Google 的二维码生成API

经常记不得Google提供的二维码生成API,这次记录下,以便以后查找使用。

URL:

https://developers.google.com/chart/infographics/docs/qr_codes?hl=zh-CN&csw=1

参数解析:

  • cht=qr :必须,表示绘制QR码。
  • chs=<width>x<height> :必须,图片的尺寸。分隔符X可以是英文字母           X或x,或乘号X。
  • chl=<data>:必须,需要转换的内容。数据需要编码,可以是数字,英文字符,二进制等等内容。
  • choe=<output_encoding> :可选,QR码输出的编码格式,默认UTF-8
  • chld=<error_correction_level>|<margin> :可选,error_correction_level 数据的容错等级

L –  [Default] Allows recovery of up to 7% data loss

M – Allows recovery of up to 15% data loss
Q – Allows recovery of up to 25% data loss
H – Allows recovery of up to 30% data loss

margin   ——  输出图片周围的空白,默认为4