网上有些书,可以快速过一下,了解大致轮廓。因为微信SDK一直变化,看SDK更准确。SDK在这里
账号需要认证,微信提供的接口会更丰富。或者先用测试账号。
如果对整体的流程没有感觉,可以先看网上有的教程:
http://my.oschina.net/yangyanxing/blog/159215
http://www.cnblogs.com/weishun/p/weixin-publish-developing.html
http://jayveehe.github.io/2015/01/26/nginx-flask/
http://www.infoq.com/cn/articles/wechat-design-dev
服务号可以提供更高级的功能,比如转账啥的,订阅号不行。但服务号群推送的信息数量限制大于订阅号,需要根据情况判断。
每个接口都有每日调用次数限制,这个需要注意了。
微信应用的特点
优势
- 易于开发(重在后端,或者,一套H5代码,而不是android,iOS两套东西)
- 易于推广,用户容易接受(不需要装额外的app)
- 可以作为前期试水的方式,积累第一批种子用户,用户认可了,再做原生app
劣势
- 容易受制于微信,它可以随时定制规则
- 如果业务有利,做大后面对腾讯的竞争
- 复杂逻辑靠H5页面跳转,体验的连贯性有问题(不过,因为大家手机4G还有wifi的提速,在大城市内的加载速度应该越来越不是问题)
适合的应用服务
- 低频次的服务
- 用户交互简单,不需要调用外部各种传感器
微信授权登录
在这里要重点指出的是:
- 客户端的授权登录是在微信开放平台申请的。
- web端的授权登录可以不申请微信公众平台的服务号并完成认证,只要微信开发平台申请了,就能获取高级接口的访问权限。
如果要同一个账号下的多app协调的话,即用户统一识别,需要用UnionID。UnionID需要绑定微信开发平台账号(这么多平台,明显是鹅厂一开始没规划好)…
AppStore控制比较严格,不能只有微信登录,需要有自己的登录,否则会被认为门槛太高而不被通过,具体可见此处血泪史
微信支付
微信支付的官方文档入口在这里
准备:
- 测试授权目录与支付授权目录必须不一样
- 目录需要以 / 结尾
- 支付授权目录的域名必须通过ICP备案
支付流程
官方流程图如下,公众号支付需要参考官方文档
实现流程上,后端主要是调用统一下单api(https://api.mch.weixin.qq.com/pay/unifiedorder)获取prepay_id,同时在参数里面提供了一个步骤10需要的异步回调响应。
对于H5端的代码,可以参考网上示例
注意点
- 资金如需支持回滚,需要配置商户证书,证书文件的获取参考在线文档
- 商户系统必须能够正确处理重复的通知。
如果微信端收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。 (通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒)。所以,同样的通知可能会多次发送给商户系统。 - 商户系统对于支付结果通知的内容一定要做签名验证,防止数据泄漏导致出现“假通知”,造成资金损失。推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。
功能验收
钱无小事,功能调通了,还需要根据在线文档验收做功能安全性验收。
- 通过沙箱环境测试(上线前要改回来)
- 沙箱环境中,模拟各种异常
- 严格按照验收用例执行
Python用什么库
对于微信公众号里面与用户的各种语音,点击,文字交互,可以直接参考SDK写,但一般有如下几种选择
- werobot【不推荐】
- wechat-sdk【简单后端推荐】
- wechatpy【复杂后端推荐】
不推荐werobot,除非是非常简单的项目,因为这个封装得有点过,如果后端还有其他的服务,要通过blueprint做模块化划分的话,会比较麻烦。
wechat-sdk的文档很好,简单,容易上手,但是封装的api比较少,如果搭建有支付场景的后端,它就不支持了。同时,wechat-sdk的作者已经有几个月没更新了,不清楚后续维护无任何。
wechatpy在这3个里面是接口封装最全的,而且作者一直在更新,感觉保障会多些。但这个SDK的示例和文档非常弱,有些东西怎么用,需要看源代码才能搞清楚。
php的用户,可以使用 easywechat