1. 程式人生 > >Mr.Fang:工行銀企互聯製作PDF電子回單的大致步驟、利用開發者版得到PDF電子回單的.NET、Java示例

Mr.Fang:工行銀企互聯製作PDF電子回單的大致步驟、利用開發者版得到PDF電子回單的.NET、Java示例

通過工行銀企互聯自己製作PDF電子回單,分兩大步:

一、獲取電子回單的各個要素;

二、製作PDF文件。

步驟一:涉及銀企互聯兩個介面,明細查詢介面和電子回單下載介面。明細查詢介面可能涉及到翻頁(NextTag),電子回單下載介面涉及資料簽名。和NetSafeClient前置機兩個埠都要打交道。

步驟二:方法很多,我也只是略知一二。有些是免費的方法;有些如果是正規的商業控制元件,需要購買版權。我的開發者版使用的是商業控制元件的破解版,僅供學習、研究之用,PDF檔案上有版權提示資訊。

細節上,還涉及幣種程式碼、單位,比如:

001、RMB/CNY、¥代表人民幣

012、GBP、£表示英磅

014、USD、US$表示美元

027、JPY、J¥代表日元

……

製作PDF文件的困難程度,看具體的方法了。有些方法很原始,一橫一豎、一筆一劃都需要座標定位,你需要考慮字型、字型大小、是否需要主動分成多行填充……

如果是在測試環境中,在一個不太穩定的環境中除錯程式碼,更加困難,說多了都是淚……

我的程式是.NET寫的,通過WebService實現了跨語言。開發者版,幾乎所有語言通用,只要很簡單的程式碼就能得到PDF回單檔案。當然,這個版本其實對使用者(開發者)而言是個黑盒子,遮蔽了製作PDF電子回單的細節,只需要很少的程式碼就能獲取PDF檔案。

之前單獨的部落格寫了PHP和Python的程式碼,下面把.NET和Java的也單獨說一下(其實介紹開發者版本的部落格裡面有)。

.NET:HttpPostTest函式見開發者版本的帖子,其實網上很多,隨手查一下都有,就是http post的方法。

  static void Main(string[] args)
  {
   Console.WriteLine(DateTime.Now.ToString());
   string result=HttpPostTest("http://127.0.0.1:1398/WebService.asmx/PDF_Receipt","acct=0200316809011601657&date=20181002&time=2018-09-28-09.43.10.989117&amount=888800");
   int p1=result.IndexOf("|");
   int p2=result.IndexOf("</string>");
   if(p1>0 && p2>0 && result[p1-1]=='1'){
   	B64String2File(result.Substring(p1+1,p2-p1-1),"csc_code2.pdf");
   	Console.WriteLine("csc_code2.pdf saved!");
   }else Console.WriteLine(result);
   Console.WriteLine(DateTime.Now.ToString());
   
  }
static void B64String2File(string B64Str,string fileName)
{
            byte[] bb= Convert.FromBase64String(B64Str);
            FileStream fs = new FileStream(fileName, FileMode.Create);
            fs.Write(bb, 0, bb.Length);
            fs.Close();
}

Java:sendPost函式見開發者版本的帖子,其實網上很多,隨手查一下都有,就是http post的方法。

public static void main(String[] args)throws Exception
{
 Base64.Decoder decoder = Base64.getDecoder();
 Base64.Encoder encoder = Base64.getEncoder();

String postPDF=sendPost("http://10.0.0.5:1398/WebService.asmx/PDF_Receipt",
"acct=1102020109000009078&date=20181201&time=2018-11-11-21.30.21.992004&amount=135");

int p1=postPDF.indexOf("|");
int p2=postPDF.indexOf("</string>",p1);
if(postPDF.charAt(p1-1)=='0')
{
System.out.println(postPDF);	
}
else
{
	File outfile=new File("demo.pdf");
	DataOutputStream fw = new DataOutputStream(new FileOutputStream(outfile));
    fw.write(decoder.decode(postPDF.substring(p1+1,p2)));
    fw.close();
	System.out.println("got it!");	
}


}

相關推薦

