最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java對(duì)接微信支付之JSAPI支付(微信公眾號(hào)支付)

 更新時(shí)間:2023年07月19日 11:43:59   作者:木乃伊~  
這篇文章主要給大家介紹了關(guān)于java對(duì)接微信支付之JSAPI支付(微信公眾號(hào)支付)的相關(guān)資料,微信JSAPI支付是近年來(lái)非常流行的一種支付方式,它使用了微信支付的SDK和demo來(lái)實(shí)現(xiàn)支付接口的對(duì)接,需要的朋友可以參考下

一、JSAPI支付接入前準(zhǔn)備

1、JSAPI支付首先需要注冊(cè)、認(rèn)證一個(gè)公眾號(hào)(大概300塊一年)

微信公眾號(hào)注冊(cè)

2、申請(qǐng)成為商戶(hù),商戶(hù)的類(lèi)型有多種(普通商戶(hù),服務(wù)商,特約商戶(hù)等),根據(jù)自己的需求申請(qǐng)

商戶(hù)申請(qǐng)

3、微信公眾號(hào)和商戶(hù)關(guān)聯(lián)

3.1、登錄微信公眾號(hào)關(guān)聯(lián)申請(qǐng)?zhí)柕纳虘?hù)號(hào)

3.2、關(guān)聯(lián)商戶(hù)號(hào)

點(diǎn)擊添加,根據(jù)指引完成綁定..............

4、獲取appId、商戶(hù)號(hào)

4.1、登錄微信公眾號(hào),進(jìn)入【基本配置】目錄,取到公眾號(hào)的appId ,如圖

4.2、登錄微信支付商戶(hù)號(hào),進(jìn)入【賬戶(hù)中心->賬戶(hù)信息->微信支付商戶(hù)號(hào),取到微信支付商戶(hù)號(hào),如圖  

?5、登錄微信商戶(hù)平臺(tái),進(jìn)入【賬戶(hù)中心 > API安全 】目錄,設(shè)置APIV3密鑰,有官方文檔這里就不贅述了

?二、代碼片段

1.引入Maven依賴(lài)

<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示例): 

     /** 商戶(hù)號(hào)*/
    @Value("${wx.mchId}")
    private String mchId;
 
    /** 公眾號(hào)appid*/
    @Value("${wx.appId}")
    private String appId;
 
    /** 商戶(hù)APIV3密鑰*/
    @Value("${wx.apiV3Key}")
    private String apiV3Key;
 
    /**微信回調(diào)地址*/
    @Value("${wx.v3PayNotifyUrl}")
    private String v3PayNotifyUrl;
 
    /** 商戶(hù)證書(shū)序列號(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ù)號(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ù)可見(jiàn)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ù)號(hào)
        request.setMchid(mchId);
        //支付者信息
        Payer payer = new Payer();
        payer.setOpenid(openId);
        request.setPayer(payer);
        //描述
        request.setDescription("支付測(cè)試");
        //微信回調(diào)地址,需要是https://開(kāi)頭的,必須外網(wǎng)可以正常訪(fǎ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)加密類(lèi)型為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,由商戶(hù)傳入     
         "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將在用戶(hù)支付成功后返回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ō)了!

到此這篇關(guān)于java對(duì)接微信支付之JSAPI支付(微信公眾號(hào)支付)的文章就介紹到這了,更多相關(guān)java對(duì)接JSAPI支付內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

台北市| 策勒县| 忻城县| 永宁县| 从化市| 江油市| 科技| 麻城市| 平谷区| 平遥县| 彭山县| 五华县| 德昌县| 临桂县| 广宗县| 天长市| 平南县| 睢宁县| 邹城市| 锡林郭勒盟| 榆林市| 广汉市| 嘉荫县| 临夏市| 洛扎县| 洛宁县| 博乐市| 西吉县| 和平县| 洛浦县| 永春县| 滦平县| 大悟县| 和平县| 淮滨县| 梁河县| 商都县| 长海县| 天水市| 三明市| 嘉兴市|