支付寶接口之條碼支付

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

第一步:做爲程序員,確定直接去看api,看到第一步,就知道要去註冊一個企業帳號,固然要填寫企業的信息(企業爲的法人信息、營業執照,對公帳戶信息(收錢)什麼的..)程序員

 

第二部:註冊成功以後,實名認證也作了(這裏須要1到2天),固然繼續研究支付寶的開發文檔咯,按文檔走,建立一個應用,個人應用叫「大頭」,由於「測試應用」,支付寶典型不會讓你經過的...編程

建立完了以後在你的應用列表裏面就會有了,不過這時候是開發狀態,在開發狀態,他的接口只能在沙箱環境中使用,因此本人二話不說,直接上線,因而就有了下面的「菜叔叔」這個應用了,由於那個沙箱環境我去配過,沒有成功,並且週末還罷工,因此果斷放棄,windows

在這裏我說一下,上線以前,須要把你用的條碼支付的功能加上去,以下圖:api

在功能裏面是「當面付」,上線的時候須要,若是用於app,須要填寫app的資料,好比安卓要填寫安卓的應用簽名和應用報名,蘋果的要填寫一個BxxxID,在開發的時候,這個id能夠統一的,安卓這邊的應用簽名與應用包名我在下面補充。微信

 

這些都作完了以後,ok,咱們接下來要配置祕鑰,通常狀況,這裏配置很差,條碼支付都會報簽名錯誤,並且還無頭緒,由於你明明是按照文檔走的,可是就是跑不通,我最開始的祕鑰是下載的的支付寶提供的windows的祕鑰生成工具,按照文檔走,用的是2048的,java版(PKCS8)的,後來一炮程序的時候就出問題,老是報簽名錯誤:app

  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位的朋友,就麻煩本身找一下咯!工具

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

此次又上網去搜,在谷歌上找到了正確解法,以下:spa

下載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了。

相關文章
相關標籤/搜索