springboot集成微信支付
pay: wxpay: appID: ****** mchID: ***** key: ***** notifyUrl: ***** appSecret: *****
建立配置类:
@ConfigurationProperties(prefix = "pay.wxpay") public class MyWXPayConfig implements WXPayConfig { private String appSecret; /** 公众账号ID */ private String appID; /** 商户号 */ private String mchID; /** API 密钥 */ private String key; /** API 沙箱环境密钥 */ private String sandboxKey; /** API证书绝对路径 */ private String certPath; /** 退款异步通知地址 */ private String notifyUrl; private Boolean useSandbox; /** HTTP(S) 连接超时时间,单位毫秒 */ private int httpConnectTimeoutMs = 80000; /** HTTP(S) 读数据超时时间,单位毫秒 */ private int httpReadTimeoutMs = 100000; /** * 获取商户证书内容 * * @return 商户证书内容 */ @Override public InputStream getCertStream() { File certFile = new File(certPath); InputStream inputStream = null; try { inputStream = new FileInputStream(certFile); } catch (FileNotFoundException e) { e.printStackTrace(); } return inputStream; } @Override public String getKey() { if (useSandbox) { return sandboxKey; } return key; } public String getAppSecret() { return appSecret; } public void setAppSecret(String appSecret) { this.appSecret = appSecret; } public String getAppID() { return appID; } public void setAppID(String appID) { this.appID = appID; } public String getMchID() { return mchID; } public void setMchID(String mchID) { this.mchID = mchID; } public String getSandboxKey() { return sandboxKey; } public void setSandboxKey(String sandboxKey) { this.sandboxKey = sandboxKey; } public String getCertPath() { return certPath; } public void setCertPath(String certPath) { this.certPath = certPath; } public String getNotifyUrl() { return notifyUrl; } public void setNotifyUrl(String notifyUrl) { this.notifyUrl = notifyUrl; } public Boolean getUseSandbox() { return useSandbox; } public void setUseSandbox(Boolean useSandbox) { this.useSandbox = useSandbox; } public int getHttpConnectTimeoutMs() { return httpConnectTimeoutMs; } public void setHttpConnectTimeoutMs(int httpConnectTimeoutMs) { this.httpConnectTimeoutMs = httpConnectTimeoutMs; } public int getHttpReadTimeoutMs() { return httpReadTimeoutMs; } public void setHttpReadTimeoutMs(int httpReadTimeoutMs) { this.httpReadTimeoutMs = httpReadTimeoutMs; } public void setKey(String key) { this.key = key; } }
二、建立生成支付二维码的类:
public class PayUtil { /** * 根据url生成二位图片对象 * * @param codeUrl * @return * @throws WriterException */ public static BufferedImage getQRCodeImge(String codeUrl) throws WriterException { Map<EncodeHintType, Object> hints = new Hashtable(); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); hints.put(EncodeHintType.CHARACTER_SET, "UTF8"); int width = 256; BitMatrix bitMatrix = (new MultiFormatWriter()).encode(codeUrl, BarcodeFormat.QR_CODE, width, width, hints); BufferedImage image = new BufferedImage(width, width, 1); for(int x = 0; x < width; ++x) { for(int y = 0; y < width; ++y) { image.setRGB(x, y, bitMatrix.get(x, y) ? -16777216 : -1); } } return image; } }
三、建立服务类
四、建立controller
其中precreate方法就是创建支付二维码的方法,precreateNotify方法为支付过后的回调地址
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
微信支付支付结果通知处理