微信内网页支付开发手记

最近项目须要用到微信支付,之前弄过淘宝支付,其实原理都差很少,在此作个笔记,方便之后用到。php

微信支付分几种,而我只用到了微信内网页支付,其余支付过程大同小异。html

官方文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=7_1算法

微信页内支付:用户经过消息或扫描二维码在微信内打开网页时,能够调用微信支付完成下单购买的流程。api

整体业务流程时序图:安全

咱们就根据时序图,逐步记录分解说明。服务器

一、申请微信支付

申请微信公众号支付,必需知足如下条件:
一、公众号为服务号,且为企业、媒体、政府及其余组织类型;
二、已完成微信认证(完成资质认证或名称认证,审核服务费用:300元/次微信

认证申请是一个漫长又繁琐的过程~~网络

二、填写支付测试受权地址,测试白名单

三、编写统一下单接口

官方文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_1异步

除被扫支付场景之外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识后再按扫码、JSAPI、APP等不一样场景生成交易串调起支付。测试

注意:

(1)其中签名算法必定要按照规定,http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=4_3

(2)文档中提到的APP密匙是在商户系统-》帐户设置-》安全设置-》API安全里面得到的密匙,而不是Appsecret(由于这里理解错误,我花了两天困在了签名!)。

   APP密匙:交易过程生成签名的密钥,仅保留在商户系统和微信支付后台,不会在网络中传播。商户妥善保管该Key,切勿在网络中传输,不能在其余客户端中存储,保证key不会被泄漏。商户可根据邮件提示登陆微信商户平台进行设置。

(3)不要泄露任何密匙相关信息,因此全部的签名操做都须要提交给服务器完成,不要在html里面硬编码。

(4)notify_url是接收微信支付异步通知回调地址,是判断支付是否成功的关键,该URL不能附带任何相似?A=1&B=2的参数,会被过滤掉,参数应该附加在attach附加参数这个字段中。异步通知回调的时候会原封返回,处理完成数据以后,记得返回微信服务器成功信息,否则会按期重传。关于回调的相关文档http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_7

完成统一下单接口以后,与微信支付交互,就可以获得页内支付的预交易会话标识了。

四、编写微信页内支付签名接口

官方文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=7_7

因为又要签名一次,签名用到API密匙,因此服务端要提供签名接口,其中的参数能够在服务端生成,也能够由客户端生成。

根据文档要求,签名完成以后,就调用微信JSAPI直接进入支付流程便可。

 

整个过程采用XML数据传输。

相关文章
相关标签/搜索