天天看點

支付寶接口之條碼支付

支付寶幾口之條碼支付,公司最近要開一家店鋪,收銀系統要自己來開發,因為配套的還有app,作為程式要,這下就苦逼了吧!自己用java寫可視化界面就算了,還要去調用支付寶的支付接口和微信的支付接口,唉,沒辦法,下面就關于條碼支付做一個記錄吧!

第一步:作為程式員,肯定直接去看api,看到第一步,就知道要去注冊一個企業賬号,當然要填寫企業的資訊(企業為的法人資訊、營業執照,對公賬戶資訊(收錢)什麼的..)

支付寶接口之條碼支付
第二部:注冊成功之後,實名認證也做了(這裡需要1到2天),當然繼續研究支付寶的開發文檔咯,按文檔走,建立一個應用,我的應用叫“大頭”,因為“測試應用”,支付寶典型不會讓你通過的...
支付寶接口之條碼支付
支付寶接口之條碼支付

建立完了之後在你的應用清單裡面就會有了,不過這時候是開發狀态,在開發狀态,他的接口隻能在沙箱環境中使用,是以本人二話不說,直接上線,于是就有了下面的“菜叔叔”這個應用了,因為那個沙箱環境我去配過,沒有成功,而且周末還罷工,是以果斷放棄,

在這裡我說一下,上線之前,需要把你用的條碼支付的功能加上去,如下圖:

支付寶接口之條碼支付

在功能裡面是“當面付”,上線的時候需要,如果用于app,需要填寫app的資料,比如安卓要填寫安卓的應用簽名和應用報名,蘋果的要填寫一個BxxxID,在開發的時候,這個id可以統一的,安卓這邊的應用簽名與應用包名我在下面補充。

這些都做完了之後,ok,我們接下來要配置秘鑰,一般情況,這裡配置不好,條碼支付都會報簽名錯誤,而且還無頭緒,因為你明明是按照文檔走的,但是就是跑不通,我最開始的秘鑰是下載下傳的的支付寶提供的windows的秘鑰生成工具,按照文檔走,用的是2048的,java版(PKCS8)的,後來一炮程式的時候就出問題,總是報簽名錯誤:

  1. Caused by: java.security.InvalidKeyException: IOException : DER input, Integer tag error  
  2.     at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:344)  
  3.     at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:350)  
  4.     at sun.security.rsa.RSAPrivateCrtKeyImpl.<init>(RSAPrivateCrtKeyImpl.java:74)  
  5.     at sun.security.rsa.RSAPrivateCrtKeyImpl.newKey(RSAPrivateCrtKeyImpl.java:58)  
  6.     at sun.security.rsa.RSAKeyFactory.generatePrivate(RSAKeyFactory.java:299)  
  7.     at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:196)  
  8.     ... 3 more  

上網去搜了,才發現,唉,還是用openssl 工具靠譜,于是去網上下載下傳了一個windows 64位的openssl 工具,下面會附上該工具的下載下傳位址,如果是32位的朋友,就麻煩自己找一下咯!

下載下傳好了,按照文檔走,支付寶把指令寫錯了,該死,又不行

支付寶接口之條碼支付

這次又上網去搜,在谷歌上找到了正确解法,如下:

下載下傳openSSL工具:AMD64-Win64OpenSSL-0_9_8g.zip

随便解壓到哪個目錄下,在該目錄的位址欄輸入cmd:

進入指令提示符,依次輸入一下指令:

1.openssl genrsa -out rsa_private_key.pem 1024

2.openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 

3.openssl pkcs8 -topk8 -nocrypt -inform PEM -in rsa_private_key.pem -outform PEM outform  

注:非java程式設計,第3步就可以省略哈,如果是java,則需要轉換,轉換之後生成的資料記得copy儲存到你的記事本檔案或者其他,我是直接copy到我生成的那個私鑰的檔案裡的..)

将這3步執行完了之後,你回到你的openssl 的解壓路徑下,會看到2個檔案,如下所示:

支付寶接口之條碼支付

ok,這時候就開始去配置你的 應用的應用環境了,主要是網關和回調位址,以及秘鑰,上面我主要講的秘鑰,我先講秘鑰配置好,至于網關和回調位址下面說,在配置秘鑰的時候又2中選擇RSA和RSA2

支付寶接口之條碼支付

 在這裡我一開始選擇的支付寶推薦的RSA2,用它工具生成的秘鑰,不管用,但是用上面的指令生成的秘鑰又隻是針對RSA的(我試着把1024改成了2048,發現還是不行),于是就沒有關RSA2了,果斷用的RSA了,是以看起來我好想2個都配置了秘鑰,但是我使用的卻是RSA:

支付寶接口之條碼支付
支付寶接口之條碼支付

 完成之後就會生成支付寶公鑰了,這2個在代碼中都會用到,到這裡,你的秘鑰配置就結束了,下面講一下網關的配置,這裡主要是友善支付寶和我們的程式互動

支付寶接口之條碼支付

這裡的網關和授權回調位址,我感覺好像沒什麼影響,下次可以試一下不配置這個有沒有關系,可能是還沒有研究好支付寶的接口文檔,還不太清楚這裡的網關和授權回調位址的含義,會繼續去研究的。

好了,到這裡大家都知道直接去下載下傳demo運作了吧,demo裡也說了隻要把自己的資料更換上去就可以了(pid,appid,秘鑰等等),在這裡我要說一下填寫秘鑰的時候,如果是java編,要用之前轉碼之後的那串資料,如下:

支付寶接口之條碼支付

還有一點給大家提示一下,很多使用者不知道pid在哪裡查,打開這個網址就可以查詢了:https://e.alipay.com,登入後,選擇簽約管理;

進去之後就就可查詢了pid了。