如今, 網上大多數的支付方式無非就是支付寶, 微信, 因此, 學會用支付寶和微信提供的支付接口已成爲必然.java
先進入官網 這裏linux
登陸以後, 進入進入個人開放平臺
使用沙箱工具進行調試
若是沒有項目請建立
web
在這裏, 咱們須要用到的參數就幾個api
genrsa -out app_private_key.pem 1024 #生成私鑰 pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem #Java開發者須要將私鑰轉換成PKCS8格式 rsa -in app_private_key.pem -pubout -out app_public_key.pem #生成公鑰 exit #退出OpenSSL程序
這裏1024表明生成的是RSA祕鑰, 若是你是2048的話, 那麼生成的將是RSA2祕鑰.tomcat
命令執行完成以後, 你將會在目錄下看到如下3個文件:
app_private_key.pem
, app_private_key_pkcs8.pem
, app_public_key.pem
bash
若是你開發的是JAVA應用程序, 那麼你只須要app_public_key.pem
和app_private_key_pkcs8.pem
若是你是PHP, .NET .., 或者其它開發者的話, 你只須要app_public_key.pem
和app_public_key.pem
服務器
祕鑰咱們已經生成好了, 緊接着, 來將剛生成的祕鑰上傳到沙箱工具中, 將app_public_key.pem
去掉頭部和尾部, 並將中間的換行符去掉以後, 直接提交上傳
服務器就會幫咱們自動生成支付寶的公鑰
左邊使咱們的應用公鑰, 右邊使咱們的支付寶公鑰, 注意個人是RSA加密方式, 若是你是RSA2加密方式, 請在RSA的上面上傳.微信
在下面下載支付寶沙箱環境app
app
下載官方demo示例: 這裏
選擇Java版本dom
下載完成以後, 解壓, 打開eclipse, 將解壓後的項目工程引入
TradePayDemo
和TradePaySDK
, 這裏咱們只看TradePayDemo
在src目錄下打開zfbinfo.properties
配置文件, 咱們須要對裏面的配置作修改:
這裏面, 咱們須要修改的有7個參數
app_private_key_pkcs8.pem
將其去頭去尾, 而後刪除中間的換行符進入Main.java, 運行main方法
出現Success表明成功, 注意, 由於沙箱環境會在星期天到星期一進行維護, 因此有可能訪問失敗, 最好換個時間點測試.
這裏的TradePayDemo
是個web項目, 你默認導入的是一個java工程, 因此你須要將它轉換成Dynamic Web project工程, 在項目上右鍵 -> properties -> 輸入project facets
按照上面的方法將它轉換成web工程
可是, 又會發現一個新問題, TradePayDemo
項目在部署到tomcat的時候, 會報404錯誤, 緣由是發佈到tomcat上的項目沒有jsp頁面
WebContent文件夾是咱們把java工程強行轉換成web工程時出現的, 而WebRoot文件夾纔是咱們jsp頁面存放的文件夾, tomcat默認導入的是WebContent這個文件夾, 因此咱們須要指定一下, 該導入的是WebRoot文件夾而不是WebContent.
在項目上 右鍵 -> properties -> 輸入dep
這裏是部署到tomcat時, 要部署全部的文件夾, 咱們將原來的WebContent修改成WebRoot, 從新部署一下, 問題解決.
訪問 http://localhost:8080/TradePayDemo/
點擊第二個, 當面付2.0, 二維碼支付
隨意輸入, 點擊確認按鈕後, 跳轉到二維碼支付頁面, 打開手機上下載好的支付寶沙盒app
成功支付0.01元~, 已經被支付過的二維碼不可重複支付, 這個二維碼就已經失效了
這個test_trade_precreate
方法就是咱們二維碼當面付的執行方法
在這一行, 有一個被註釋的方法, 這個方法能夠將二維碼保存到本地
ZxingUtils.getQRCodeImge(response.getQrCode(), 256, filePath); // 咱們只須要修改第3個參數, 也就是二維碼在本地的保存路徑
在實際開發中, 咱們只須要將這個項目下的全部java文件和jar包複製到你的項目中去, 經過Main對象調用這個test_trade_precreate
方法就能夠了.
test_trade_precreate()
方法默認是不接受參數的, 因此你須要手動加一個String類型的參數, 表明的是圖片的路徑, 而後修改test_trade_precreate()
方法以後, main函數會報錯, 由於在main函數中調用了test_trade_precreate()
方法, 咱們只須要將那一行代碼註釋便可以上測試皆是在沙盒測試環境中進行測試, 若是須要實現真正的商戶收付款功能, 請參見官網上的教程