HarmonyOS集成支付寶支付sdk
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
引言
隨著HarmonyOS的快速發(fā)展,支付寶也推出了支持HarmonyOS版本的SDK,具體的操作可以看支付寶官方文檔,地址為https://opendocs.alipay.com/open/01ysmx

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

點(diǎn)擊紅色區(qū)域標(biāo)注的“沙箱”,進(jìn)入之后的界面如下

這里有時(shí)會(huì)報(bào)個(gè)數(shù)據(jù)出錯(cuò),沙箱環(huán)境不是很穩(wěn)定,多刷新幾次,阿里會(huì)定期進(jìn)行維護(hù),實(shí)在不行過段時(shí)間再操作。


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


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


選擇密鑰格式,選PKCS1格式生成的私鑰為非Java開發(fā)語言使用;選PKCS8格式生成的私鑰為Java開發(fā)語言使
選擇密鑰長(zhǎng)度,生成2048位的RSA私鑰。
③設(shè)置RSA2


點(diǎn)擊之后,如下




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


掃碼下載即可。


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

下載的官方demo代碼結(jié)構(gòu)如下

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

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

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

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

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

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

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

如果去除掉EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)這行代碼,那么是可以調(diào)起來正式版本的支付寶的,那么此時(shí)就需要正式版的APPID和密鑰,這個(gè)是需要營業(yè)執(zhí)照去認(rèn)證的,由于本人沒有申請(qǐng)商用版本的密鑰,就沒有經(jīng)過后續(xù)測(cè)試了。
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)