欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 阿里的一道Java并發(fā)面試題詳解

    阿里的一道Java并發(fā)面試題詳解

    這篇文章主要介紹了阿里的一道Java并發(fā)面試題詳解,網(wǎng)絡、并發(fā)相關的知識,相對其他一些編程知識點更難一些,主要是不好調(diào)試并且涉及內(nèi)容太多 !,需要的朋友可以參考下
    2019-06-06
  • SpringBoot與SpringCache概念用法大全

    SpringBoot與SpringCache概念用法大全

    這篇文章主要介紹了SpringBoot與SpringCache的概念及基本用法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • java實現(xiàn)的xml格式化實現(xiàn)代碼

    java實現(xiàn)的xml格式化實現(xiàn)代碼

    這篇文章主要介紹了java實現(xiàn)的xml格式化實現(xiàn)代碼,需要的朋友可以參考下
    2016-11-11
  • springboot項目編寫發(fā)送異常日志到企微工具包的操作方法

    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)先遍歷與連通分量代碼示例

    這篇文章主要介紹了Java編程實現(xiàn)深度優(yōu)先遍歷與連通分量代碼示例,
    2017-11-11
  • SpringBoot整合SpringSecurity實現(xiàn)圖形驗證碼功能

    SpringBoot整合SpringSecurity實現(xiàn)圖形驗證碼功能

    圖形驗證碼是一種用于區(qū)分用戶是人類還是計算機程序的自動化測試,它通常用于防止自動化軟件進行惡意操作,如濫用在線服務、暴力破?解密碼或進行垃圾郵件發(fā)送等,下面將介紹?Spring?Boot?整合?Spring?Security?實現(xiàn)圖形驗證碼功能,需要的朋友可以參考下
    2024-12-12
  • SpringBoot Mybatis 配置文件形式詳解

    SpringBoot Mybatis 配置文件形式詳解

    這篇文章主要介紹了SpringBoot Mybatis 配置文件形式詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • springboot2.1.3配置sftp自定義sftp連接池的詳細過程

    springboot2.1.3配置sftp自定義sftp連接池的詳細過程

    這篇文章主要介紹了springboot2.1.3配置sftp自定義sftp連接池的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • springboot配置文件中使用${}注入值的兩種方式小結

    springboot配置文件中使用${}注入值的兩種方式小結

    這篇文章主要介紹了springboot配置文件中使用${}注入值的兩種方式小結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java重載構造原理與用法詳解

    Java重載構造原理與用法詳解

    這篇文章主要介紹了Java重載構造原理與用法,結合實例形式分析了java可變參數(shù)、方法重載、構造器等相關概念、原理及操作注意事項,需要的朋友可以參考下
    2020-02-02

最新評論