Unity Android接入支付宝支付
创始人
2024-11-10 16:38:55
0

1、在Android Studio中创建一个新工程

选择No Activity

选项如下

Unity的Minimum API Level如下图所示

点击Finish,如下图,第一步结束

2、创建Module

点击Android切换到Project

切换完如下图所示

右键MyApplication,创建一个Module

选项如下,点击Finish

查看build.gradle,确保compileSdk和targetSdk和Unity的Target API Level保持一致

3、导入Unity相关文件和库

首先,导入classes.jar

该文件在D:\Program Files\Unity\Hub\Editor\2021.3.37f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes里

即“你的Unity.exe所在文件夹”/../“对应Editor版本”/../下,其中2021.3.37f1c1是我所用的Editor版本,il2cpp、Release对应Unity的配置,如下图,如果Unity里的Scripting Backend是Mono,则选mono文件夹下的

将这个classes.jar复制到mylibrary的libs文件夹下,并且Add As Library,如下图

Add As Library之后,你会在build.gradle里看到

implementation files('libs\\classes.jar')

这样classes.jar就导入完成了。

然后,导入UnityPlayerActivity.java

该文件在D:\Program Files\Unity\Hub\Editor\2021.3.37f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Source,直接将com文件夹复制到mylibrary/src/main/java文件夹下,如下图

至此,导入unity文件结束。

4、接入支付宝支付

1、去Alipay的maven地址下载最新的支付sdk,https://mvnrepository.com/artifact/com.alipay.sdk/alipaysdk-android

2、将下载好的文件alipaysdk-android-15.8.17.aar,复制到mylibrary的libs文件夹下,这次不用Add As Library了,因为aar没有这个选项,用另一种方式引入aar,导入后如下图所示

3、引入alipaysdk-android-15.8.17.aar,操作如下,操作完之后就能使用支付宝支付的api了。

compileOnly fileTree(include: ['*.jar','*.aar'], dir: 'libs')

4、编写支付代码

在mylibrary/src/main/java/com.xxx.xxxx下创建一个java文件,我这里取名为MainActivity

MainActivity.java代码如下

package com.xxx.xxxx;  import android.os.Bundle; import android.util.Log;  import com.alipay.sdk.app.PayTask; import com.unity3d.player.UnityPlayer; import com.unity3d.player.UnityPlayerActivity;  public class MainActivity extends UnityPlayerActivity {     @Override     protected void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);     }      //  支付宝支付     public void AliPay(final String orderInfo, String callBackObjectName, String CallBackFuncName)     {         Log.i("Unity", " >>> enter alipay native");         Runnable payRun = new Runnable() {             @Override             public  void run() {                 PayTask task=new PayTask(MainActivity.this);                 String result= task.pay(orderInfo, true);                 Log.i("Unity", "onALIPayFinish, result = " + result);                 // 这里可以自己添加Unity回调接收                 UnityPlayer.UnitySendMessage(callBackObjectName, CallBackFuncName, result);             }         };         Thread payThread = new Thread(payRun);         payThread.start();     } }

记得修改pachage的包名为你的包名

5、修改AndroidManifest.xml,如下

                                                                                                                                                               

基本就是把Unity里的AndroidManiFest的内容拷贝过来,添加支付宝所需的

                     

然后修改 application下的activity 的name为com.xxx.xxxx.MainActivity,也就是你的包名加上刚才创建的java文件名。

如果下面这块代码显示红字报错的话,在main下创建

android:label="@string/app_name"

填写File name为strings,直接点击ok

创建完后如下图,res和java文件夹同级。


在strings.xml里添加代码

com.unity3d.player

保存后,AndroidManifest.xml的android:label="@string/app_name"就不会报错了。

5、打包出aar

选中mylibrary,点击Build-->Make Module 

Build完成后,右键mylibrary,Reload from Disk,就能看到多出了一个build文件夹

