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

java后臺實(shí)現(xiàn)支付寶對賬功能的示例代碼

 更新時間:2018年08月15日 10:34:46   作者:Ouyzc  
這篇文章主要介紹了java后臺實(shí)現(xiàn)支付寶對賬功能的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

完成支付寶支付、查詢的接口之后,我們應(yīng)該還需要定時與支付寶進(jìn)行對賬,以確保商戶系統(tǒng)的訂單信息是正確的,想知道支付寶支付、查詢接口實(shí)現(xiàn)過程的親們,可移步到上一篇有詳細(xì)過程。

現(xiàn)在我們來講一下支付寶對賬的功能,關(guān)于與支付寶交互的關(guān)鍵代碼,其實(shí)支付寶的API已經(jīng)講得很清楚,如果親們想直接看支付寶API,點(diǎn)擊 支付寶對賬API ,當(dāng)然我在文章也會進(jìn)行說明解釋。

實(shí)現(xiàn)支付寶自動對賬功能

先看一下商戶系統(tǒng)和支付寶的大概交互過程:

所謂對賬,其實(shí)就是調(diào)用支付寶查詢接口,跟上一篇的查詢接口不同的是,上一篇的查詢接口是針對特定的一個訂單,通過訂單號或者支付寶交易號去查詢這一筆訂單的信息,而對賬,我們需要獲取一個時間段的所有訂單信息,因此,我們自然而已的去看支付寶提供的SDK是否有提供該接口給我們,經(jīng)過查看支付寶API,我們發(fā)現(xiàn)確實(shí)我們所需要的接口:alipay.data.dataservice.bill.downloadurl.query。廢話不多說,先上我實(shí)現(xiàn)的代碼

1.先是調(diào)用支付寶的對賬查詢接口,獲取賬單文件下載地址URL,關(guān)于一些支付寶的公共參數(shù),在上一篇我已經(jīng)封裝好,下面代碼是針對對賬的實(shí)現(xiàn)過程,傳入關(guān)鍵的2個業(yè)務(wù)參數(shù).公共參數(shù)支付寶SDK已經(jīng)封裝好。

第一個參數(shù),賬單類型(字符串類型,trade或者signcustomer,具體含義見支付寶API)

第二個參數(shù),獲取時間段(字符串類型,(2018-03-15)需要下載的賬單日期,最晚是當(dāng)期日期的前一天)

 /**
 * 實(shí)現(xiàn)支付寶對賬
 * @param request 
 * @return response
 */
 @Override
 public void alipayBill() {
 logger.info("==================向支付寶發(fā)起對賬請求");
 // 獲取支付寶支付的配置信息
 ValueOperations<String, Object> valueOps = redisTemplate.opsForValue();
 Payment alipayment = (Payment) valueOps.get("alipayment");
 if (alipayment == null) {
  alipayment = alipayMentOrderRepository.getPayment(1, 1);
 }

 try {
 //實(shí)例化客戶端(參數(shù):網(wǎng)關(guān)地址、商戶appid、商戶私鑰、格式、編碼、支付寶公鑰、加密類型)
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.URL, alipayment.getAppid(), 
     AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, 
     AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE);
 AlipayDataDataserviceBillDownloadurlQueryRequest request = new AlipayDataDataserviceBillDownloadurlQueryRequest();//創(chuàng)建API對應(yīng)的request類
 request.setBizContent("{" +
 "\"bill_type\":\"trade\"," +
 "\"bill_date\":\"2018-03-14\"}"); //設(shè)置業(yè)務(wù)參數(shù)
 AlipayDataDataserviceBillDownloadurlQueryResponse response = alipayClient.execute(request);
 String billDownloadUrl=response.getBillDownloadUrl();
 logger.info("==================支付寶返回文件下載地址:"+billDownloadUrl);
 this.downBill(billDownloadUrl); //調(diào)用下載文件方法

 } catch (AlipayApiException e) {

  // TODO Auto-generated catch block
  e.printStackTrace();
 }//通過alipayClient調(diào)用API,獲得對應(yīng)的response類
     //根據(jù)response中的結(jié)果繼續(xù)業(yè)務(wù)邏輯處理
 }

2.獲取到支付寶返回的訂單文件下載地址之后,我們直接把它下載到本地,下載的代碼如下:

 /**
 * 下載賬單文件:
 * @param request 
 * @return response
 */
 public String downBill(String billDownloadUrl){
 long filename=new Date().getTime();
 //指定希望保存的文件路徑
 String filePath = "G:/alipay/billfile/fund_bill_"+filename+".zip";
 URL url = null;
 HttpURLConnection httpUrlConnection = null;
 InputStream fis = null;
 FileOutputStream fos = null;
 try {
   url = new URL(billDownloadUrl);
   httpUrlConnection = (HttpURLConnection) url.openConnection();
   httpUrlConnection.setConnectTimeout(5 * 1000);
   httpUrlConnection.setDoInput(true);
   httpUrlConnection.setDoOutput(true);
   httpUrlConnection.setUseCaches(false);
   httpUrlConnection.setRequestMethod("GET");
   httpUrlConnection.setRequestProperty("Charsert", "UTF-8");
   httpUrlConnection.connect();
   fis = httpUrlConnection.getInputStream();
   byte[] temp = new byte[1024];
   int b;
   fos = new FileOutputStream(new File(filePath));
   while ((b = fis.read(temp)) != -1) {
     fos.write(temp, 0, b);
     fos.flush();
   }
 } catch (MalformedURLException e) {
   e.printStackTrace();
 } catch (IOException e) {
   e.printStackTrace();
 } finally {
   try {
     if(fis!=null) fis.close();
     if(fos!=null) fos.close();
     if(httpUrlConnection!=null) httpUrlConnection.disconnect();
   } catch (IOException e) {
     e.printStackTrace();
   }
 }
 return null;
 }

