Unity同时接入微信和支付宝支付 IOS篇

Unity端

  Unity 场景内新建游戏物体GamePay(重要),新建脚本PayController(脚本名随意)脚本挂载在此游戏物体上,上代码

  新建支付宝和微信的支付调用方法,方法会在Xcode内完成,之后会实现。

  支付宝传入参数为服务器同学统一下单后生成的订单信息

  微信传入参数同样为服务器同学统一下单后拿到的订单信息,不过需要自己通过Json解析来解析出来对应的属性

  什么时候调用就看大家自己的了,只要给参数就行。建议创建两个按钮,分别绑定两方的支付

  Unity同时接入微信和支付宝支付 IOS篇    [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,献上官方下载链接

支付宝SDK&Domo下载    微信SDK&Domo下载

解压导入到Unity内,看图

Unity同时接入微信和支付宝支付 IOS篇Unity同时接入微信和支付宝支付 IOS篇

导入成功后可能发现少一个PayController文件,没关系,可以忽略,后面讲到。可以打包XCode工程了。

XCode端

新建 PayController.m文件

看下图:

Unity同时接入微信和支付宝支付 IOS篇

先完善代码,引入头文件,实现微信的回调,拉起支付,如果不明白查看官方的文档

支付宝IOS开发文档   微信开发文档    微信文档真的是......一坨....

Unity同时接入微信和支付宝支付 IOS篇

Unity同时接入微信和支付宝支付 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

添加对应依赖库,支付宝的就不说的,文档里很清楚,附上链接,说下微信,看图Unity同时接入微信和支付宝支付 IOS篇

静态类库:

SystemConfiguration.framework
libz.tbd
libsqlite3.0.tbd
libc++.tbd
CoreTelephony.framework

类库依赖完成后,添加URL Type,(如果没有添加,支付过后不会调回APP),看图

Unity同时接入微信和支付宝支付 IOS篇

最后查看下头文件的路径依赖(设置参照支付宝的官方文档),下图

Unity同时接入微信和支付宝支付 IOS篇

打包测试。论坛上看了很多前辈的文章才接入成功,谢谢前辈们,如果不懂,可以加我的微信探讨下S-yu12 

参考前辈链接:https://fengyu.name/article/443   很详细的介绍,下篇会出Android端的接入