现在很多项目中都会加入支付功能,如果你以前做过,可以直接拿过来用,如果从头开始的话;
那你要做的工作会很多哦,例如需要对接微信支付;
1、首先要学习研究微信支付接口
2、学习微信支付Demo
3、研究一下数据加密解密
4、编写封装参数类,N个类,烦不烦闹
5、编写对接程序
6、一周能搞定不!NO NO NO
如果明天再加入某宝、某东等等各种支付平台,你会不会更头大了,应该和对接微信一样再来N遍...
下面介绍一个方法,让你分分钟搞定,或者一天内搞定!
引入三方支付类库,介绍一个比较成熟的三方支付类库,可以对接多个平台;
https://javen205.gitee.io/ijpay/
首先引入jar包
<!--微信支付-->
<dependency>
<groupId>com.github.javen205</groupId>
<artifactId>IJPay-All</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.github.javen205</groupId>
<artifactId>IJPay-WxPay</artifactId>
<version>2.7.3</version>
</dependency>
配置文件加入相关配置参数:
wx:
appId: wxdb81c9e0dcf331
mchId: 1194131 #微信商户号
keyPath: cert/apiclient_key.pem #商户 key 绝对路径
certPath: cert/apiclient_cert.pem #商户证书绝对路径
certP12Path: cert/apiclient_cert.p12 #备用参数 v3 暂未使用到 退
platformCertPath: cert/platformCert.pem #微信平台证书绝对路径,证书需要通过接口获取
apiKey3: w2nt1z43xoiijlksdisdsy1mehqfkj #Api-v3 密钥
apiKey: outremflksdjflsdkfowewsd3HslaIvqn #Api 密钥 备用参数 v3 暂未使用到 退
domain: http://www.www.cn/
payNotify: /pay/payNotify
refundNotify: /pay/refundNotify
@Data
@Component
@ConfigurationProperties(prefix = "wx")
public class WxPayConfig {
private String appId;
private String keyPath;
......
}
支付接口,传入参数是不是很简单
public PayResult jsApiPay(Integer currenUserId, String amount, String openid) throws Exception {
...
UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel()
.setAppid(wxPayConfig.getAppId())
.setMchid(wxPayConfig.getMchId())
.setDescription("平台费用支付")
.setOut_trade_no(out_trade_no)
.setTime_expire(timeExpire)
.setAttach("微信小程序支付")
.setNotify_url(wxPayConfig.getDomain().concat(wxPayConfig.getPayNotify()))
.setAmount(new Amount().setTotal(Integer.parseInt(amount)))
.setPayer(new Payer().setOpenid(openid));
LOGGER.info("统一下单参数 {}", JSONUtil.toJsonStr(unifiedOrderModel));
IJPayHttpResponse response = WxPayApi.v3(
RequestMethod.POST,
WxDomain.CHINA.toString(),
WxApiType.JS_API_PAY.toString(),
wxPayConfig.getMchId(),
serialNo,
null,
wxPayConfig.getKeyPath(),
JSONUtil.toJsonStr(unifiedOrderModel)
);
// 根据证书序列号查询对应的证书来验证签名结果
boolean verifySignature = WxPayKit.verifySignature(response, wxPayConfig.getPlatformCertPath());
LOGGER.info("verifySignature: {}", verifySignature);
LOGGER.info("统一下单响应 {}", response);
if (verifySignature) {
String body = response.getBody();
JSONObject jsonObject = JSONUtil.parseObj(body);
String prepayId = jsonObject.getStr("prepay_id");
Map<String, String> map = WxPayKit.jsApiCreateSign(wxPayConfig.getAppId(), prepayId, wxPayConfig.getKeyPath());
LOGGER.info("唤起支付参数:{}", map);
PayResult result = new PayResult();
result.setOutTradeNo(out_trade_no);
result.setPrepayId(prepayId);
result.setSignMap(map);
return result;
}
return null;
}
是不是简单学习一下就可以上手了;
支持微信支付、QQ钱包支付、支付宝支付、银联支付、京东支付等。
有兴趣的朋友可以观摩一下...