本文使用的是调起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,自行去上面链接去官方查看,比我说的详细
之后就可以打包出来就可以使用了。