电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SpringBoot + 微信公眾號JSAPI支付功能的實現

瀏覽:136日期:2022-06-16 08:30:27

1、pom.xml依賴配置

<!-- 微信支付 --><dependency> <groupId>com.egzosn</groupId> <artifactId>pay-java-wx</artifactId> <version>2.12.4</version></dependency>

2、application.yml文件配置微信公眾號的基礎信息

#微信公眾號支付配置wechatpay: mchId: # 商戶Id appId: #應用id storePassword: #秘鑰支付密碼 secretKey: # 密鑰 notifyUrl: #微信支付回調 keyStore: # 證書所在位置

3、設置配置文件 WechatPayConfig.java

package com.example.emoticon.wechat; import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component; /** * @ClassName WechatPayConfig * @Description 微信支付配置 * @Author WangJing * @Date 2021/3/23 4:38 下午 * @Version V1.1.0 */ @Data@Component@ConfigurationProperties(prefix = 'wechatpay')public class WechatPayConfig { private String mchId;//合作者id(商戶號 private String appId;//應用id private String secretKey;//密鑰 private String notifyUrl; private String keyStore;// 支付密鑰存放位置 文件是以.p12為后綴名字 private String storePassword; }

4、controller 邏輯代碼

package com.example.emoticon.controller; import com.egzosn.pay.common.api.PayService;import com.egzosn.pay.common.bean.PayOrder;import com.egzosn.pay.common.bean.RefundOrder;import com.egzosn.pay.common.http.HttpConfigStorage;import com.egzosn.pay.common.util.sign.SignUtils;import com.egzosn.pay.wx.api.WxPayConfigStorage;import com.egzosn.pay.wx.api.WxPayService;import com.egzosn.pay.wx.bean.WxTransactionType;import com.example.emoticon.wechat.WechatPayConfig;import io.swagger.annotations.ApiOperation;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController; import javax.annotation.PostConstruct;import javax.servlet.http.HttpServletRequest;import java.io.IOException;import java.math.BigDecimal;import java.util.Date;import java.util.Map; /** * @ClassName WechatPayController * @Description 微信支付Controller * @Author WangJing * @Date 2021/3/23 4:35 下午 * @Version V1.1.0 */@RestController@RequestMapping('/wechatPay')@Slf4jpublic class WechatPayController { @Autowired WechatPayConfig wechatPayConfig; private PayService service = null; @PostConstruct public void init() { WxPayConfigStorage wxPayConfigStorage = new WxPayConfigStorage(); wxPayConfigStorage.setMchId(wechatPayConfig.getMchId()); // 合作者id(商戶號 wxPayConfigStorage.setAppid(wechatPayConfig.getAppId()); // 應用id wxPayConfigStorage.setSecretKey(wechatPayConfig.getSecretKey()); // 密鑰 wxPayConfigStorage.setNotifyUrl(wechatPayConfig.getNotifyUrl()); // 異步回調地址 http://域名:端口號/項目名/回調接口名稱 wxPayConfigStorage.setSignType(SignUtils.MD5.name()); wxPayConfigStorage.setInputCharset('utf-8'); // 支付api證書設置,退款必須 方式一 HttpConfigStorage httpConfigStorage = new HttpConfigStorage(); httpConfigStorage.setKeystore(wechatPayConfig.getKeyStore());// 支付密鑰存放位置 文件是以.p12為后綴名字 httpConfigStorage.setStorePassword(wechatPayConfig.getStorePassword()); // 是否為證書地址 httpConfigStorage.setPath(true); service = new WxPayService(wxPayConfigStorage, httpConfigStorage); // 請求連接池配置 // 最大連接數 httpConfigStorage.setMaxTotal(20); // 默認的每個路由的最大連接數 httpConfigStorage.setDefaultMaxPerRoute(10); service.setRequestTemplateConfigStorage(httpConfigStorage); } @ApiOperation('返回訂單信息') @RequestMapping(value = 'weixinpay', method = RequestMethod.POST) public Map<String, Object> weixinpay(HttpServletRequest request) { //備注:這個可以獲取預支付的訂單,根據需要調用這個接口,可有前臺向后臺傳遞參數。然后后臺根據需要進行處理。 init(); // 在這一步,可以傳入一個訂單Id,自行去搜索訂單信息,并填寫以下內容 PayOrder payOrder = new PayOrder();// 這個就是支付成功后,在微信支付里面返回的信息(支付訂單信息) // 一下內容需要分情況而定,自行填寫。 payOrder.setSubject('商品名稱'); payOrder.setBody('商品描述'); payOrder.setAddition('附加信息'); payOrder.setPrice(new BigDecimal(0.2));// 價格 payOrder.setOutTradeNo('商戶訂單號'); payOrder.setBankType('銀行卡類型'); payOrder.setDeviceInfo('設備信息'); payOrder.setSpbillCreateIp('支付創建ip');// 可用IPUtils.getIpAddr(request) payOrder.setOpenid('用戶微信openid'); payOrder.setTransactionType(WxTransactionType.JSAPI);// 支付方式 Map orderInfo = service.orderInfo(payOrder);// 返回創建的訂單信息 log.debug('獲取預支付訂單信息回參' + orderInfo.toString()); // 可自行選擇 ,是否將支付的流水插入到數據庫中。返回的信息由:signType appId timeStamp nonceStr package sign return orderInfo; } /** * 這就是支付回調地址 * * @param request * @return * @throws IOException */ @ApiOperation('回調地址') @RequestMapping(value = 'weixinpayBack') public String payBack(HttpServletRequest request) throws IOException { init(); // 獲取支付方返回的對應參數 Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream()); if (null == params) { log.debug('通知失敗'); return service.getPayOutMessage('failed', '通知失敗').toMessage(); } log.debug('微信公眾號支付結果通知:' + params.toString()); // 校驗 if (service.verify(params)) { // 這里處理業務邏輯 支付成功后的代碼邏輯塊 // ......業務邏輯處理塊........ log.debug('通知支付成功'); return service.getPayOutMessage('success', '支付成功').toMessage(); } log.debug('通知支付失敗'); return service.getPayOutMessage('fail', '支付失敗').toMessage(); } @ApiOperation('微信公眾號退款') @RequestMapping(value = 'weixinAccRefund') public String weixinRefund() { init(); RefundOrder refundOrder = new RefundOrder();//退款訂單信息 refundOrder.setRefundNo('退款單號,每次進行退款的單號,此處唯一'); refundOrder.setTradeNo('支付平臺訂單號,交易號'); refundOrder.setOutTradeNo('商戶單號'); refundOrder.setRefundAmount(new BigDecimal(0.2));//退款金額 refundOrder.setTotalAmount(new BigDecimal(0.5));//訂單總金額 refundOrder.setOrderDate(new Date());//退款交易日期 refundOrder.setDescription('退款說明'); Map<String, Object> refund = service.refund(refundOrder);//微信退款 //退款成功后,寫其他的邏輯 log.debug('微信公眾號退款結果:=' + refund.toString()); return 'Success'; }}

到此這篇關于SpringBoot + 微信公眾號JSAPI支付功能的實現的文章就介紹到這了,更多相關SpringBoot 微信公眾號JSAPI支付內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: 微信
相關文章:
主站蜘蛛池模板: 吹塑加工_大型吹塑加工_滚塑代加工-莱力奇吹塑加工有限公司 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 温州富欧金属封头-不锈钢封头厂家| 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 工控机,嵌入式主板,工业主板,arm主板,图像采集卡,poe网卡,朗锐智科 | 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 自进式锚杆-自钻式中空注浆锚杆-洛阳恒诺锚固锚杆生产厂家 | 恒温油槽-恒温水槽-低温恒温槽厂家-宁波科麦仪器有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 筒瓦厂家-仿古瓦-寺庙-古建琉璃瓦-宜兴市古典园林建筑陶瓷厂有限公司 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 东莞海恒试验仪器设备有限公司| 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 广州中央空调回收,二手中央空调回收,旧空调回收,制冷设备回收,冷气机组回收公司-广州益夫制冷设备回收公司 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 污水提升器,污水提升泵,污水提升装置-德国泽德(zehnder)水泵系统有限公司 | 石油/泥浆/不锈钢防腐/砂泵/抽砂泵/砂砾泵/吸砂泵/压滤机泵 - 专业石油环保专用泵厂家 | 不锈钢螺丝 - 六角螺丝厂家 - 不锈钢紧固件 - 万千紧固件--紧固件一站式采购 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | 缠绕机|缠绕膜包装机|缠绕包装机-上海晏陵智能设备有限公司 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 天津云仓-天津仓储物流-天津云仓一件代发-顺东云仓 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 企业VI设计_LOGO设计公司_品牌商标设计_【北京美研】 | TPU薄膜_TPU薄膜生产厂家_TPU热熔胶膜厂家定制_鑫亘环保科技(深圳)有限公司 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 |