WxPayConfigStorage wxPayConfigStorage = new WxPayConfigStorage (); wxPayConfigStorage .setMchId ("合作者id(商户号)" ); wxPayConfigStorage .setAppId ("应用id" ); wxPayConfigStorage .setKeyPublic ("转账公钥,转账时必填" ); wxPayConfigStorage .setSecretKey ("密钥" ); wxPayConfigStorage .setNotifyUrl ("异步回调地址" ); wxPayConfigStorage .setReturnUrl ("同步回调地址" ); wxPayConfigStorage .setSignType ("签名方式" ); wxPayConfigStorage .setInputCharset ("utf-8" ); HttpConfigStorage httpConfigStorage = new HttpConfigStorage (); /* 网路代理配置 根据需求进行设置**/ //http代理地址 httpConfigStorage .setHttpProxyHost ("192.168.1.69" ); //代理端口 httpConfigStorage .setHttpProxyPort (3308 ); //代理用户名 httpConfigStorage .setAuthUsername ("user" ); //代理密码 httpConfigStorage .setAuthPassword ("password" ); /* /网路代理配置 根据需求进行设置**/ //退款使用 /* 网络请求ssl证书 根据需求进行设置**/ //设置ssl证书路径 //TODO 这里也支持输入流的入参。 // httpConfigStorage.setKeystore(this.getClass()..getResourceAsStream("/证书文件")); //设置ssl证书路径 跟着setCertStoreType 进行对应 httpConfigStorage .setKeystore ("证书文件流,证书字符串信息或证书绝对地址" ); //设置ssl证书对应的密码 httpConfigStorage .setStorePassword ("证书对应的密码" ); //设置ssl证书对应的存储方式 httpConfigStorage .setCertStoreType (CertStoreType .PATH ); /* /网络请求ssl证书**/ /* /网络请求连接池**/ //最大连接数 httpConfigStorage .setMaxTotal (20 ); //默认的每个路由的最大连接数 httpConfigStorage .setDefaultMaxPerRoute (10 ); //支付服务 PayService service = new WxPayService (wxPayConfigStorage ); //设置网络请求配置根据需求进行设置 //service.setRequestTemplateConfigStorage(httpConfigStorage) 精简版支付回调配置,主要用于实现业务与支付代码隔离使用,下面会讲到支付回调处理 //增加支付回调消息拦截器 service .addPayMessageInterceptor (new WxPayMessageInterceptor ()); //设置回调消息处理 service .setPayMessageHandler (spring .getBean (WxPayMessageHandler .class )); //支付订单基础信息 PayOrder payOrder = new PayOrder ("订单title" , "摘要" , BigDecimal .valueOf (0.01 ) , UUID .randomUUID ().toString ().replace ("-" , "" )); /*-----------扫码付-------------------*/ payOrder .setTransactionType (WxTransactionType .NATIVE ); //获取扫码付的二维码 // String image = service.getQrPay(payOrder); BufferedImage image = service .genQrPay (payOrder ); /*-----------/扫码付-------------------*/ /*-----------APP-------------------*/ payOrder .setTransactionType (WxTransactionType .APP ); //获取APP支付所需的信息组,直接给app端就可使用 Map appOrderInfo = service .orderInfo (payOrder ); /*-----------/APP-------------------*/ /*-----------JSAPI-------------------*/ //公众号支付 payOrder .setTransactionType (WxTransactionType .JSAPI ); //微信公众号对应微信付款用户的唯一标识 payOrder .setOpenid (openid ); Map appOrderInfo = service .orderInfo (payOrder ); /*-----------/JSAPI-------------------*/ /*-----------网页支付-------------------*/ payOrder .setTransactionType (WxTransactionType .MWEB ); // 网页支付 //获取支付所需的信息 Map directOrderInfo = service .orderInfo (payOrder ); //获取表单提交对应的字符串,将其序列化到页面即可, String directHtml = service .buildRequest (directOrderInfo , MethodType .POST ); /*-----------/即时到帐 WAP 网页支付-------------------*/ /*-----------条码付 刷卡付-------------------*/ payOrder .setTransactionType (WxTransactionType .MICROPAY );//条码付 payOrder .setAuthCode ("条码信息" ); // 支付结果 Map params = service .microPay (payOrder ); /*-----------/条码付 刷卡付-------------------*/ /*-----------刷脸付-------------------*/ //获取对应的支付账户操作工具(可根据账户id) PayOrder order = new PayOrder ("egan order" , "egan order" , null == price ? BigDecimal .valueOf (0.01 ) : price , UUID .randomUUID ().toString ().replace ("-" , "" ), WxTransactionType .FACEPAY ); //设置人脸凭证 order .setAuthCode (authCode ); // 用户在商户 appid下的唯一标识 order .setOpenid (openid ); //支付结果 Map <String , Object > params = service .microPay (order ); /*-----------/刷脸付-------------------*/ /*-----------回调处理-------------------*/ //HttpServletRequest request; Map <String , Object > params = service .getParameter2Map (request .getParameterMap (), request .getInputStream ()); if (service .verify (params )){ System .out .println ("支付成功" ); return ; } System .out .println ("支付失败" ); /*-----------回调处理-------------------*/ /*-----------回调处理-------------------*/ //HttpServletRequest request; System .out .println (service .payBack (request .getParameterMap (), request .getInputStream ()).toMessage ()); /*-----------回调处理-------------------*/ Map result = service .query ("微信单号" , "我方系统单号" ); Map result = service .close ("微信单号" , "我方系统单号" ); //过时方法 //Map result = service.refund("微信单号", "我方系统单号", "退款金额", "订单总金额"); //微信单号与我方系统单号二选一 RefundOrder order = new RefundOrder ("微信单号" , "我方系统单号" , "退款金额" , "订单总金额" ); //可用于多次退款 order .setRefundNo ("退款单号" ) WxRefundResult result = service .refund (order ); Map result = service .refundquery ("微信单号" , "我方系统单号" ); Map result = service .downloadbill ("账单时间:日账单格式为yyyy-MM-dd,月账单格式为yyyy-MM" , "账单类型" ); 转账到银行卡 order .setOutNo ("partner_trade_no 商户转账订单号" ); //采用标准RSA算法,公钥由微信侧提供,将公钥信息配置在PayConfigStorage#setKeyPublic(String) order .setPayeeAccount ("enc_bank_no 收款方银行卡号" ); order .setPayeeName ("收款方用户名" ); order .setBank (WxBank .ABC ); order .setRemark ("转账备注, 非必填" ); order .setAmount (new BigDecimal (10 )); //转账到银行卡,这里默认值是转账到银行卡 order .setTransferType (WxTransferType .PAY_BANK ); Map result = service .transfer (order ); 转账到余额 order .setOutNo ("partner_trade_no 商户转账订单号" ); order .setPayeeAccount ("用户openid" ); order .setPayeeName ("收款用户姓名, 非必填,如果填写将强制验证收款人姓名" ); order .setRemark ("转账备注, 非必填" ); order .setAmount (new BigDecimal (10 )); //转账到余额,这里默认值是转账到银行卡 order .setTransferType (WxTransferType .TRANSFERS ); Map result = service .transfer (order ); /** * wxTransferType 微信转账类型 * {@link com.egzosn.pay.wx.bean.WxTransferType#QUERY_BANK} * {@link com.egzosn.pay.wx.bean.WxTransferType#GETTRANSFERINFO} */ Map result = service .transferQuery ("商户转账订单号" , "wxTransferType 微信转账类型" );