以上就是與支付寶交互的過程,支付寶API上也能找到這些代碼,完成以上2步之后,我們就可以下載每日賬單文件了

我下載下來是這樣的,上個圖:

解壓之后:

打開excel(匯總)

是這樣的:

至此,我們已經(jīng)拿到了支付寶提供的每日賬單文件,接下來才是重頭戲,目前還沒有確定選擇哪種方案進(jìn)行自動對賬

確定之后,會把過程也補(bǔ)上。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在已有spring的基礎(chǔ)上集成hibernate的實(shí)例講解

    在已有spring的基礎(chǔ)上集成hibernate的實(shí)例講解

    下面小編就為大家?guī)硪黄谝延衧pring的基礎(chǔ)上集成hibernate的實(shí)例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • springboot責(zé)任鏈模式實(shí)現(xiàn)多級校驗(yàn)

    springboot責(zé)任鏈模式實(shí)現(xiàn)多級校驗(yàn)

    責(zé)任鏈模式是將鏈中的每一個節(jié)點(diǎn)看作是一個對象,每個節(jié)點(diǎn)處理的請求不同,且內(nèi)部自動維護(hù)一個下一節(jié)點(diǎn)對象,下面我們來聊聊springboot如何利用責(zé)任鏈模式實(shí)現(xiàn)多級校驗(yàn)吧
    2024-11-11
  • jdk21安裝后無jre文件該如何解決

    jdk21安裝后無jre文件該如何解決

    java開發(fā)少不了安裝jdk,下面這篇文章主要給大家介紹了關(guān)于jdk21安裝后無jre文件該如何解決的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • JavaWeb通過IDEA配置Servlet操作流程詳解

    JavaWeb通過IDEA配置Servlet操作流程詳解

    這篇文章主要介紹了JavaWeb通過IDEA配置Servlet實(shí)現(xiàn)流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • springboot配置kafka批量消費(fèi),并發(fā)消費(fèi)方式

    springboot配置kafka批量消費(fèi),并發(fā)消費(fèi)方式

    文章介紹了如何在Spring Boot中配置Kafka進(jìn)行批量消費(fèi),并發(fā)消費(fèi),需要注意的是,并發(fā)量必須小于等于分區(qū)數(shù),否則會導(dǎo)致線程空閑,文章還總結(jié)了創(chuàng)建Kafka分區(qū)的命令,并鼓勵讀者分享經(jīng)驗(yàn)
    2024-12-12
  • Springsession nginx反向代理集成過程

    Springsession nginx反向代理集成過程

    這篇文章主要介紹了Springsession nginx反向代理集成過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java中的適配器原理解析

    Java中的適配器原理解析

    這篇文章主要介紹了Java中的適配器原理解析,當(dāng)實(shí)現(xiàn)接口時,為了使所用的類中只實(shí)現(xiàn)需要的方法,使代碼更加簡潔,可以定義一個抽象類實(shí)現(xiàn)接口,將所需要的方法定義為 抽象方法,然后讓類繼承此抽象方法即可,需要的朋友可以參考下
    2023-11-11
  • Spring的事務(wù)控制實(shí)現(xiàn)方法

    Spring的事務(wù)控制實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Spring的事務(wù)控制實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Hibernate映射解析之關(guān)聯(lián)映射詳解

    Hibernate映射解析之關(guān)聯(lián)映射詳解

    所謂關(guān)聯(lián)映射就是將關(guān)聯(lián)關(guān)系映射到數(shù)據(jù)庫里,在對象模型中就是一個或多個引用。下面這篇文章詳細(xì)的給大家介紹了Hibernate映射解析之關(guān)聯(lián)映射的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • SpringBoot中condition注解的使用方式

    SpringBoot中condition注解的使用方式

    這篇文章主要介紹了SpringBoot中condition注解的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

井陉县| 光泽县| 西林县| 广河县| 定陶县| 崇明县| 工布江达县| 永泰县| 高州市| 太仆寺旗| 平利县| 渝北区| 黄浦区| 静海县| 樟树市| 双辽市| 龙川县| 安仁县| 罗平县| 杂多县| 巴楚县| 察雅县| 洪江市| 绵竹市| 城固县| 山阳县| 平凉市| 泽州县| 扎兰屯市| 图们市| 洞头县| 乐昌市| 土默特左旗| 左权县| 习水县| 沧州市| 黑龙江省| 镇沅| 凭祥市| 新巴尔虎右旗| 昔阳县|