Spring Boot項(xiàng)目中集成微信支付v3
1. 前言
最近忙的一批,難得今天有喘氣的機(jī)會(huì)就趕緊把最近在開(kāi)發(fā)中的一些成果分享出來(lái)。前幾日分享了自己寫的一個(gè)微信支付V3的開(kāi)發(fā)包payment-spring-boot-starter,就忙里偷閑完善了一波。期間給微信支付提交了6個(gè)BUG,跟微信支付的產(chǎn)品溝通了好幾天。
項(xiàng)目地址: https://github.com/NotFound403/payment-spring-boot
別忘記給個(gè)Star啊。
那么都完善了哪些內(nèi)容呢?胖哥來(lái)一一介紹。
2. Maven 中央倉(cāng)庫(kù)
是的,不用再自行編譯打包部署了,我已經(jīng)提交到Maven中央倉(cāng)庫(kù)了。最新的坐標(biāo)是:
<dependency> <groupId>cn.felord</groupId> <artifactId>payment-spring-boot-starter</artifactId> <version>1.0.1.RELEASE</version> </dependency>
這才算有了點(diǎn)正經(jīng)開(kāi)源項(xiàng)目的樣子。
3. 功能更加完善
在上次分享中僅僅實(shí)現(xiàn)了微信支付的代金券能力,這次加入了更多的微信支付能力:
微信支付V3的基礎(chǔ)支付-直連模式優(yōu)化。
實(shí)現(xiàn)微信支付V3的合單支付。
同時(shí)自行實(shí)現(xiàn)了多商戶、多APPID的多租戶模式。后續(xù)微信支付分等功能也將接入進(jìn)來(lái)。
4. 完善樣例
大部分還是喜歡拿來(lái)就用,那么我編寫了一個(gè)DEMO項(xiàng)目,比如微信支付回調(diào)的控制器代碼:
/**
* 微信支付成功回調(diào).
* <p>
* 無(wú)需開(kāi)發(fā)者判斷,只有扣款成功微信才會(huì)回調(diào)此接口
*
* @param wechatpaySerial the wechatpay serial
* @param wechatpaySignature the wechatpay signature
* @param wechatpayTimestamp the wechatpay timestamp
* @param wechatpayNonce the wechatpay nonce
* @param request the request
* @return the map
*/
@SneakyThrows
@PostMapping("/transaction")
public Map<String, ?> transactionCallback(
@RequestHeader("Wechatpay-Serial") String wechatpaySerial,
@RequestHeader("Wechatpay-Signature") String wechatpaySignature,
@RequestHeader("Wechatpay-Timestamp") String wechatpayTimestamp,
@RequestHeader("Wechatpay-Nonce") String wechatpayNonce,
HttpServletRequest request) {
String body = request.getReader().lines().collect(Collectors.joining());
// 對(duì)請(qǐng)求頭進(jìn)行驗(yàn)簽 以確保是微信服務(wù)器的調(diào)用
ResponseSignVerifyParams params = new ResponseSignVerifyParams();
params.setWechatpaySerial(wechatpaySerial);
params.setWechatpaySignature(wechatpaySignature);
params.setWechatpayTimestamp(wechatpayTimestamp);
params.setWechatpayNonce(wechatpayNonce);
params.setBody(body);
return wechatApiProvider.callback(TENANT_ID).transactionCallback(params, data -> {
//TODO 對(duì)回調(diào)解析的結(jié)果進(jìn)行消費(fèi)
});
}
基本就是抄來(lái)就能用的。還有更多請(qǐng)參閱 payment-spring-boot-samples項(xiàng)目:
地址:https://github.com/NotFound403/payment-spring-boot-samples
5. 文檔
寫文檔確實(shí)是一個(gè)枯燥的事情,參考了其它一些開(kāi)源項(xiàng)目的樣子弄了個(gè)像模像樣的文檔:
地址是:https://notfound403.github.io/payment-spring-boot

快速接入指南、JavaDoc、踩坑分享都在文檔里面了。如果有什么需要完善的地方可以提交ISSUE。
今天的分享就到這里,如果你在微信支付中遇到了什么問(wèn)題可以留言提問(wèn),分享使我快樂(lè)。
以上就是Spring Boot項(xiàng)目中集成微信支付v3的詳細(xì)內(nèi)容,更多關(guān)于Spring Boot項(xiàng)目微信支付的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android 資源 id詳解及的動(dòng)態(tài)獲取
這篇文章主要介紹了Android 資源 id詳解及的動(dòng)態(tài)獲取的相關(guān)資料,需要的朋友可以參考下2016-12-12
springboot 排除redis的自動(dòng)配置操作
這篇文章主要介紹了springboot 排除redis的自動(dòng)配置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
mybatis連接mysql的實(shí)現(xiàn)過(guò)程
通過(guò)配置Maven的pom文件,可以簡(jiǎn)化MyBatis連接數(shù)據(jù)庫(kù)的過(guò)程,免去手動(dòng)下載和導(dǎo)入各種依賴包的麻煩,本文介紹了如何利用Maven導(dǎo)入MyBatis及其他相關(guān)依賴,如Junit、MySQL連接驅(qū)動(dòng)、Druid連接池和Dbutil等,以簡(jiǎn)化數(shù)據(jù)庫(kù)操作和測(cè)試2024-10-10
java實(shí)現(xiàn)區(qū)域內(nèi)屏幕截圖示例
這篇文章主要介紹了java截圖示例,需要的朋友可以參考下2014-04-04
在Spring中如何注入動(dòng)態(tài)代理Bean
這篇文章主要介紹了在Spring中如何注入動(dòng)態(tài)代理Bean問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Spring boot調(diào)用Oracle存儲(chǔ)過(guò)程的兩種方式及完整代碼
這篇文章主要給大家介紹了關(guān)于Spring boot調(diào)用Oracle存儲(chǔ)過(guò)程的兩種方式及完整代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