Mr.Fang工行銀企互聯製作PDF電子回單大致步驟利用開發者得到PDF電子回單的.NETJava示例

通過工行銀企互聯自己製作PDF電子回單,分兩大步: 一、獲取電子回單的各個要素; 二、製作PDF文件。 步驟一:涉及銀企互聯兩個介面,明細查詢介面和電子回單下載介面。明細查詢介面可能涉及到翻頁(NextTag),電子回單下載介面涉及資料簽名。和NetSafeClient

Mr.Fang銀企互聯(NC模式)開發者——製作PDF回單的Python程式碼

業務:工行銀企互聯(NC模式)推廣版 軟體:我自己編寫的開發者版 程式設計程式碼演示:Python 不需要太多程式碼,就能通過開發者版製作一個PDF電子回單。 網上找了點python的程

工行銀企互聯(NC模式)中介軟體開發模式

非官方產品,客戶應優先根據官方開發手冊自行開發。 開發者免責:開發者力求正確,也經過測試,但無法避免潛在的錯誤。任何軟體都可能存在錯誤。 客戶使用銀企互聯,應遵從謹小慎微的原則,從查詢業務、小金額業務著手,必要時採用銀企互聯提交指令、企業網銀授權的模式。 本WebSer

電子設計從零開始(第2)》pdf電子書附網盤連結+讀書方法論總結

有效率的讀書方法論 如果我們不是遣詞造句,不是需要對作者的語句一句句斟酌,也不是需要體會優美的語言的話,那麼快速看完一本書並能夠了解書的重要內容,讓書中的內容能夠幫助自己無疑是我們的最終目的。 1.確定讀書的目的,特別是“商務類”書籍。你為什麼會買它?你想從它這裡得到什

Mr.Fang出品銀企互聯(NC模式)開發者版本(.NET WebService中介軟體,JavaPHPPython等跨語言測試通過)

本開發者版本特點: ERP系統只需要通過HTTP協議將引數和傳送內容一次性POST到WebService指定頁面,接收應答即可。開發者不需要關注簽名、提交頁面格式、報文頭引數、壓縮模式等,實現了跨平臺、跨語言的簡單開發,技術門檻降至極低。 支援壓縮模式提交大批量指令:rd

零基礎學編程零基礎學HTML+CSS (第3) 完整pdf掃描

nbsp OS 實戰案例 tar 網站 介紹 HR 學習 多媒體 零基礎學編程:零基礎學HTML+CSS(第3版)站在零基礎學習的角度,以通俗易懂的語言,結合豐富多彩的實例,來幫助初學者學習和掌握HTML語言和CSS樣式設計。本書列舉了大量的小型實例、綜合實例,並包含3

