日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:190日期: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支付內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: 微信
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本免费一区二区三区四区| 色网在线免费观看| 亚洲手机在线| 国产精品一区二区三区四区在线观看| 日韩av一区二区在线影视| 国精品产品一区| 亚洲最大av| 久久福利毛片| 蜜臀久久久99精品久久久久久| 毛片在线网站| 国产日韩一区| 欧美在线看片| 国产日本精品| 精品国产aⅴ| 久久99久久久精品欧美| 久久精品国产68国产精品亚洲| 日韩大片在线| 99久久亚洲精品| 日本视频中文字幕一区二区三区| 亚洲成人三区| 亚洲电影在线一区二区三区| 好吊一区二区三区| 久久久影院免费| 国内不卡的一区二区三区中文字幕| 欧美日韩精品一区二区三区视频 | 国产精品入口久久| 好吊视频一区二区三区四区| 亚洲成人免费| 日韩av在线播放中文字幕| 日韩精品视频在线看| 伊人久久大香线蕉av超碰演员| 国产二区精品| 日本精品一区二区三区在线观看视频| 久久麻豆视频| 久久一级电影| 欧美在线网站| 国产亚洲观看| 国内精品亚洲| 亚洲区欧美区| 国内精品伊人| 韩国久久久久久| 91精品啪在线观看国产18| 国产色综合网| 国产aⅴ精品一区二区三区久久 | 欧美日韩国产在线一区| 日韩中文av| 久久精品国产亚洲夜色av网站| 日韩区一区二| 天堂日韩电影| 国产精品国产三级在线观看| 国产专区一区| 日韩成人免费| 日韩在线观看中文字幕| 亚洲免费一区二区| 精品国产乱码久久久久久1区2匹| 亚洲午夜91| 日韩另类视频| 日韩国产一区二区| 免费视频一区二区| 91精品一区二区三区综合| 乱一区二区av| 国产精久久久| 亚洲资源在线| 亚洲专区欧美专区| 欧美日韩国产传媒| 精品国产91| 国产日韩欧美一区| 日本中文字幕不卡| 石原莉奈在线亚洲二区| 激情自拍一区| 久久中文视频| 美女亚洲一区| 亚洲综合日本| 欧美精品观看| 欧美色综合网| 欧美激情网址| 国产亚洲精品精品国产亚洲综合| 国产无遮挡裸体免费久久| 亚洲一级淫片| 蜜臀av一区二区三区| 蜜桃视频一区二区三区在线观看| 亚洲午夜久久久久久尤物| av亚洲在线观看| 精品亚洲美女网站| 亚洲欧美视频一区二区三区| 视频一区视频二区中文| 亚洲欧洲免费| 国产欧美日韩亚洲一区二区三区| 国产伦精品一区二区三区在线播放| 国产黄色一区| 成人羞羞视频在线看网址| 伊人精品一区| 日韩精品视频一区二区三区| 日本一区二区高清不卡| 亚洲电影有码| 国产极品模特精品一二| 三级小说欧洲区亚洲区| 尤物网精品视频| 亚洲精品乱码| 日韩在线免费| 日日夜夜免费精品视频| 免费在线观看不卡| 成人在线观看免费视频| 国产综合精品一区| 国产高清亚洲| 日韩在线一区二区| 老鸭窝一区二区久久精品| 91精品一区二区三区综合| 日韩精品一级| 欧美69视频| 四虎精品一区二区免费| 老司机免费视频一区二区三区| 水蜜桃久久夜色精品一区| 久久影院一区| 国产日本精品| 日韩专区欧美专区| 国产精品亚洲一区二区三区在线观看| 少妇精品久久久| 99久久精品网站| 久久亚洲资源中文字| 日本一区二区三区视频在线看| 国产精品av一区二区| 精品久久美女| 日本在线视频一区二区| 欧美日韩四区| 欧洲亚洲一区二区三区| 日韩1区2区| 色综合五月天| 欧美综合社区国产| 欧美精品自拍| 亚洲二区在线| 久久久噜噜噜| 不卡中文字幕| 中文字幕日韩高清在线| 日本vs亚洲vs韩国一区三区二区| 最新亚洲一区| 亚洲深夜av| 亚洲视频二区| 日韩福利在线观看| 国产探花在线精品| 91成人在线| 欧美在线首页| 麻豆精品视频在线观看| 国产午夜精品一区在线观看| 国产精品日本一区二区三区在线| 国产精品片aa在线观看| 欧美一级鲁丝片| 日韩免费高清| 国产亚洲一区在线| 亚洲精品观看| 久久久久九九精品影院| 欧美三级网址| 婷婷视频一区二区三区| 欧美日韩夜夜| 岛国av免费在线观看| 999精品色在线播放| 蜜臀久久久久久久| 久久精品国产精品亚洲毛片| 国产精品一线天粉嫩av| 美女在线视频一区| 欧美日韩精品在线一区| 丝袜美腿亚洲色图| 国产精品传媒麻豆hd| 一区二区视频欧美| 国产欧美一区二区三区米奇| 欧美激情五月| 亚洲欧美久久久| 国产精品永久| 欧美网站在线| 老牛国内精品亚洲成av人片| 亚洲四虎影院| 日韩精品免费一区二区在线观看 | 国产亚洲人成a在线v网站| 国产一区二区三区四区| 最新日韩欧美| 日韩精品欧美激情一区二区| 欧美午夜不卡| 久久精品系列| 在线视频日韩| 日韩在线高清| 国产精品99一区二区三区| 免费在线看一区| 国产精品主播| 日韩高清不卡一区| 亚洲a一区二区三区| 日韩高清一区二区| 99视频精品全部免费在线视频| 国产日韩亚洲欧美精品| 人在线成免费视频| 国产欧美啪啪| 日本中文字幕一区二区| 丝袜a∨在线一区二区三区不卡| 日韩久久视频| 精品一区视频| 日本不卡不码高清免费观看| 美美哒免费高清在线观看视频一区二区| 中文字幕高清在线播放| 国产精品传媒麻豆hd| 久久精品三级| 久久精品一本|