前言:
由于最近公司项目需要接入网页版微信支付,我在官网上查询了很久,发现微信官网只提供了扫码支付等java demo,或者只有php等其它语言的微信支付,只提供了支付的一些API,所以这里需要自己根据官网提供的api自己写支付。
1,请先查看微信支付的流程图,了解下微信支付的过程。
1,在手机微信上打开一个h5页面(微信已经提供桌面版微信了,我们可以直接在桌面上面调试更加方便)
2,生成一个JAVA的订单接口,然后返回一个我们自己的订单号。
3,将订单号、商品信息、价格等信息拼接生成统一下单接口获得prepay_id
注:调用下单接口时需要先获取openid
3.1)调用用户授权接口获得code值
3.2)将得到的code的值去获取openid
3.3)根据得到的openid获得prepay_id
4,用户点击支付,获取用户授权
5,授权成功进入微信端支付界面进行支付操作
6,支付成功后回调自己配置界面,微信端通知后端服务器
-----------------------------------------------------------------------------------------------------------------------------------------------------
进入正题
1,如何申请成为公众号,申请成为支付服务号这些这里就不提了
2,配置微信公众平台服务号(记住是进入服务号账号)
2.1)进入微信公众平台,点击微信支付按钮(如图)
2.2)添加你的支付授权测试目录跟正式授权支付目录、并且添加测试微信号
注:授权目录一定是支付页面的上级目录,如:我的支付页面为:http://www.baidu.com/test/pay/index.jsp,那么我的授权目录是http://www.baidu.com/test/pay/
注意是以/结束。
2.3)进入微信开发者中心,找到网页授权获取用户基本信息添加网页授权域名(如www.baidu.com,不需要带http://,也不能是ip地址)
3,根据微信支付需要的配置去获取对应的信息
3.1)appid公众号APPID、mch_id微信支付商户号在微信申请成功后发送到邮箱获取
3.2)应用密钥AppSecret在开发者中心->配置项->开发者ID查看
3.3)商户支付密钥Key以及证书路径 在微信支付商户平台,在【账户设置-密码安全-API安全】中下载以及设置
3.4)配置支付页面已经支付回调页面(www.test.com/pay/testPay/index.jsp)
---------------------------------------------------------------------------------------------------------------
代码部分
1,支付配置页面
package com.weixin.config;
public class WeixinConfig {
//=======【基本信息设置】=====================================
//微信公众号身份的唯一标识。审核通过后,在微信发送的邮件中查看
public static final String APPID = "wxb69e254afdb3fae4";
//受理商ID,身份标识
public static final String MCHID = "1246043803";
//商户支付密钥Key。审核通过后,在微信发送的邮件中查看
public static final String KEY = "qwertyuioplkjhgfdsazxcvbnm125871";
//JSAPI接口中获取openid,审核后在公众平台开启开发模式后可查看
public static final String APPSECRET = "d896864455e000ea86e722e95e34d2d3";
//=======【JSAPI路径设置】===================================
//获取access_token过程中的跳转uri,通过跳转将code传入jsapi支付页面
public static final String JS_API_CALL_URL = "http://www.weixin.com/weixin/webApp/pay/index.jsp";
//=======【证书路径设置】=====================================
//证书路径,注意应该填写绝对路径
public static final String SSLCERT_PATH = "/home/wwwroot/weixin/webApp/WxPayPubHelper/cacert/apiclient_cert.pem";
public static final String SSLKEY_PATH = "/home/wwwroot/weixin/webApp/WxPayPubHelper/cacert/apiclient_key.pem";
//=======【异步通知url设置】===================================
//异步通知url,商户根据实际开发过程设定
public static final String NOTIFY_URL = "http://www.weixin.com/weixin/webApp/pay/notify_url.jsp";
//=======【http超时设置】=================================