Python資料分析基礎教程NumPy學習指南(第2pdf 下載

罕見的NumPy中文入門教程,Python資料分析優選從基礎的知識講起,手把手帶你進入大資料探勘領域囊括大量具有啟發性與實用價值的實戰案例。 內容簡介   《圖靈程式設計叢書;Python資料分析基礎教程:NumPy學習指南(第2版)》是NumPy的入門教程,主要介紹NumPy以及相關

HTML+CSS第五課使用Dreamweaver工具製作網頁詳細解讀HTML頭部標籤網頁頭部標籤的SEO設定

知識點:Dreamweaver工具的使用、HTML頭部標籤解讀、網頁頭部標籤的SEO設定 1、Dreamweaver工具            Adobe Dreamweaver,簡稱“DW”,中文名稱 "夢想編織者",最初為美

丘成桐數理與人文(官方完整版PDF下載)(公號回覆“丘成桐數學”下載PDF典型資料,歡迎轉發讚賞支援科普)

丘成桐:數理與人文(官方完整版PDF下載)(公號回覆“丘成桐數學”下載PDF典型資料,歡迎轉發、讚賞支援科普) 丘成桐 科學Sciences 今天 科學Sciences導讀:本文選自《數學的藝術》首篇《數理與人文》(丘成桐)。鑑於網上流傳的各種根據現場演講整理的文字多有疏漏,高等教育出版

壽司快賣實現遊戲主流程--製作壽司和客戶顯示動畫特效

上一節我們搭建了遊戲的基本框架。遊戲介面被分為若干個板塊,其中一個板塊顯示了各種製作壽司的材料,它的目的是用於玩家根據資訊組裝各種壽司,本節我們進入遊戲的主流程設計階段,這節我們要完成的是如何將讓玩家將各種材料組合成相應的壽司。 首先我們先新增一些輔助函式,在gamescenecom

Docker入門系列之三如何將dockerfile製作好的映象釋出到Docker hub上

這個系列的前兩篇文章,我們已經把我們的應用成功地在Docker裡通過nginx運行了起來,並且用dockerfile裡製作好了一個映象。 Docker入門系列之一:在一個Docker容器裡執行指定的web應用 Docker入門系列之二:使用dockerfile製作包含指定web應用的映象 本

【小白看的Java教程】第三十七章,Mr.R和Mr.WJava中的IO【薦】

File類(掌握) File課理解為檔案和資料夾(目錄),用於表示磁碟中某個檔案或資料夾的路徑。該類包含了檔案的建立、刪除、重新命名、判斷是否存在等方法。 只能設定和獲取檔案本身的資訊(檔案大小,是否可讀),不能設定和獲取檔案裡面的內容。 Unix: 嚴

盤點12種動畫製作工具讓遊戲角色栩栩如生

 轉自 http://chanye.ptbus.com/299041/  這是一份頂尖遊戲動畫技術指南。   無縫銜接的角色動畫是確保遊戲代入感的重要因素,為了能幫助開發者創造出最逼真的動畫角色,我們盤點了十二種動畫製作工具。如果您有其它優秀的工具推薦,請告訴我們,我們會進一步完善這份

《TCP IP詳解卷協議 原書第2pdf附網盤下載連結+(附一個菜鳥的java學習之路)

技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的

量化投資以Python為工具(高清PDF

入門 集合 vpd 掌握 href aid 解決 繼承 與操作 量化投資:以Python為工具(高清版)PDF百度網盤鏈接:https://pan.baidu.com/s/1Q4vxfCv9XqiqdBjX26GGKg 提取碼:r609 復制這段內容後打開百度網盤手機App

數據結構與算法Python語言描述(高清PDF

初始化 python對象 數據類型 技術 記錄 ffffff 分析 類定義 序表 數據結構與算法:Python語言描述(高清版)PDF百度網盤鏈接:https://pan.baidu.com/s/1k_dIW1Oea1Kbld29RFjcxQ 提取碼:oa81 復制這段內容

html5前端教程如何使用CSS3製作長投影

​在flat design(扁平化的設計)中,Long Shadow (長投影)被看著屢試不爽的設計技能。比如下面這張,非常經典的長投影設計: 攝影師選擇長投影通常是給圖片帶來戲劇效果, 在自然界中,長投影發生在黃昏的時候,太陽接近地平線時,水平地面上的物體俯瞰就會

Canvas飛機大戰 -- 遊戲製作

Canvas:飛機大戰 最開始我們要初始化資訊,我們有五個狀態:遊戲封面,載入狀態,執行狀態,遊戲暫停,遊戲結束。 我們還需要  得分--score,生命--life。 var START = 1;//初始狀態 var LOADING = 2;//載入狀態 var RUNNING = 3

Tensorflow實戰Google深度學習框架(高清PDF

Tensorflow:實戰Google深度學習框架(高清版)PDF百度網盤連結:https://pan.baidu.com/s/1GrKn451PECK0wupXcQDZ3g 提取碼:tw9k 複製這段內容後開啟百度網盤手機App,操作更方便哦哦內容簡介 · · · · · · TensorFlow是谷歌20

編寫高質量程式碼改善Python程式的91個建議(高清PDF

編寫高質量程式碼:改善Python程式的91個建議(高清版)PDF百度網盤連結:https://pan.baidu.com/s/1rPdBouMjuAhOm1HZtRLrVQ 提取碼:smh0 複製這段內容後開啟百度網盤手機App,操作更方便哦內容簡介 · · · · · · 在通往“Python技術殿堂”的