java對接微信支付之JSAPI支付(微信公眾號支付)

一、JSAPI支付接入前準備
1、JSAPI支付首先需要注冊、認證一個公眾號(大概300塊一年)
2、申請成為商戶,商戶的類型有多種(普通商戶,服務商,特約商戶等),根據(jù)自己的需求申請
3、微信公眾號和商戶關聯(lián)
3.1、登錄微信公眾號關聯(lián)申請?zhí)柕纳虘籼?/p>

3.2、關聯(lián)商戶號

點擊添加,根據(jù)指引完成綁定..............
4、獲取appId、商戶號
4.1、登錄微信公眾號,進入【基本配置】目錄,取到公眾號的appId ,如圖

4.2、登錄微信支付商戶號,進入【賬戶中心->賬戶信息->微信支付商戶號,取到微信支付商戶號,如圖

?5、登錄微信商戶平臺,進入【賬戶中心 > API安全 】目錄,設置APIV3密鑰,有官方文檔這里就不贅述了

?二、代碼片段
1.引入Maven依賴
<dependency> <groupId>com.github.wechatpay-apiv3</groupId> <artifactId>wechatpay-java</artifactId> <version>0.2.7</version> </dependency>
2.后端業(yè)務請求接口
根據(jù)自己的業(yè)務需求進行修改使用,參數(shù)根據(jù)自己的需求來,代碼如下(JSAPI示例):
/** 商戶號*/
@Value("${wx.mchId}")
private String mchId;
/** 公眾號appid*/
@Value("${wx.appId}")
private String appId;
/** 商戶APIV3密鑰*/
@Value("${wx.apiV3Key}")
private String apiV3Key;
/**微信回調(diào)地址*/
@Value("${wx.v3PayNotifyUrl}")
private String v3PayNotifyUrl;
/** 商戶證書序列號 */
@Value("${wx.merchantSerialNumber}")
private String merchantSerialNumber;
public static RSAAutoCertificateConfig config = null ;
public static JsapiServiceExtension service = null ;
@GetMapping("/prepay")
public PrepayWithRequestPaymentResponse WeChartPay(String amountString) {
String openId = "oI*******************iGiA";
// 訂單號
String orderUuid = IdUtils.getUUID();
//元轉(zhuǎn)換為分
Integer amountInteger = Integer.valueOf(AmountUnitConversionUtil.changeYuanAndFen(amountString));
//私鑰文件路徑(本地自己測試看自己的私鑰文件存放路徑)
String filePath ="***/***/***/apiclient_key.pem";//測試環(huán)境可放到resource目錄下
// 一個商戶號只能初始化一個配置,否則會因為重復的下載任務報錯
if (config == null) {
config =new RSAAutoCertificateConfig.Builder()
.merchantId(mchId)
.privateKeyFromPath(filePath)
.merchantSerialNumber(merchantSerialNumber)
.apiV3Key(apiV3Key)
.build();
}
// 構建service
if (service == null) {
service = new JsapiServiceExtension.Builder().config(config).build();
}
//組裝預約支付的實體
// request.setXxx(val)設置所需參數(shù),具體參數(shù)可見Request定義
PrepayRequest request = new PrepayRequest();
//計算金額
Amount amount = new Amount();
amount.setTotal(amountInteger);
amount.setCurrency("CNY");
request.setAmount(amount);
//公眾號appId
request.setAppid(appId);
//商戶號
request.setMchid(mchId);
//支付者信息
Payer payer = new Payer();
payer.setOpenid(openId);
request.setPayer(payer);
//描述
request.setDescription("支付測試");
//微信回調(diào)地址,需要是https://開頭的,必須外網(wǎng)可以正常訪問
//本地測試可以使用內(nèi)網(wǎng)穿透工具,網(wǎng)上很多的
request.setNotifyUrl(v3PayNotifyUrl);
//訂單號
request.setOutTradeNo(orderUuid);
// 加密
PrepayWithRequestPaymentResponse payment = service.prepayWithRequestPayment(request);
//默認加密類型為RSA
payment.setSignType("MD5");
//返回數(shù)據(jù),前端調(diào)起支付
return payment;3.前端調(diào)起支付請求方法
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":"wx2421b1c4370ec43b", //公眾號ID,由商戶傳入
"timeStamp":"1395712654", //時間戳,自1970年以來的秒數(shù)
"nonceStr":"e61463f8efa94090b1f366cccfbbb444", //隨機串
"package":"prepay_id=u802345jgfjsdfgsdg888",
"signType":"MD5", //微信簽名方式:
"paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信簽名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ){
// 使用以上方式判斷前端返回,微信團隊鄭重提示:
//res.err_msg將在用戶支付成功后返回ok,但并不保證它絕對可靠。
}
});
}
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}總結
以上就是根據(jù)官方文檔進行實現(xiàn)的一個調(diào)起微信JSAPI支付測試,微信回調(diào)的接口就先不多說了!
到此這篇關于java對接微信支付之JSAPI支付(微信公眾號支付)的文章就介紹到這了,更多相關java對接JSAPI支付內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot項目編寫發(fā)送異常日志到企微工具包的操作方法
本文介紹了Springboot項目如何編寫發(fā)送異常日志到企業(yè)微信的工具包,內(nèi)容包括創(chuàng)建基礎Bean、配置類、pom依賴等步驟,并展示了如何通過nacos進行配置,這為開發(fā)者提供了一種有效的日志管理方案,方便快速定位和處理項目中的異常問題,感興趣的朋友跟隨小編一起看看吧2024-09-09
Java編程實現(xiàn)深度優(yōu)先遍歷與連通分量代碼示例
這篇文章主要介紹了Java編程實現(xiàn)深度優(yōu)先遍歷與連通分量代碼示例,2017-11-11
SpringBoot整合SpringSecurity實現(xiàn)圖形驗證碼功能
圖形驗證碼是一種用于區(qū)分用戶是人類還是計算機程序的自動化測試,它通常用于防止自動化軟件進行惡意操作,如濫用在線服務、暴力破?解密碼或進行垃圾郵件發(fā)送等,下面將介紹?Spring?Boot?整合?Spring?Security?實現(xiàn)圖形驗證碼功能,需要的朋友可以參考下2024-12-12
springboot2.1.3配置sftp自定義sftp連接池的詳細過程
這篇文章主要介紹了springboot2.1.3配置sftp自定義sftp連接池的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
springboot配置文件中使用${}注入值的兩種方式小結
這篇文章主要介紹了springboot配置文件中使用${}注入值的兩種方式小結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

