一 支付宝
首先 按照 App支付iOS集成流程详解 一步一步的不知客户端。
第一个坑就在它的第一部里,文档给的讲的很模糊,先看它是怎么说的:
步骤1:启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中。
AlipaySDK.bundle
AlipaySDK.framework
在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖:
其中,需要注意的是:
如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;
如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib(如下图)。
问题 就在第一个 AlipaySDK.bundle AlipaySDK.framework 其实我们需要的文件不止这两个整体需要的文件 应该是👇的
其中 openssl 和util 是在官方Demo里面的记得这两个文件拖到自己的项目里 openssl 文件必须添加在 Header Search Parths 里面 不然就会报错 就会出现这个问题 解决办法如下
点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search”搜索,对“Header Search Paths”增加头文件路径:$(SRCROOT)/项目名称。如果头文件信息已增加,可不必再增加。
这里 我就多说一句,就是我们要创建一个 根目录下的文件并且 在我们的Xcode里也有的文件,xcode8 后好像和之前创建的方式不一样了。可能我不知道吧,我把我自己创建的方式在这里说一下,如果 你有更好的方式,可以回复我。
首先 在根目录下面创建一个文件夹 然后拖到你项目里的xcode里 此时还有弹窗
选择如图所示的方式即可创建一个实体文集,具体叫法是不是这个 我也不知清除,我就是这样理解的,如果有误 ,请给予指正,谢谢。
好了 现在回到支付宝这里 。
步骤2:在需要调用AlipaySDK的文件中,增加头文件引用。
其实不是这个样子的 ,在#import "AppDelegate.h" 里面由于需要回调 所以我们只需要导入
#import<AlipaySDK/AlipaySDK.h>头文件。并且写上回调函数
一个是8.0 版本的 一个是 9.0以后版本的 回调微信 也是在这里写 这里我用通知来通知 支付成功还是失败
还有就是在你用到支付的地方 需要这样的添加类
个人感觉现在 加密和签名都在后天处理 所以对于我们钱前台 所做的事情就少了 。
这是官方给的 针对Demo的运行注意
2、如果遇到运行后报错,类似于以下提示信息:
Cannot find interface declaration for 'NSObject', superclass of 'Base64'
那么需要打开报错了的文件,增加头文件。
#import <Foundation/Foundation.h>
还有就是 如果你可以支付 并且支付还成功,但就是不会自动返回你的APP 就说明你没有在URL Types添加 你的APP的唯一标示,所以它找不到回调的APP 所以 你需要添加唯一标示 ,一定要自己写唯一标示,因为 以前大家都用的官方DEMO 就忽略这个问题基本上用的都输官方的唯一标示 叫什么alipaydemo ,所以这样就会稀奇古怪的返回到其他软件里,如果出现这个问题就是唯一标示的问题。具体的步骤如下
点击项目名称,点击“Info”选项卡,在“URL Types”选项中,点击“+”,在“URL Schemes”中输入“唯一标示”例如(WYBS)。
代码的参数就是这个 NSString *appScheme = @“WYBS”;。
还有就是 服务器繁忙这些问题,一般就是签名的问题 和 参数的问题,多认真检查是可以解决的 。好了 支付宝就到这里了。
二 微信支付
1、项目设置APPID
2、注册APPID
[WXApi registerApp:@"wxd930ea5d5a258f4f" withDescription:@"demo 2.0"];
3、调起支付
PayReq *request = [[[PayReq alloc] init] autorelease];
request.partnerId = @"10000100";
request.prepayId= @"1101000000140415649af9fc314aa427";
request.package = @"Sign=WXPay";
request.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";
request.timeStamp= @"1397527777";
request.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";
[WXApi sendReq:request];
4、支付结果回调
和支付吧一样上面已经说过了 不过这里需要添加一个方法
同样的用通知做的处理。
还有很多问题 只能见到在解决然后在记录下来。