前段时间接入支付宝sdk在网上找了很多帖子,都不能成功接入支付宝sdk。后面自己研究了下可以成功支付了,发个帖分享一下,方便大家开发,如有错误的地方也请大家指出,谢谢。
开发环境:
unity版本:2019.4.28f1c1
gradle版本 :6.1.1
*** 本篇文章使用的是aar接入方式,官方不推荐使用jar方式接入了 ***
步骤1:
android studio 新建工程,包名与Unity项目包名一样。
步骤2:
安卓工程新建Module , File -> New -> New Module
步骤3:
导入对应Unity对应版本的文件,这两个文件路径在Unity安装路径下,可自行百度。
步骤4:
导入支付宝aar, 本文用的是 alipaysdk-15.8.03.210428205839.aar,这个网上也很多,不要用太久的版本,可以去自行下载。
双击打开新建的Module下的build.gradle(注意是Module下的,不是app下的)添加如下代码,然后Sync 一下项目:
compileOnly fileTree(include: ['*.jar','*.aar'], dir: 'libs')
步骤5:
新建一个MainActivity,代码直接复制粘贴即可(回调)
package 自己的包名.myalipaylib; // 此处需要修改
import android.os.Bundle;
import android.util.Log;
import com.alipay.sdk.app.PayTask;
import com.unity3d.player.UnityPlayer;
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();
}
}
C#端代码
/// <summary> /// 原生调用支付宝支付 /// </summary>
/// <param name="orderInfo"></param>
void ShowALiPay(string orderInfo)
{
Debug.Log("服务器返回 >>>> " + orderInfo); // 此处是后端返回的订单信息
#if UNITY_ANDROID
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("AliPay", orderInfo, "Panel_Pay", "ALiPayResult");
#endif
}
/// <summary>
/// 支付宝 支付回调
/// </summary>
/// <param name="result"></param>
public void ALiPayResult(string result)
{
Debug.Log(" unity 获取支付宝回调>>>> " + result);
}
步骤6:
完成以上步骤后,Sync一下安卓工程,等待Sync成功后,点击右侧Gradle,在点击build
等待build完成后 ,此路径会出现aar
步骤7:(有更新,请阅读完此步骤再操作)
文件管理器打开aar路径,修改后缀为zip,双击打开
再双击打开classes.jar,找到里面有个文件Build.class 删除掉,然后保存,再将zip后缀改回aar
**************** 更新步骤7******************
上面的步骤太麻烦 ,现在优化一下
在新建的模块下的build.gradle加入一下代码 , 打包出来的aar就不会包含BuildConfig文件
android{
.......
.......
buildFeatures{
buildConfig = false
}
........
}
步骤8:
将支付宝aar和上面修改好的aar一并导入Unity工程的Plugins文件夹,发布apk真机运行即可。
**********重要补充:
勾选自定义Main Manifest
Plugins文件夹会出一个AndroidManifest.xml文件,添加以下内容:
如果本文对你有帮助的话,麻烦点个赞哈哈哈