对接微信支付宝,你是不是绕弯路了

现在很多项目中都会加入支付功能,如果你以前做过,可以直接拿过来用,如果从头开始的话;

那你要做的工作会很多哦,例如需要对接微信支付;

1、首先要学习研究微信支付接口

2、学习微信支付Demo

3、研究一下数据加密解密

4、编写封装参数类,N个类,烦不烦闹

5、编写对接程序

6、一周能搞定不!NO NO NO

如果明天再加入某宝、某东等等各种支付平台,你会不会更头大了,应该和对接微信一样再来N遍...

下面介绍一个方法,让你分分钟搞定,或者一天内搞定!

引入三方支付类库,介绍一个比较成熟的三方支付类库,可以对接多个平台;

https://javen205.gitee.io/ijpay/

首先引入jar包



   com.github.javen205
   IJPay-All
   2.7.3


   com.github.javen205
   IJPay-WxPay
   2.7.3

配置文件加入相关配置参数:

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 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钱包支付、支付宝支付、银联支付、京东支付等。

有兴趣的朋友可以观摩一下...

你可能感兴趣的:(Java,微信支付,支付宝,小程序,支付,java)