然后点击右侧栏的Gradle,点击build下的assemble,会在刚才的outputs/aar下生成一个release版本的aar,这就是我们所需的aar了。

6、将aar导入Unity

将mylibrary-release.aar复制一份出来进行修改,用压缩软件右键打开aar文件,导入到Unity之前需要对压缩包进行相关操作。

a、删除libs里的classes.jar文件;

b、删除classes.jar里的com/unity3d/player目录下的UnityPlayerActivity.class;

c、右键编辑AndroidManifest.xml文件,删除以下代码并保存

然后用这个压缩包的AndroidManifest.xml的内容替换Unity里的AndroidManifest.xml。

最后,将修改过的mylibrary-release.aar和之前下载的alipaysdk-android-15.8.17.aar一起复制到Unity项目的Plugins/Android下

至此导入完毕

7、Unity调用支付宝支付

调用代码如下currentActivity.Call里的第一个参数就是Android Studio项目里MainActivity.java里的方法名,payinfo是该方法的第一个参数,UnityAndroidConnector是第二个参数,即响应Android回调的脚本名,AliPayCallback是第三个参数,即脚本里的方法名,有两个参数内容可由你自己决定

 public void Buy(string payinfo)  {     //固定不变     AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");     //固定不变     AndroidJavaObject currentActivity = unityPlayer.GetStatic("currentActivity");     //这里的第一个参数是Java函数名,第三个参数是当前脚本挂载物体的名称,一定要对!!!!!!     //最后一个参数是回调的Unity3D中的函数名     currentActivity.Call("AliPay", payinfo, "UnityAndroidConnector", "AliPayCallback");  }

请确保Unity运行时场景里有名字为响应Android回调的脚本名的组件,并且挂载着该响应Android回调的脚本,脚本里有public的方法

    public class UnityAndroidConnector : MonoSingleton     {         public void Init()         {          }          public void AliPayCallback(string msg)         {             UtilLog.Log("AliPayCallback:" + msg);         }     }

相关内容

热门资讯

第九分钟了解!wepoker智... 第九分钟了解!wepoker智能辅助插件(透视)外挂透视辅助第九(其实是有挂);1、下载好wepok...
一分钟了解!川南休闲辅助,闲逸... 一分钟了解!川南休闲辅助,闲逸辅助插件(详细辅助普及教程);是一款可以让一直输的玩家,快速成为一个“...
第2分钟了解!拱趴大菠萝万能辅... 第2分钟了解!拱趴大菠萝万能辅助器(透视)外挂透视辅助第2(其实有挂);1.拱趴大菠萝万能辅助器 a...
专业讨论!赣牌圈小程序辅助器,... 专业讨论!赣牌圈小程序辅助器,河洛杠次怎么提高胜率(详细辅助扑克教程)(1)专业讨论!赣牌圈小程序辅...
一分钟了解!wepoker底牌... 一分钟了解!wepoker底牌透视脚本(透视)外挂透视辅助一(竟然是真的有挂);1、wepoker底...
一分钟教你!中至余干有挂吗,广... 一分钟教你!中至余干有挂吗,广西老友辅助(详细辅助攻略教程)中至余干有挂吗辅助器中分为三种模型:中至...
教程攻略!爱来510k辅助器,... 教程攻略!爱来510k辅助器,福建兄弟十三水辅助工具(详细辅助可靠技巧)您好,福建兄弟十三水辅助工具...
第4分钟了解!哈糖大菠萝破解器... 第4分钟了解!哈糖大菠萝破解器(透视)外挂透视辅助第4(都是是有挂)1、哈糖大菠萝破解器ai辅助优化...
十分钟了解!wepoker高级... 十分钟了解!wepoker高级辅助(透视)外挂透视辅助十(确实有挂)1、wepoker高级辅助系统规...
实测揭晓!陕麻圈脚本辅助,闲逸... 实测揭晓!陕麻圈脚本辅助,闲逸辅助app下载(详细辅助透明挂教程)是一款可以让一直输的玩家,快速成为...