微信支付开发小知识
微信支付集成说明
微信支付的介绍
https://pay.weixin.qq.com/wiki/doc/api/index.html
包含四种支付方式

在这里主要介绍的是 扫码支付、公众号支付
扫码支付(模式二)
查看文档https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1
a) 扫码支付模式二,相对来说比较简单,采用统一下单接口(UnifiedOrder)返回一个url,把这个url生成一个二维码。
b) 打开手机微信端,扫描此二维码,进入微信支付过程(在手机微信端进行支付操作)。
c) 微信端和网页不在同一个平台,无法通知网页端跳转,所以在嵌入二维码的页面,设置一个轮询js,不断查询(OrderQuery)支付是否成功,如果完成,则跳转到提示页面。支付完成。
在我们的系统中只需要用到3个页面,就能实现扫码支付
扫码支付默认页
/Include/Plugin/Payment/WeixinPay/WxpayQRCode/default.aspx
用于展示二维码和轮询支付结果

生成二维码
/Include/Plugin/Payment/WeixinPay/WxpayQRCode/CreatePayQRCode.aspx
用于生成二维码
在这个页面传入一个订单ID
根据订单ID获取订单,代入到支付参数中,并生成一个支付二维码
支付回调
/Include/Plugin/Payment/WeixinPay/WxpayQRCode/notify_url.aspx
用于支付结果回调,在这里完成客户网站订单更新功能,需要注意的是,要在微信平台设置回调地址
微信公众平台-> 微信支付 -> 开发配置

公众号支付
查看文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1
注意:公众号支付需要在微信端内完成操作。
a) 传入初始的订单ID,保存到Session中(因为返回的地址会刷新本页,所以需要保存订单ID到Session),构造网页授权获得一个code,返回到本地址;再根据这个code获得一个openid
b) 根据传入的openid,调用统一下单接口,配合微信端内js完成支付
c) 微信支付回调,更新订单信息
在我们的系统中只需要用到3个页面,就能实现公众号支付
公众号支付默认页
/Include/Plugin/Payment/WeixinPay/WxJsApi/default.aspx
用于获取code和openid
特别注意的是,在微信服务器有2个地方需要配置,
1) 微信公众平台 -> 微信支付 -> 开发配置

2) 微信公众平台 -> 开发-> 接口权限 –> 功能服务 -> 网页账号 点击修改

域名必须是完整的,比如 365shangpin.cn就不能更新 www.365shangpin.cn的数据。
如果没有正确的配置,支付时会提示“redirect_uri参数错误”
微信端内支付页
/Include/Plugin/Payment/WeixinPay/WxJsApi/jsapipaypage.aspx
根据openid 并调用统一下单接口,返回参数,微信端内js调起支付。支付完成根据状态跳转到支付结果显示页

支付回调
/Include/Plugin/Payment/WeixinPay/WxJsApi/notify_url.aspx
用于支付结果回调,在这里完成客户网站订单更新功能。
需要注意的是,如果没有在微信服务器配置回调网址,则需要在统一下单接口,传入回调地址

附:微信支付需要提供的参数及获取方法

1.微信公众平台
https://mp.weixin.qq.com/
登录成功后在左侧导航栏找到 开发 -> 基本配置
可以看到 AppID(应用ID) 和 AppSecret(应用密钥)

2.微信支付平台
https://pay.weixin.qq.com
登录成功后在左侧导航栏找到 账户设置 -> 账户信息
可以看到 微信支付商户号

在左侧导航栏找到 账户设置 -> API安全
可以看到 商户支付密钥

更新时间:2016-05-27 10:36:17