本文是【微信JSAPI支付】文章,主要講解商戶對(duì)接微信支付,簡(jiǎn)潔版測(cè)試
文章目錄
一、JSAPI支付接入前準(zhǔn)備
二、代碼片段
1.引入Maven依賴
2.后端業(yè)務(wù)請(qǐng)求接口
3.前端調(diào)起支付請(qǐng)求方法
總結(jié)
一、JSAPI支付接入前準(zhǔn)備
1、JSAPI支付首先需要注冊(cè)、認(rèn)證一個(gè)公眾號(hào)(大概300塊一年)
微信公眾號(hào)注冊(cè)
2、申請(qǐng)成為商戶,商戶的類型有多種(普通商戶,服務(wù)商,特約商戶等),根據(jù)自己的需求申請(qǐng)
商戶申請(qǐng)
3、微信公眾號(hào)和商戶關(guān)聯(lián)
? ? ? ? 3.1、登錄微信公眾號(hào)關(guān)聯(lián)申請(qǐng)?zhí)柕纳虘籼?hào)
? ? ? ? ?3.2、關(guān)聯(lián)商戶號(hào)
?點(diǎn)擊添加,根據(jù)指引完成綁定..............
4、獲取appId、商戶號(hào)
? ? ? ? 4.1、登錄微信公眾號(hào),進(jìn)入【基本配置】目錄,取到公眾號(hào)的appId ,如圖
?
? ? ? ? ?4.2、登錄微信支付商戶號(hào),進(jìn)入【賬戶中心->賬戶信息->微信支付商戶號(hào),取到微信支付商戶號(hào),如圖???
?5、登錄微信商戶平臺(tái),進(jìn)入【賬戶中心 > API安全 】目錄,設(shè)置APIV3密鑰,有官方文檔這里就不贅述了
?
二、代碼片段
1.引入Maven依賴
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-java</artifactId>
<version>0.2.7</version>
</dependency>
2.后端業(yè)務(wù)請(qǐng)求接口
根據(jù)自己的業(yè)務(wù)需求進(jìn)行修改使用,參數(shù)根據(jù)自己的需求來(lái),代碼如下(JSAPI示例):?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-483083.html
/** 商戶號(hào)*/
@Value("${wx.mchId}")
private String mchId;
/** 公眾號(hào)appid*/
@Value("${wx.appId}")
private String appId;
/** 商戶APIV3密鑰*/
@Value("${wx.apiV3Key}")
private String apiV3Key;
/**微信回調(diào)地址*/
@Value("${wx.v3PayNotifyUrl}")
private String v3PayNotifyUrl;
/** 商戶證書序列號(hào) */
@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";
// 訂單號(hào)
String orderUuid = IdUtils.getUUID();
//元轉(zhuǎn)換為分
Integer amountInteger = Integer.valueOf(AmountUnitConversionUtil.changeYuanAndFen(amountString));
//私鑰文件路徑(本地自己測(cè)試看自己的私鑰文件存放路徑)
String filePath ="***/***/***/apiclient_key.pem";//測(cè)試環(huán)境可放到resource目錄下
// 一個(gè)商戶號(hào)只能初始化一個(gè)配置,否則會(huì)因?yàn)橹貜?fù)的下載任務(wù)報(bào)錯(cuò)
if (config == null) {
config =new RSAAutoCertificateConfig.Builder()
.merchantId(mchId)
.privateKeyFromPath(filePath)
.merchantSerialNumber(merchantSerialNumber)
.apiV3Key(apiV3Key)
.build();
}
// 構(gòu)建service
if (service == null) {
service = new JsapiServiceExtension.Builder().config(config).build();
}
//組裝預(yù)約支付的實(shí)體
// request.setXxx(val)設(shè)置所需參數(shù),具體參數(shù)可見Request定義
PrepayRequest request = new PrepayRequest();
//計(jì)算金額
Amount amount = new Amount();
amount.setTotal(amountInteger);
amount.setCurrency("CNY");
request.setAmount(amount);
//公眾號(hào)appId
request.setAppid(appId);
//商戶號(hào)
request.setMchid(mchId);
//支付者信息
Payer payer = new Payer();
payer.setOpenid(openId);
request.setPayer(payer);
//描述
request.setDescription("支付測(cè)試");
//微信回調(diào)地址,需要是https://開頭的,必須外網(wǎng)可以正常訪問(wèn)
//本地測(cè)試可以使用內(nèi)網(wǎng)穿透工具,網(wǎng)上很多的
request.setNotifyUrl(v3PayNotifyUrl);
//訂單號(hào)
request.setOutTradeNo(orderUuid);
// 加密
PrepayWithRequestPaymentResponse payment = service.prepayWithRequestPayment(request);
//默認(rèn)加密類型為RSA
payment.setSignType("MD5");
//返回?cái)?shù)據(jù),前端調(diào)起支付
return payment;
3.前端調(diào)起支付請(qǐng)求方法
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":"wx2421b1c4370ec43b", //公眾號(hào)ID,由商戶傳入
"timeStamp":"1395712654", //時(shí)間戳,自1970年以來(lái)的秒數(shù)
"nonceStr":"e61463f8efa94090b1f366cccfbbb444", //隨機(jī)串
"package":"prepay_id=u802345jgfjsdfgsdg888",
"signType":"MD5", //微信簽名方式:
"paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信簽名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ){
// 使用以上方式判斷前端返回,微信團(tuán)隊(duì)鄭重提示:
//res.err_msg將在用戶支付成功后返回ok,但并不保證它絕對(duì)可靠。
}
});
}
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();
}
總結(jié)
以上就是根據(jù)官方文檔進(jìn)行實(shí)現(xiàn)的一個(gè)調(diào)起微信JSAPI支付測(cè)試,微信回調(diào)的接口就先不多說(shuō)了,有需要的再留言,有問(wèn)題可以留言一起討論學(xué)習(xí)!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-483083.html
到了這里,關(guān)于java對(duì)接微信支付:JSAPI支付(微信公眾號(hào)支付)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!