赞
踩
<!-- 生成二维码工具 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.2.0</version> </dependency> <!-- 微信支付所需sdk --> <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</version> </dependency>
# 服务器域名地址
server:
service-domain: 域名地址信息
#微信app支付
pay:
wxpay:
app:
appID: 公众号id
mchID: 商户id
key: 设置的私钥
certPath: static/cert/wxpay/apiclient_cert.p12 # 从微信商户平台下载的安全证书存放的路径、我放在resources下面,切记一定要看看target目录下的class文件下有没有打包apiclient_cert.p12文件
payNotifyUrl: ${
server.service-domain}/wxPay/callback # 微信支付成功的异步通知接口
import com.github.wxpay.sdk.WXPayConfig; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.io.InputStream; @Component @ConfigurationProperties(prefix = "pay.wxpay.app") public class MyWXPayConfig implements WXPayConfig { /** * appID */ private String appID; /** * 商户号 */ private String mchID; /** * API 密钥 */ private String key; /** * API证书绝对路径 (本项目放在了 resources/cert/wxpay/apiclient_cert.p12") */ private String certPath; /** * HTTP(S) 连接超时时间,单位毫秒 */ private int httpConnectTimeoutMs = 8000; /** * HTTP(S) 读数据超时时间,单位毫秒 */ private int httpReadTimeoutMs = 10000; /** * 微信支付异步通知地址 */ private String payNotifyUrl; /** * 微信退款异步通知地址 */ private String refundNotifyUrl; /** * 统一下单url */ private static final String UNIFIED_ORDER_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder"; /** * 获取商户证书内容(这里证书需要到微信商户平台进行下载) * * @return 商户证书内容 */ @Override public InputStream getCertStream() { InputStream certStream =getClass().getClassLoader().getResourceAsStream(certPath); return certStream; } // ... 省略 getter 和 setter 方法
解析 xml 的工具类
import org.w3c.dom.Document; import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; public final class WXPayXmlUtil { public static DocumentBuilder newDocumentBuilder() throws ParserConfigurationException { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); documentBuilderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false); documentBuilderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); documentBuilderFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); documentBuilderFactory.setXIncludeAware(false); documentBuilderFactory.setExpandEntityReferences(false); return documentBuilderFactory.newDocumentBuilder(); } public static Document newDocument() throws ParserConfigurationException { return newDocumentBuilder().newDocument(); } }
import com.github.wxpay.sdk.WXPayUtil;
import com.qjp.system.util.CommonUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。