工具

微信 支付宝 简单的App 支付流程 和问题

2017-02-24  本文已影响58人  火之夜工作室

一   支付宝   

首先 按照 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、支付结果回调

和支付吧一样上面已经说过了  不过这里需要添加一个方法

同样的用通知做的处理。

还有很多问题 只能见到在解决然后在记录下来。

上一篇 下一篇

猜你喜欢

热点阅读