HarmonyOS集成支付寶支付sdk
引言
隨著HarmonyOS的快速發展,支付寶也推出了支持HarmonyOS版本的SDK,具體的操作可以看支付寶官方文檔,地址為https://opendocs.alipay.com/open/01ysmx

集成第三方SDK是程序員的一個基本必備能力,特別是像支付寶這樣的官方文檔介紹都很明確,看sdk文檔是程序員的基本能力,本篇博客還是會概述下集成基本流程,然后重點梳理其中的問題。
首先訪問支付寶的官方平臺螞蟻金服開放平臺,網址為:https://open.alipay.com/platform/home.htm 。然后用自己的支付寶登錄并認證為開發者,認證的時候要錄入自己的相關個人信息,這里不多說如何認證,簡單的“下一步”傻瓜式操作。接著在平臺首頁依次點擊“文檔中心”進入查閱相關的Android集成的開發文檔,接著下載集成支付寶的SDK和demo。
在進行支付寶接入的時候,需要企業用戶(也就是說需要營業執照,統一社會信用代碼等信息去進行注冊),那么個人開發愛好者就沒法做正式支付寶的開發接入了。但是支付寶后來推出了沙箱模式,一來可以方便項目開發期間進行測試,二來個人用戶也可以熟練下支付寶繼承的操作。非常遺憾的是,目前我在開發的時候發現,鴻蒙版本的sdk并不支持沙箱模式(還不確認是我自己的問題還是官方的問題,官方沒有找到是否支持沙箱的說明),該問題我還在想辦法給阿里和華為進行反饋。
下面以沙箱環境開發進行案例講解
1、登錄開發者平臺進入沙箱頁面(前提是已經完成開發者認證):
https://open.alipay.com/platform/manageHome.htm

點擊紅色區域標注的“沙箱”,進入之后的界面如下

這里有時會報個數據出錯,沙箱環境不是很穩定,多刷新幾次,阿里會定期進行維護,實在不行過段時間再操作。


此時,就可以獲得相應的APPID,商戶ID等信息,此時在沙箱環境下只用配置個RSA秘鑰。
2、RSA2(SHA256)密鑰生成方法
工具下載:
https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=106097&docType=1
①解壓后,WINDOWS版本雙擊文件“RSA簽名驗簽工具.bat”即可運行工具。Mac版本雙擊文件 “RSA簽名驗簽工具.command”即可運行工具。


②生成密鑰:快速生成RSA私鑰公鑰


選擇密鑰格式,選PKCS1格式生成的私鑰為非Java開發語言使用;選PKCS8格式生成的私鑰為Java開發語言使
選擇密鑰長度,生成2048位的RSA私鑰。
③設置RSA2


點擊之后,如下




將之前生成的公鑰復制進來,然后點擊保存即可。
注意:公鑰私鑰不要頻繁用工具生成,每次生成都會不一樣,那么重新生成后請重新進此頁面修改公鑰。公鑰和私鑰是一對,一定要保持一致,后面會在服務端和app中使用到私鑰。
3、下載沙箱版錢包app,支付寶會提供測試賬號,里面有余額。


掃碼下載即可。


在手機上安裝好沙箱版支付寶之后,用上圖中的賬號密碼進行登錄。
4、官方demo下載
下載官方的demo,

下載的官方demo代碼結構如下

導入到DevEco Studio中,然后配置app簽名和密鑰等參數。
5、代碼說明
我并沒有直接使用官方demo,而是自己重新創建了一個工程,然后引入官方demo中的相關核心代碼。我的工程源碼可以在附件中進行下載
(1)導入sdk

添加依賴
- implementation files('libs/alipaysdk-harmony-15.8.01-9adcf86.har')

注意:雖然這里已經引入了libs下的所有har庫,但是如果不單獨再引入支付寶sdk的依賴的話,在編寫代碼的時候會出現api的標紅,并且沒有api的聯想,盡管最后編譯運行不會報錯。
(2)在真機上運行調試,配置簽名信息
如果您希望在鴻蒙真機上運行 Demo,則需要先在 Project 以及 Module 的 build.gradle 中配置調試簽名:

您也可以使用 IDE 自帶的簽名設置界面完成配置,請參考 HarmonyOS 文檔 - 使用真機進行調試 。
調試簽名的獲取流程,請參考 AppGallery 文檔 - 調試 HarmonyOS 應用 。
(3)修改PayDemoActivityC中的APPID和RSA2_PRIVATE
這個APPID就是之前沙箱環境中的那個APPID(如果是正式的商業環境是自己創建的應用APP的APPID),RSA2_PRIVATE就是自己之前用工具生成的私鑰。正式環境中該私鑰一定不要放到app里面,而是通過服務器生成。

(4)按照Android版本支付寶sdk在沙箱環境下的運行做法,還需要添加如下代碼(商業環境千萬不要加)啟用沙箱環境,否則無法調起支付寶沙箱版本錢包

此時問題來了,目前鴻蒙版本sdk,如果加了這句代碼,那么無法調用起來支付寶沙箱版本錢包,也無法調用起來正式版本的支付寶app。而是直接提示報錯,報錯截圖如下

下圖是我在鴻蒙真機上安裝的各個app,快捷支付這個就是我開發的demo,然后安裝了個正式版支付寶app和沙箱版app。

如果去除掉EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)這行代碼,那么是可以調起來正式版本的支付寶的,那么此時就需要正式版的APPID和密鑰,這個是需要營業執照去認證的,由于本人沒有申請商用版本的密鑰,就沒有經過后續測試了。