Unity Android 接入支付寶支付

寫在前邊

  • 之前沒有接觸過AndroidStudio相關(guān)內(nèi)容,第一次實(shí)現(xiàn)該功能時(shí)踩了很多坑查了很多資料。經(jīng)測(cè)試該方案可行,現(xiàn)記錄下流程
  • 需了解unity基本UI事件綁定和Android打包
  • 不了解AndroidStuido也可,本文對(duì)小白友好

環(huán)境版本

  • MacOS系統(tǒng)
  • AndroidStudio


    image.png
  • Unity:2020.3.48f1c1
  • 支付寶支付SDK:alipaysdk-noutdid-15.8.06.211122165332.aar

目的

  • 通過Unity和Android通信。在Unity中調(diào)用Android寫好的類實(shí)現(xiàn)支付寶支付功能

AndroidStudio端接入支付寶SDK

  • 支付寶SDK下載地址:鏈接: https://pan.baidu.com/s/1WdnZEl_BUhdbbv2z5auVLg?pwd=dc7d 提取碼: dc7d
    1. 創(chuàng)建安卓工程


      image.png

      image.png
    1. 創(chuàng)建Module


      image.png

      image.png
    1. 導(dǎo)入U(xiǎn)nity類包
    • ① Unity類包路徑(找自己對(duì)應(yīng)的unity版本目錄下的類包,我的是2020.3.48f1):
      /Applications/Unity/Hub/Editor/2020.3.48f1c1/PlaybackEngines/AndroidPlayer/Variations/mono/Development/classes.jar
    • ② 將 classes.jar 包復(fù)制到第二步創(chuàng)建的module下的libs目錄


      image.png
    • ③ 選中 classes.jar 右鍵選擇 “Add as library”


      image.png
    • ④ 修改module下build.gradle配置(classes.jar不要打包到aar中,會(huì)和unity中的類沖突)


      image.png
compileOnly files('libs/classes.jar')
image.png
    1. 導(dǎo)入支付寶支付SDK
    • ① 支付寶SDK下載地址:鏈接: https://pan.baidu.com/s/1WdnZEl_BUhdbbv2z5auVLg?pwd=dc7d 提取碼: dc7d
    • ② 將 alipaysdk-noutdid-15.8.06.211122165332.aar 包復(fù)制到第二步創(chuàng)建的module下的libs目錄


      image.png
    • ③ 修改 module 下build.gradle配置
compileOnly fileTree(include: ['*.aar'], dir: 'libs')
image.png

- ④ 將 alipaysdk-noutdid-15.8.06.211122165332.aar 包復(fù)制到app下的libs目錄


image.png

- ⑤ 修改 app 下build.gradle配置,在dependencies中添加以下內(nèi)容(與module中配置一致)

compileOnly fileTree(include: ['*.aar'], dir: 'libs')
image.png
    1. 在module中編寫支付類
    • ① 導(dǎo)入U(xiǎn)nityPlayerActivity類,路徑(按照自己的Unity版本目錄查找):/Applications/Unity/Hub/Editor/2020.3.48f1c1/PlaybackEngines/AndroidPlayer/Source/com/unity3d/player/UnityPlayerActivity.java
    • ② 復(fù)制UnityPlayerActivity.java 到module下 src/main/com.xxx.xxx(包名)/ 目錄下


      image.png
    • ③ 下載 PayResult.java (package需改為自己的包名)到module下 src/main/com.xxx.xxx(包名)/ 目錄下
      鏈接: https://pan.baidu.com/s/1hSWKwB9st2v0tYQhMCZ_OQ?pwd=ig66 提取碼: ig66
      image.png
    • ④ 下載 MainActivity.java (package需改為自己的包名)到module下 src/main/com.xxx.xxx(包名)/ 目錄下 鏈接: https://pan.baidu.com/s/18477hRy61nZadMtr6aqf2Q?pwd=f2ge 提取碼: f2ge
      image.png
    1. 刪除 module中 src/main/res 目錄下所有文件


      image.png
    1. 修改 module下 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<application
    android:allowBackup="true"
    android:supportsRtl="true">
    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>
    1. 導(dǎo)出aar至Unity項(xiàng)目中
    • ① 生成aar


      image.png
    • ② 解壓aar文件,得到其中的 AndroidManifest.xml 文件,復(fù)制AndroidManifest.xml 文件到Unity項(xiàng)目 Assets/Plugins/Android 目錄下
    • ③ 復(fù)制 aar文件到Unity項(xiàng)目 Assets/Plugins/Android 目錄下(目錄不存時(shí)需手動(dòng)創(chuàng)建)
    • ④ 復(fù)制 module中l(wèi)ibs目錄下alipaysdk-noutdid-15.8.06.211122165332.aar文件到Unity項(xiàng)目 Assets/Plugins/Android/libs/ 目錄下


      image.png

      image.png

Unity中編寫腳本

  • 在場(chǎng)景中創(chuàng)建button并綁定以下方法(綁定方式自行百度,主要演示如何調(diào)用aar)
public void pay()
{
    string orderStr = ""; // todo:api請(qǐng)求服務(wù)端獲取到的訂單串
    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    string result = jo.Call<string>("testPay", orderStr);
    Debug.Log(result);

}

Unity打包到android測(cè)試

image.png
  • 為了調(diào)試方便,可勾選一下內(nèi)容,連接真機(jī)后 構(gòu)建運(yùn)行 ,在AndroidStudio Logcat中查看log


    image.png

    image.png

最后,祝好。調(diào)試一次過。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容