SpringBoot整合微信支付V3版本APP支付
话不多说直接上代码。
一、下单
1、支付相关参数配置,根据自己相关参数配置
/**
     * 商户号
     */
    private String mchId;
    /**
     * 商户证书序列号
     */
    private String mchSerialNo;
    /**
     * apiV3密钥
     */
    private String apiV3key;
    /**
     * APP ID
     */
    private String  appId;
    /**
     * 回调通知路径
     */
    private String  notifyUrl;
    /**
     * 支付url
     */
    private  String  payUrl;
    /**
     * 查询支付Url
     */
    private  String  queryPayUrl; 
2、支付方法(获取支付连接可以封装成工具类)
2、计算签名方法
/**
     * 计算签名
     * @param message
     * @param yourPrivateKey
     * @return
     */
 private     String sign(byte[] message, PrivateKey yourPrivateKey)  {
        try{
            Signature sign = Signature.getInstance("SHA256withRSA");
            sign.initSign(yourPrivateKey);
            sign.update(message);
            return Base64.getEncoder().encodeToString(sign.sign());
        }catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (SignatureException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        }
     return "";
    } 
3、支付回调通知
4、验证签名
5、解密回调通知密文
/**
     * 解密回调通知密文
     * @param body
     * @return
     */
    private     String   decryptOrder(String  body){
        try {
            AesUtil aesUtil  = new AesUtil(emsWeChatPayConfig.getApiV3key().getBytes("utf-8"));
            ObjectMapper objectMapper  = new ObjectMapper();
            JsonNode jsonNode = objectMapper.readTree(body);
            JsonNode resource = jsonNode.get("resource");
            //数据密文
            String ciphertext = resource.get("ciphertext").textValue();
            String associatedData = resource.get("associated_data").textValue();
            String nonce = resource.get("nonce").textValue();
            return aesUtil.decryptToString(associatedData.getBytes("utf-8"),nonce.getBytes("utf-8"),ciphertext);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (GeneralSecurityException e) {
            e.printStackTrace();
        }
        return  "";
    }
				       
			          上一篇:
			            uniapp开发微信小程序-2.页面制作 
			          
			          下一篇:
			            微信小程序活动倒计时 
			          
			        
