Unity快速接入支付宝sdk; Android&IOS

本文使用的是调起app支付,而且使用的请求参数及其格式校正,已经在后端完成

本文使用的是调起app支付,而且使用的请求参数及其格式校正,已经在后端完成

本文使用的是调起app支付,而且使用的请求参数及其格式校正,已经在后端完成

sdk版本为v15.5.5,androidStudio版本为2.3.2 后续简称as

去官网上下载带有demo的sdk:https://docs.open.alipay.com/54/104509/

Android:

本文借鉴:https://www.jianshu.com/p/86b275da600e

使用as打开这个文件夹

打开完毕后as出现错误,自行百度解决

 

之后切换到android视图打开这个脚本并且删掉继承类

 

接着注释掉onCreate函数,并将h5Pay函数里的startActivity(intent);注释掉

并在脚本里添加以下脚本

private Activity _unityActivity;

	Activity getActivity(){
		if(null == _unityActivity) {
			try {
				Class<?> classtype = Class.forName("com.unity3d.player.UnityPlayer");
				Activity activity = (Activity) classtype.getDeclaredField("currentActivity").get(classtype);
				_unityActivity = activity;
			} catch (ClassNotFoundException e) {

			} catch (IllegalAccessException e) {

			} catch (NoSuchFieldException e) {

			}
		}
		return _unityActivity;
	}

之后脚本此类出现的error里类似

PayDemoActivity.this

this

换成getActivity(),顺利的话此类中是没有error了,如果有就百度吧
 

 

然后修改payV2函数

我们的支付回调是信任后端的,如果你想本地传入你可以新增此函数并在  break前调用他

boolean callUnity(String gameObjectName, String functionName, String args){
		try {
			Class<?> classtype = Class.forName("com.unity3d.player.UnityPlayer");
			Method method =classtype.getMethod("UnitySendMessage", String.class,String.class,String.class);
			method.invoke(classtype,gameObjectName,functionName,args);
			return true;
		} catch (ClassNotFoundException e) {

		} catch (NoSuchMethodException e) {

		} catch (IllegalAccessException e) {

		} catch (InvocationTargetException e) {

		}
		return false;
	}

 

 

之后打开它,并修改成如图

 

 

之后打开AndroidManifest.xml,并将红框中的删除

 

如果你此时的项目中已经有了xml,需要注意这个

android:minSdkVersion="**"
android:targetSdkVersion="**"

最好保持一致,否则基本在调起支付Activity后你app就闪退了 

 

之后点击rebuild或者buildAPK

等待build完成后,将此aar包导入到unity Plugins/Android/libs文件下

 

 

之后在unity中去调用

 private AndroidJavaObject currentActivity_Ali_ = null;
    private AndroidJavaObject currentActivity_Ali
    {
        get
        {
            if (currentActivity_Ali_ == null)
            {
                currentActivity_Ali_ = new AndroidJavaObject("com.alipay.sdk.demo.PayDemoActivity");
            }
            return currentActivity_Ali_;
        }
    }
    void CallPaty(string param)
    {
        currentActivity_Ali.Call("payV2", param);
    }

 

至此就可以进行打开app并进行支付。

 

 

 




 


IOS:https://blog.csdn.net/lxj7533621/article/details/51952688?locationNum=2&fps=1

对ios不熟悉,大部分都是抄的这位大佬,只是版本稍微不同,修改了一些地方

 

打开sdk压缩文件夹,并将下面几个文件放入unity内

编写oc,新建一个pay_oc.m,并写入以下内容

#import <Foundation/Foundation.h>
#import "APOrderInfo.h"
#import "APRSASigner.h"
#import <AlipaySDK/AlipaySDK.h>

@implementation APViewController


@end

#if defined (__cplusplus)
extern "C"
{
#endif
#pragma mark   ==============点击订单模拟支付行为==============
    void iospay(const char *orderString )
    {
        //应用注册scheme,在Info.plist定义URL types
        NSString *appScheme = @"ali";
        NSString *orderStr = [NSString stringWithUTF8String:orderString];
        if (orderString != nil) {
            
            [[AlipaySDK defaultService] payOrder:orderStr fromScheme:appScheme callback:^(NSDictionary *resultDic) {
                NSLog(@"reslut = %@",resultDic);
            }];
        }
    }
    
#if defined (__cplusplus)
}
#endif

并这个脚本也放在ios文件夹内并设置如下并点击apply

编写c#侧

 [DllImport("__Internal")]
    private static extern void iospay(string str);
    void TmpPay(string param)
    {
        iospay(param);
    }

之后打包出来在xocode进行后续编译操作,这里使用的是xcode9,大概

xcode的一些基本设置就不讲了

将Enable Bitcode设置为no project和target都要设置

接着添加库,需要参考官方:https://docs.open.alipay.com/204/105295/

 

 

接着添加头文件路径,project和target都要添加,用""引起来,注意中英,他不会提示你,但是会编译不过,就像这样我找了要半个小时

 

之后需要在info.plst添加urlType,自行去上面链接去官方查看,比我说的详细

之后就可以打包出来就可以使用了。

 

 


  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值