轉載請标明出處:http://blog.csdn.net/u014084504/article/details/42104035
公司最近要在項目中加入購物車功能,提到購物車那就自然少不了支付寶的身影啦。下面我們就來探讨一下如何在Android快速內建支付寶SDK。
支付寶的SDK目前已經更新到了2.0版本,這次的SDK相比上個版本的SDK來說,代碼更佳簡潔了,內建起來更加的友善快捷。
摘要:準備工作
如果是在公司開發,可以讓相關部門和支付寶簽約,申請一個賣家支付寶賬号,可能要稽核3-5個工作日,稽核通過後支付寶會以郵件或者電話的方式提醒你的,是以不要擔心什麼時候才能稽核通過。
1:下載下傳支付寶官方SDK
https://b.alipay.com/order/techService.htm
打開上面連結,下載下傳下面畫紅線部分的SDK,不要下載下傳錯了,下面是列出了支付寶SDK支援支付的各種方式
下載下傳完成解壓之後會得到如下的結構目錄
打開移動支付接口SDK2.0标準版,找到DEMO下面的用戶端demo下面的支付寶移動支付Android版,解壓之後的目錄結構如下
alipay-sdk-common中是我們要使用到的jar檔案,alipay_demo是官方提供的demo(該demo并不能直接運作,要自己重新配置)
2:在我們強大的eclipse中建立一個項目,然後在清單檔案中加入如下授權
在将我們上面alipay-sdk-common中的三個jar檔案拷貝到我們項目下的libs目錄下,結構圖如下
下面我們就可以用代碼實作啦
3:代碼實作
這裡直接使用官方提供的布局檔案啦,(*^__^*) 嘻嘻……
點選支付時 我們就直接調用支付寶相關接口進行支付,點選檢查賬戶時就是檢查目前環境下是否有可用的支付寶賬号,可有可無。
上面貼出來的代碼就是調用支付寶的核心代碼,我們在依次來看下其中的各個方法
第83行的getOrderInfo
該方法中有兩個參數,我們這裡要說明一下,第一個是第157行的合作者身份ID(PARTNER)這個參數是我們在支付寶賬号稽核通過之後登陸支付寶後點選點選擷取PID/key
之後,支付寶給我們配置設定的
https://b.alipay.com/order/techService.htm 如下圖紅色部分
第二個就是第160行的賣家支付寶賬号,這個沒啥說的,就是我們申請的支付寶賬号。
第三個是第170行的伺服器異步通知頁面路徑,首先我們用支付寶支付之後,支付寶會傳回給我們兩個通知,一個是同步的,就是我們點選支付後支付寶直接回報給我們用戶端的資訊,我們可以直接拿到,根據回報的結果可以初步判定該次交易是否成功,第二個就是伺服器異步的通知,這個異步的通知是支付寶的伺服器端發給我們伺服器端的資訊,我們在用戶端是直接擷取不了的,那支付寶的伺服器怎麼知道我們伺服器的路徑呢,那就是這參數的作用了,我們給支付寶伺服器一個路徑,它就會在訂單狀态改變的時候給我們伺服器端一個回報,告訴伺服器這次交易的狀态,如果伺服器結果判定該次交易成功了,就必須返給支付寶伺服器一個success,要不伺服器會一直給我們異步通知,因為它不知道該次交易是否完成了(一般情況下25小時内8次通知,頻率一般是2m 10m 10m 1h 2h 6h 15h),我們一般會在收到異步通知時,對訂單的狀态進行更新。
還有一個就是162行的getOutTradeNo方法,這個方式就是生成一個唯一的訂單号
講完了這個方法裡面的參數,我們回過頭來看下我們的支付方法,在支付方法第84行我們可以看到
String sign = sign(orderInfo);
那麼這個sign方法裡又幹了些什麼呢,下面我們就來看下
可以看出這個方法非常簡單,就一行代碼,那這個SignUtils又是什麼呢 ,這個是支付寶SDK中提供給我們的一個工具類,可以在官方的demo中找到,代碼我就不貼出來了
我們可以看到這個方法中有一個RSA_PRIVATE 這個是什麼東西呢,這個東西就是我們生成的商戶的私鑰,下面我們來看下該如何生成他呢
我們将下載下傳好的SDK解壓後在DEMO檔案下會看到openssl檔案夾,打開它目錄下面的bin檔案夾,然後運作openssl.exe檔案,如下圖
輸入“genrsa -out rsa_private_key.pem 1024”指令,回車後,在目前bin檔案目錄中會新增一個rsa_private_key.pem檔案,其檔案為原始的商戶私鑰(請妥善儲存該檔案,PHP開發語言中需要使用該檔案),以下為指令正确執行截圖:
輸入“rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem”指令回車後,在目前bin檔案目錄中會新增一個rsa_public_key.pem檔案,其檔案為原始的商戶公鑰(請妥善儲存該檔案,PHP開發語言中需要使用該檔案),以下為指令正确執行截圖:
輸入指令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt”并回車,生成PKCS8編碼的私鑰
右鍵點選openssl視窗上邊邊緣,選擇“編輯→标記”,選中要複制的文字
以上白色部分的内容就是我們上面說的RSA_PRIVATE 這個參數的值,注意着個值在eclipse中時不能有換行,不能有空格,必須一行顯示完全
下面還有非常重要的一步就是要将上傳商戶公鑰,我們要将上面生成的商戶公鑰上傳,
上傳位址需要登入
點選檢視密鑰,因為我這裡已經上傳過了,是以是檢視,
然後點選儲存,我這裡是修改,然後在點選檢視支付寶公鑰,這裡的公鑰就是我們程式裡的RSA_PUBLIC
上面兩句直接在activity中聲明即可。
支付主方法中第86行的getSignType方法如下
點選檢查賬戶執行下面邏輯
然後我們定義一個handler來處理請求
好了到這裡Android接入支付寶就差不多了,如果那有寫的不清楚的可以讨論一下(累死人啊
)
,