吐槽一下
支付项目采用springMvc+Dubbo架构实现,只对外提供接口。
话说,为什么微信支付比支付宝来的晚了那么一点,一句话,那一阵挺忙的,然后就没有时间整理,最近做完支付宝支付,顺便也把微信支付的也整理一下。
这里再吐槽一下,微信支付的DEMO基本为零,很多代码都是从网上查找的(也可能我么有仔细找API)。
前期酝酿准备
扫码支付,目前来说个人是不可以申请的,包括现在支付宝的即时到帐个人相关业务也取消了。所以这里必须有一个微信支付商户平台,具体怎么申请的,我也不清楚,只是拿来用的。
商户平台是要配合绑定微信公众账号使用的,具体操作申请下来已经绑定了,这里你也只管用就是了。
什么是扫码支付?
场景介绍
用户扫描商户展示在各种场景的二维码进行支付。
步骤1:商户根据微信支付的规则,为不同商品生成不同的二维码(如图6.1),展示在各种场景,用于用户扫描购买。
步骤2:用户使用微信“扫一扫”(如图6.2)扫描二维码后,获取商品支付信息,引导用户完成支付(如图6.3)。
支付二维码
图6.1 支付二维码
打开微信扫一扫二维码
图6.2 打开微信扫一扫二维码
确认支付页面
图6.3 确认支付页面
步骤(3):用户确认支付,输入支付密码(如图6.4)。
步骤(4):支付完成后会提示用户支付成功(如图6.5),商户后台得到支付成功的通知,然后进行发货处理。
用户确认支付,输入密码
图6.4 用户确认支付,输入密码
支付成功提示
图6.5 支付成功提示
如何集成到项目中去?
ConfigUtil参数配置:
import java.util.Map;
import java.util.ResourceBundle;
import java.util.SortedMap;
import java.util.TreeMap;
/**
* 相关配置参数
* 创建者 张志朋
* 创建时间 2016年9月28日
*
*/
public class ConfigUtil {
/**
* 服务号相关信息
*/
public final static String APP_ID = "2016";//服务号的应用ID
public final static String APP_SECRET = "2016";//服务号的应用密钥
public final static String TOKEN = "weixinCourse";//服务号的配置token
public final static String MCH_ID = "2016";//商户号
public final static String API_KEY = "2016";//API密钥
public final static String SIGN_TYPE = "MD5";//签名加密方式
public final static String CERT_PATH = "apiclient_cert.p12";//微信支付证书存放路径地址
static ResourceBundle resource = ResourceBundle.getBundle("config");
//微信支付统一接口的回调action
public final static String NOTIFY_URL = resource.getString("WEIXIN_NOTIFY_URL");
/**
* 微信基础接口地址
*/
//获取token接口(GET)