中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java后臺實現支付寶對賬功能的示例代碼

發布時間:2020-10-01 23:07:15 來源:腳本之家 閱讀:384 作者:Ouyzc 欄目:編程語言

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

現在我們來講一下支付寶對賬的功能,關于與支付寶交互的關鍵代碼,其實支付寶的API已經講得很清楚,如果親們想直接看支付寶API,點擊 支付寶對賬API ,當然我在文章也會進行說明解釋。

實現支付寶自動對賬功能

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

java后臺實現支付寶對賬功能的示例代碼

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

1.先是調用支付寶的對賬查詢接口,獲取賬單文件下載地址URL,關于一些支付寶的公共參數,在上一篇我已經封裝好,下面代碼是針對對賬的實現過程,傳入關鍵的2個業務參數.公共參數支付寶SDK已經封裝好。

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

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

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

 try {
 //實例化客戶端(參數:網關地址、商戶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();//創建API對應的request類
 request.setBizContent("{" +
 "\"bill_type\":\"trade\"," +
 "\"bill_date\":\"2018-03-14\"}"); //設置業務參數
 AlipayDataDataserviceBillDownloadurlQueryResponse response = alipayClient.execute(request);
 String billDownloadUrl=response.getBillDownloadUrl();
 logger.info("==================支付寶返回文件下載地址:"+billDownloadUrl);
 this.downBill(billDownloadUrl); //調用下載文件方法

 } catch (AlipayApiException e) {

  // TODO Auto-generated catch block
  e.printStackTrace();
 }//通過alipayClient調用API,獲得對應的response類
     //根據response中的結果繼續業務邏輯處理
 }

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步之后,我們就可以下載每日賬單文件了

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

java后臺實現支付寶對賬功能的示例代碼

解壓之后:

java后臺實現支付寶對賬功能的示例代碼

打開excel(匯總)

是這樣的:

java后臺實現支付寶對賬功能的示例代碼

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

確定之后,會把過程也補上。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大田县| 翼城县| 汝阳县| 溧阳市| 项城市| 桐城市| 谢通门县| 剑阁县| 阳城县| 维西| 乐业县| 临泉县| 花莲市| 平江县| 呈贡县| 五原县| 淅川县| 灌阳县| 仙居县| 海南省| 交口县| 黑龙江省| 布拖县| 保定市| 通榆县| 台北县| 中西区| 手游| 广宁县| 巨野县| 金秀| 马山县| 乌拉特后旗| 榆树市| 原平市| 定日县| 松江区| 新竹市| 德惠市| 利津县| 荔波县|