IOS集成微信支付或者支付宝支付功能小结

jopen 8年前

第一,你需要有微信开发平台的开发者账号,(网址https://open.weixin.qq.com/,或者自行百度“微信open”,支付宝支付同理,下同),并将你要集成的应用在你的开发者账号中注册,并获取支付权限(一般这步不需要程序员考虑,都是客户自己获取的,你只需要知道,没有支付权限的应用,不可以集成支付)。



第二,注册完你的应用,通过审核之后,你会获得开放平台给你发放属于这个应用的AppID和AppSecret



第三,在开发平台的资源中心(或者叫文档中心,SDK中心什么的),下载IOS的SDK(文档也可以下载下来方便查阅)。我这次的Demo是之前集成过ShareSDK的分享和第三方登录,所以直接用的ShareSDK中的微信SDK。

(ps,这里之前网友有过用ShareSDK中的微信SDK不支持支付功能,我这里是可以支付的,应该是Mob集成好了,如果你下载的不能用的话,可以去微信官方下载官方的SDK,10M左右的样子,把ShareSDK中的微信SDK替换掉,替换的时候要注意,不能只替换文件,要看好工程中Target选项卡里的文件路径是否删除了旧文件路径,否则的话可能旧文件路径会覆盖新文件路径,导致替换没有效果或者崩溃。)

第四,将下载好的SDK拷贝到工程文件夹中,然后再工程中AddFilesTo“你的工程”,



(这里注意,Add的时候要勾选CopyItemsIfNeeed,否则可能会出现找不到路径这种烦人的错误)

第五,配置你的工程。

1.添加系统依赖库,(这里我用了ShareSDK,所以也连Share必须的系统库也一并添加了),方法—点击工程名—Target—BuildPhases—Link Binary With Libraries—点击+号搜索你需要的系统库,并添加



SystemConfiguration.framework

QuartzCore.framework

CoreTelephony.framework

libicucore.dylib(ps,这里因为可能你的Xcode是Xcode7,所以这里的.dylib可能会在你的系统库里显示.tbd)正常添加就好

libz.1.2.5.dylib

Security.framework

JavaScriptCore.framework

libstdc++.dylib

CoreText.framework

libsqlite3.dylib

ImageIO.framework (shareSDK新浪必须依赖库)

AdSupport.framework(shareSDK新浪必须依赖库)

2.配置工程的URL Types中的URL Schemes,

这个URL Schemes是用来调起第三方客户端支付或分享或授权之后回到你的程序的标识

方法:点击工程名—Target—Info—URL Types—点击+号,在URL Schemes栏中填入你在第二步中获取到的APPID(图见上一步,自己找一下info选项卡)

3.如果是Xcode7需要在Info.Plist文件中加入字段LSApplicationQueriesSchemes,为Array类型,然后在里面添加两个小选项,分别为weixin和wechat(Xcode7http请求适配Xcode7的问ti请自行百度)



第六、开始写代码了!

1.将Demo中的WXPay文件夹拷贝到工程文件夹中,然后Add到工程目录

2.在AppDelegate.h中#import相关头文件,在AppDelegate.m文件中的application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法中添加[WXApi registerApp:APP_ID withDescription:@"demo 2.0"];(这里的APPID就是你第二步获取的APPID,一般建议写成宏。@“demo2.0”不需要修改),我的demo里在这个方法里还注册了shareSDK,希望大家不要有疑惑。

3.在AppDelegate.m中加入这两个方法:

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

具体方法里的代码如何书写请看Demo中的注释。

4.配置完AppDelegate文件之后,向你的工程中拷贝入Demo中的UIViewController+WeChatAndAliPayMethod类目,并Add到工程中,

在你需要用到支付的页面引用这个类目。(详情请见Demo的ViewController页面方法和代码,仔细观看注释和理解代码之后微信支付的集成就完成了)

PS.支付宝集成和微信支付集成大同小异,如果你集成了微信支付,你会发现支付宝集成更简单。

第一步,将支付宝支付的SDK拷贝到工程文件夹中,然后Add到工程目录,

(ps。这里注意一下,我demo里ThirdParty下的AliPay那些文件都是需要你在这一步拷贝的东西。)



尤其是openssl和Util还有那两个.a文件。因为支付宝的开发文档写的实在是不怎么样,乱七八糟的,都没有直接给你要添加的SDK包,这些东西都是从官方的demo里抽出来的。具体你们可以下载官方demo看一看。

第二步、Add完SDK包之后,引入所需的系统库。调用UIViewController+WeChatAndAliPayMethod这个类目中的支付宝支付方法即可。(注意看我Demo中的代码和注释)


PS。如果你在集成支付宝的时候可能会遇到<openssl/xxx.h>not found的错误,(你平时用别的SDK的时候也可能会遇到),这一般情况是Xcode找不到这些文件的路径。在这里,你可以在Targets中的BuildSettings中的Header Search Paths选项卡中添加openssl的路径。(这里注意,你可以直接将文件夹直接拖进去,但是这时候你会发现路径是带双引号””的,一定要删除左右的双引号才可以)

重点:Demo里有两个存放关键几个宏的文件,payRequsesrHandler.h和AliPayNeedDEF.h,这两个文件里面的内容你们要自己填写自己的数据。具体如何获取这些数据我的注释写的很明白了。仔细看一下就好。

还有,你们在调用我的支付类目中的方法的同时,要写一个监听,来通知你是否支付成功。这个在我的代码注释里写的很清楚,这里就不多赘述了。


来自: http://my.oschina.net/daniels/blog/598589