美文网首页
Unity Android 接入支付宝支付

Unity Android 接入支付宝支付

作者: artCoding | 来源:发表于2023-12-01 23:20 被阅读0次

    写在前边

    • 之前没有接触过AndroidStudio相关内容,第一次实现该功能时踩了很多坑查了很多资料。经测试该方案可行,现记录下流程
    • 需了解unity基本UI事件绑定和Android打包
    • 不了解AndroidStuido也可,本文对小白友好

    环境版本

    • MacOS系统
    • AndroidStudio


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

    目的

    • 通过Unity和Android通信。在Unity中调用Android写好的类实现支付宝支付功能

    AndroidStudio端接入支付宝SDK

    • 支付宝SDK下载地址:链接: https://pan.baidu.com/s/1WdnZEl_BUhdbbv2z5auVLg?pwd=dc7d 提取码: dc7d
      1. 创建安卓工程


        image.png
        image.png
      1. 创建Module


        image.png
        image.png
      1. 导入Unity类包
      • ① Unity类包路径(找自己对应的unity版本目录下的类包,我的是2020.3.48f1):
        /Applications/Unity/Hub/Editor/2020.3.48f1c1/PlaybackEngines/AndroidPlayer/Variations/mono/Development/classes.jar
      • ② 将 classes.jar 包复制到第二步创建的module下的libs目录


        image.png
      • ③ 选中 classes.jar 右键选择 “Add as library”


        image.png
      • ④ 修改module下build.gradle配置(classes.jar不要打包到aar中,会和unity中的类冲突)


        image.png
    compileOnly files('libs/classes.jar')
    
    image.png
      1. 导入支付宝支付SDK
    compileOnly fileTree(include: ['*.aar'], dir: 'libs')
    
    image.png

    - ④ 将 alipaysdk-noutdid-15.8.06.211122165332.aar 包复制到app下的libs目录


    image.png

    - ⑤ 修改 app 下build.gradle配置,在dependencies中添加以下内容(与module中配置一致)

    compileOnly fileTree(include: ['*.aar'], dir: 'libs')
    
    image.png
      1. 在module中编写支付类
      • ① 导入UnityPlayerActivity类,路径(按照自己的Unity版本目录查找):/Applications/Unity/Hub/Editor/2020.3.48f1c1/PlaybackEngines/AndroidPlayer/Source/com/unity3d/player/UnityPlayerActivity.java
      • ② 复制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. 导出aar至Unity项目中
      • ① 生成aar


        image.png
      • ② 解压aar文件,得到其中的 AndroidManifest.xml 文件,复制AndroidManifest.xml 文件到Unity项目 Assets/Plugins/Android 目录下
      • ③ 复制 aar文件到Unity项目 Assets/Plugins/Android 目录下(目录不存时需手动创建)
      • ④ 复制 module中libs目录下alipaysdk-noutdid-15.8.06.211122165332.aar文件到Unity项目 Assets/Plugins/Android/libs/ 目录下


        image.png
        image.png

    Unity中编写脚本

    • 在场景中创建button并绑定以下方法(绑定方式自行百度,主要演示如何调用aar)
    public void pay()
    {
        string orderStr = ""; // todo:api请求服务端获取到的订单串
        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测试

    image.png
    • 为了调试方便,可勾选一下内容,连接真机后 构建运行 ,在AndroidStudio Logcat中查看log


      image.png
      image.png

    最后,祝好。调试一次过。

    相关文章

      网友评论

          本文标题:Unity Android 接入支付宝支付

          本文链接:https://www.haomeiwen.com/subject/bpzcgdtx.html