美文网首页
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