我本來是想直接講Android支付這一塊的,包括支付寶,微信,其他第三方整合支付等,但是微信開放平台他對我的賬号做了限制,所有我今天就先把重心放在支付寶的支付上,也算是寫得盡可能詳細些吧,畢竟是第三方的SDK,隻要我們耐心的閱讀文檔和開發引導,這個其實不是很難的,我也是沒有用過支付寶的支付,但是我相信,你看完這篇部落格,也會對他了如指掌的,好的,我們正文開始
1.登入官網

建立應用
建立成果之後有很多的選項包括需要你上傳
這些先不管,我們這個時候可以看到已經拿到了APPID: 2017062807585767,這樣我們就可以繼續下一步的準備了
3.簽約
大部分的功能需要簽約才能使用,很遺憾,我這個個體戶就不行了
4.配置密鑰
配置秘鑰是支付這一環節很重要的因素,也是分了兩個步驟,生成秘鑰和配置秘鑰,這裡使用的RAS非對稱加密
<a href="https://docs.open.alipay.com/291/105971">生成RSA秘鑰</a>
我們按照文檔上來,首先是下載下傳工具了,這裡有win和mac兩個位址,我是win,下載下傳下來是這個樣子的
我們按照圖中的配置拿到了公鑰和私鑰
那我們可以配置了,我們找到項目詳情
然後這裡是兩種方式,我們選擇的是RSA方式麼其實哪種方式都是可以的
到這裡,這個也配置好了
5.SDK 下載下傳
這個壓縮包下載下傳下來什麼都有,要找到Android的部分
我們現在就開始來把jar內建進去,支付寶給我們提供的就是一個jar,我們放進我們的工程裡面去
并且在我們的app/build.gradle裡配置一下
這樣Jar就內建好了,然後配置一下清單檔案
并且添權重限
如大于等于Android6.0,還需要動态申請下權限
如果你的項目需要混淆,需要添加混淆規則
嗯,可以說得上是比較簡單的,我們繼續
其實支付寶的調用還是比較簡單的,我們來看一下我的調用方式
可以看到我們并沒有多少代碼,調用起來
但是還是提示有錯誤,我們來看一下他的傳回值
這是因為我們這個應用并沒有去簽約功能,所有并沒有這個權限,好的,但是起碼可以看出我們已經可以調用支援包的支付了,那我們繼續來了解他的功能吧
首先我們看下他提供的OrderInfoUtil2_0這個工具類
而我們一開始就需要建構訂單參數清單,就是這個方法
這個方法我們來解讀一下吧,他其實就是建構一個Map的鍵值對,都有哪些内容呢
app_id(key)
biz_content(内容)
charset(編碼)
method(方法)
sign_type(簽名類型)
timestamp(時間戳)
version(版本)
這個demo裡面可能都是寫死了,但是如果我們真的要在實際應用中開發支付的話,這裡要填寫正确,我們主要關心的有方法和簽名類型還有版本這三個
方法有幾個類型,要注意一下
其次就是簽名方式了,有兩種,RSA和RSA2
最後就是版本,版本可以通過PayTask去擷取
而關于biz_content,就需要你們自己去定義了,我們來看下全部的參數說明
當我們拿到map之後就可以轉換成一個string作為請求資訊了,可以看到我們使用的是這個方法
他的本質就是拼接出最後的訂單資訊,如圖
好的,現在訂單詳情已經有了我們就可以把訂單加密了
這裡的加密主要還是用到了SignUtils
而SignUtils則啟動了Base64
這些你都可以在我寫的demo裡擷取到的,我們繼續分析就是了,當加密成功之後他會傳回一個sign的字元串給我,這就是加密資訊,然後通過 訂單資訊 & 加密訂單這種公式就拼接出商品資訊
好的,我們的下單需要在異步中操作,也就是我們所見到的Runnable
在這裡他同樣的是建構一個PayTask 區調用payV2,裡面的參數就是訂單資訊和一個boolean值,具體參數可以參考
好的,當我們拿到結果後通過Handler回到UI線程
這裡其實PayResult隻是把結果幾個關鍵資訊提取出來了
好的,事實上在實際開發中,要做的準備工作并不隻是這麼點,畢竟涉及到支付這個敏感話題,我這邊也隻是個人商戶,沒辦法給大家展示正确的結果了,可能有些疏漏,但是大體就是這樣,比微信稍微要簡單點,我們下次細聊下微信支付,我們感覺去注冊個賬号去~~~
對文章有興趣的可以關注一下我的微信公衆号或者QQ群