Unity同时接入微信和支付宝支付 IOS篇
Unity端
Unity 场景内新建游戏物体GamePay(重要),新建脚本PayController(脚本名随意)脚本挂载在此游戏物体上,上代码
新建支付宝和微信的支付调用方法,方法会在Xcode内完成,之后会实现。
支付宝传入参数为服务器同学统一下单后生成的订单信息
微信传入参数同样为服务器同学统一下单后拿到的订单信息,不过需要自己通过Json解析来解析出来对应的属性
什么时候调用就看大家自己的了,只要给参数就行。建议创建两个按钮,分别绑定两方的支付
[DllImport("__Internal")]
private static extern void Alipay(string orderinfo);[DllImport("__Internal")]
private static extern void WeChatPay(string appid,string partnerid,string prepayid,string noncster,string time,string sign);
导入支付宝和微信的SDk,献上官方下载链接
解压导入到Unity内,看图
导入成功后可能发现少一个PayController文件,没关系,可以忽略,后面讲到。可以打包XCode工程了。
XCode端
新建 PayController.m文件
看下图:
先完善代码,引入头文件,实现微信的回调,拉起支付,如果不明白查看官方的文档
支付宝IOS开发文档 微信开发文档 微信文档真的是......一坨....
#import <Foundation/Foundation.h>
#import <AlipaySDK/AlipaySDK.h>
#import "APOrderInfo.h"
#import "APRSASigner.h"
#import "WXApi.h"
#import "UnityAppController.h"
@interface PayController:UnityAppController<WXApiDelegate>
@end
@implementation PayController- (void)onResp:(BaseResp *)resp {
if([resp isKindOfClass:[PayResp class]]){
PayResp *response=(PayResp*)resp;
switch (response.errCode) {
case WXSuccess:
NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode);
UnitySendMessage("GamePay", "ShowResult", "Ios回调成功");
break;
default:
NSLog(@"错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
break;
}
}else {
}
}- (void)onReq:(BaseReq *)req {
}@end
#if defined(_cplusplus)
extern "C"
{
#endif
void Alipay(const char *orderInfo){
NSString *appScheme = @"自定义";
NSString *orderString =[NSString stringWithUTF8String:orderInfo] ;
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
UnitySendMessage("GamePay", "ShowResult", "Ios回调成功");
}];
}
void WeChatPay(char* appid,char* partnerid,char* prepayid,char* noncster,char* time,char* sign)
{
[WXApi registerApp:[NSString stringWithUTF8String:appid]];
PayReq *request=[[PayReq alloc]init];
request.openID=[NSString stringWithUTF8String:appid];
request.partnerId=[NSString stringWithUTF8String:partnerid];
request.prepayId=[NSString stringWithUTF8String:prepayid];
[email protected]"Sign=WXPay";
request.nonceStr=[NSString stringWithUTF8String:noncster];
NSMutableString *stampmp=[[NSString stringWithUTF8String:time] mutableCopy];
request.timeStamp=stampmp.intValue;
request.sign=[NSString stringWithUTF8String:sign];
[WXApi sendReq:request];
}
#if defined(_cplusplus)
}
#endif
添加对应依赖库,支付宝的就不说的,文档里很清楚,附上链接,说下微信,看图
静态类库:
SystemConfiguration.framework
libz.tbd
libsqlite3.0.tbd
libc++.tbd
CoreTelephony.framework
类库依赖完成后,添加URL Type,(如果没有添加,支付过后不会调回APP),看图
最后查看下头文件的路径依赖(设置参照支付宝的官方文档),下图
打包测试。论坛上看了很多前辈的文章才接入成功,谢谢前辈们,如果不懂,可以加我的微信探讨下S-yu12
参考前辈链接:https://fengyu.name/article/443 很详细的介绍,下篇会出Android端的接入