[教程]小程序微信支付不完全接入指南

微信支付在 2013 年发布,作为内测开发者一路走来,可以感觉到微信支付接口稳定程度、文档的准确性都有质的提升。围绕支付相关的场景也配备对应的接口。
本次小程序的发布,随机附送了一个微信支付模块,该模块使用起来的情况如何,就由我来告诉你吧。
业务流
抛开小程序的微信支付模块,我们总览微信支付的一些基本情况。
微信支付有以下支付模式:
微信客户端内的网页支付 (JSAPI)
扫码支付 (PC 端,移动支付终端)
刷卡支付 (支付终端扫描)
app 支付 (iOS, Android)

各种支付交互流程可通过微信文档进行查看,在此不赘述。
支付发起
所有支付方式都需要通过 『统一下单』的 API 来进行获取一个支付凭证,在内测以及刚发布的微信支付,是没有『统一下单』的概念,HTML 5 应用发起支付可以直接通过前端构造参数来进行发起。此时微信支付开发者很容易就造成支付凭证泄露等安全问题。
为此,微信支付将其流程做了优化,在所有支付场景中插入『统一下单』,推荐开发者在后端完成支付参数的构建等行为。
该优化带来以下好处:
尽可能让开发者不犯低级错误,造成财务损失。
简化构造支付参数的复杂度,所有支付方式可共享一个支付后端接口

通过『统一下单』获取到相对应 prepay_id 或者 code_url 等参数,即可通过各种支付模式的 SDK 来进行微信支付的发起。
支付结果接收
微信支付发起完成后,微信还需要提供一个通知系统,以便及时让应用知道用户已经完成支付,可以进行下一步的业务操作。
通知方式为一个 POST 请求,payload 为支付的状态信息,以及支付订单信息。
注意必须对通知参数进行签名验证,以确保安全。
进行签名验证时,除去签名字段,一般参数名为: sign,不需要参与签名外,其余所有接收到的参数均需要参与签名。
周边接口
通过 『支付发起』,『支付结果接收』,即可完成一个简单的微信支付系统。当然,微信还提供一下接口:
查询订单
取消订单
申请退款
查询退款
下载对账单

具体使用可以参考微信文档,根据自身业务情况适当的进行采用。
绊脚石
嗯,没错,我们吃了一次螃蟹,小程序刚内测,我们就决定使用微信支付模块,毕竟我们要实现的是一个电商应用 (电商没支付算什么嘛。
开发过程中,我们掉了一些坑。
支付凭证
小程序的微信支付需要单独去申请,因为小程序是有独立的 appid,不能使用以前的支付账户,即使是全网发布也不能,因为小程序不是一个 HTML 5 应用。
签名方式
MD5! MD5! MD5!
微信公众文档有很多 SHA1, MD5 的签名要求,微信支付相关的签名,暂时暂时暂时都是使用 MD5。
小程序端在发起微信支付的时候是通过以下方式来进行发起:

screen-shot-2016-10-25-at-5-12-17-pm

按照微信文档签名的要求,参与签名的字段应该为
timeStamp
nonceStr
package
signType

ok,按照签名算法得到的签名,去发起支付,居然提示失败了,经过与微信对接人员沟通后,参与签名的字段还需要加上 appid, 哦,不对,是 appId(请严重区分驼峰命名的大小写)。
对这样的结果我表示不服,随即我翻阅了微信支付所有文档,终于在微信 JSSDK 的文档中找到一行备注。
备注:prepay_id 通过微信支付统一下单接口拿到,paySign 采用统一的微信支付 Sign 签名生成方法,注意这里 appId 也要参与签名,appId 与 config 中传入的 appId 一致,即最后参与签名的参数有appId, timeStamp, nonceStr, package, signType。

怪我咯(黑人问号) 点我去取笑!
timestamp 类型
小程序端发起微信支付的方式已经贴在上面了,但没那么简单,继续贴文档说明。
timeStamp DateInt 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间

文档告诉我们 timeStamp 应该带着 int 类型传入。我们前端的同学照做了,然后就过来骂我。
你们后端参数是不是有问题!!! 提示 timeStamp 不存在了都

经过排查,传入的 timeStamp 的值类型应该为 String
结尾语
总体上小程序接入微信支付还是比较简单的,没有过多复杂的设置,如果之前开发过微信支付后端的开发者,还可以复用同一个支付模块。
文档的编写不严谨,使得开发舒爽度严重被削减。
相信随着时间推进,文档会慢慢完善,毕竟以前也是这么过来的。
Hello小程序将与您共同成长。微信号:130870319 QQ群:40726600

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容