一,在支付宝开放平台下载支付宝SDK(https://openhome.alipay.com/platform/document.htm#down)

二,添加sdk文件到xcode

  1,新建一个aliPaySDK文件夹,提取SDK包中以下文件到此文件夹里,在xcode中添加此文件夹。

  2.在xcode中,点击项目名,选择"target"->"Link Binary With Libraries"添加依赖库。  

  3.编译项目,会出现以下问题:

  1)"Unknown type name ‘NSString‘ "或者"Unknown type name ‘NSData‘ "等不识别常见类的问题。

  

  这是因为缺少Foundation类库和UIKit类库,支付宝Demo中之所以没有出现此错误,是因为在.pch文件中导入过这些类库

  解决办法:只需要在出现错误的文件中导入这些类库即可

  

  2)‘openssl/asn1.h‘ file not found

  

  这是openssl文件夹头文件链接问题,如果openssl文件夹随意拉进项目中,即使添加头文件链接,也可能解决不了此问题,

  这也是问什么一开始就将所需要的文件放到一个新建文件夹中再添加到项目中的原因。

  解决办法:Targets->Build Settings->Header Search Path中添加1中建立的aliPaySDK文件夹的路径(拖拽此文件夹至输入框即可)

  

  3)根据项目需求添加demo中ViewController中的代码 编译后可能会出下面错误:

  "_OBJC_CLASS_$_Product", referenced from: objc-class-ref in ViewController.o

  

  AlipaySDK的demo中将Product的定义写在了ViewControler.h中所致

  

  解决办法:新建Product类,将ViewController中的代码拷贝过去即可。

  

三,添加支付逻辑代码,完成支付过程。

  ViewController.m文件

 1 /*============================================================================*/
2 /*=======================需要填写商户app申请的===================================*/
3 /*============================================================================*/
4 //这里的三个参数是公司和支付宝签约之后得到的,没有这三个参数无法完成支付
5 NSString *partner = @"";
6 NSString *seller = @"";
7 NSString *privateKey = @"";
8 /*============================================================================*/
9 /*============================================================================*/
10 /*============================================================================*/
11
12 //partner和seller获取失败,提示
13 if ([partner length] == 0 ||
14 [seller length] == 0 ||
15 [privateKey length] == 0)
16 {
17 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
18 message:@"缺少partner或者seller或者私钥。"
19 delegate:self
20 cancelButtonTitle:@"确定"
21 otherButtonTitles:nil];
22 [alert show];
23 return;
24 }
25
26 /*
27 *生成订单信息及签名
28 */
29 //将商品信息赋予AlixPayOrder的成员变量
30 Order *order = [[Order alloc] init];
31 order.partner = partner;
32 order.seller = seller;
33 #warning 这里需要填商品信息
34 order.tradeNO = @""; //订单ID(由商家自行制定)
35 order.productName = @"测试商品"; //商品标题
36 order.productDescription = @"这是一个测试商品"; //商品描述
37 order.amount = @"0.01"; //商品价格
38 order.notifyURL = @""; //回调URL 这个URL是在支付之后,支付宝通知后台服务器,使数据同步更新,必须填,不然支付无法成功
39
40 //下面的参数是固定的,不需要改变
41 order.service = @"mobile.securitypay.pay";
42 order.paymentType = @"1";
43 order.inputCharset = @"utf-8";
44 order.itBPay = @"30m";
45 order.showUrl = @"m.alipay.com";
46
47 //应用注册scheme,在AlixPayDemo-Info.plist定义URL types
48 //如果不知道scheme是神马东西,请自行百度
49 NSString *appScheme = @"";
50
51 //将商品信息拼接成字符串
52 NSString *orderSpec = [order description];
53
54 //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
55 id<DataSigner> signer = CreateRSADataSigner(privateKey);
56 NSString *signedString = [signer signString:orderSpec];
57
58 //将签名成功字符串格式化为订单字符串,请严格按照该格式
59 NSString *orderString = nil;
60 if (signedString != nil) {
61 orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
62 orderSpec, signedString, @"RSA"];
63
64
65 [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
66 NSLog(@"使用支付宝的支付结果 %@",resultDic);
67
68 }];
69
70 }

AppDelegate.m

 1 - (BOOL)application:(UIApplication *)application
2 openURL:(NSURL *)url
3 sourceApplication:(NSString *)sourceApplication
4 annotation:(id)annotation {
5
6 //跳转支付宝钱包进行支付,处理支付结果
7 [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
8 NSLog(@"result = %@",resultDic);
9 }];
10
11 return YES;
12 }

以上就是支付宝集成流程和可能遇到的问题。

IOS集成到支付宝的步骤及问题的更多相关文章

  1. iOS集成百度地图方法步骤

    前言:app中的导航功能越来越流行,现在我自己做的项目中也有此需求,做过了后记录下笔记.  由于源代码保密所以这里仅仅提供demo,下面是效果图 一:iOS地图SDK 1.打开 百度地图api链接 i ...

  2. 李洪强iOS开发支付集成之支付宝支付

    iOS开发支付集成之支付宝支付 下载支付宝SDK 首先是开发包下载,还是比较难发现的,网上以前文章中的链接都打不开,我找了好久才找到的.最新的地址在这里(注意的是下载出来的SDK包里面并没有传说中的开 ...

  3. iOS开发之支付宝集成

    项目中要用到支付功能,需要支付宝,微信,银联三大支付,所以打算总结一下,写两篇文章,方便以后的查阅, 大家在做的时候也能稍微参考下,用到的地方避免再次被坑.这是第二篇支付宝集成,第一篇银联支付在这里. ...

  4. iOS开发支付集成之支付宝支付

    项目中要用到支付功能,需要支付宝,微信,银联三大支付,所以打算总结一下,写两篇文章,方便以后的查阅, 大家在做的时候也能稍微参考下,用到的地方避免再次被坑.这是第二篇支付宝集成,第一篇银联支付在这里. ...

  5. iOS集成支付宝

    需要企业和支付宝签约这个是需要审核的[3天左右   以邮件形式告知你] 使用支付宝进行一个完整的支付功能,大致有以下步骤: 1>先与支付宝签约,获得商户ID(partner)和账号ID(sell ...

  6. React Native之支付集成(微信 支付宝)(ios android)

    React Native之支付集成(微信 支付宝)(ios android) 一,需求分析 1.1,app在线充值与提现 二,技术介绍与集成 2.1,微信支付 2.1.1,Android配置 详细配置 ...

  7. iOS移动支付——支付宝支付

    这篇博客总结得很好,我只对在iOS上集成支付宝做简洁的步骤总结. http://www.it165.net/pro/html/201402/9376.html iOS集成支付宝支付的步骤: 准备工作的 ...

  8. iOS 集成Weex入门教程

    前言 自Weex发布伊始, 其口号 "Write Once, Run Everywhere"就吸引了大批前端与客户端程序猿纷纷入坑, 我也不能独善其中. 就我目前所学习Weex的经 ...

  9. 李洪强iOS之集成极光推送三iOS集成指南

    李洪强iOS之集成极光推送三iOS集成指南 SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后.查看最近更新了解最新的SDK更新情况.使用Xcode 6及以上版本可以使用新版Push S ...

随机推荐

  1. freeradius防止用户异常断开无法重新链接上

    freeradius防止用户异常断开无法重新链接上 http://www.cnblogs.com/klobohyz/archive/2012/02/08/2342532.html 编辑default文 ...

  2. swift 动态获取类, 获取命名空间

    在做swift开发中很多时候会动态加载控制器的类, 可以让app更加灵活显示界面信息 一般情况下都是服务器返回显示的控制器类name然后动态显示, 但是服务器返回的类name是string, 怎么转换 ...

  3. Makefile系列之五 :函数

    一.函数的调用语法 函数调用与变量一样,也是以“$”来标识的,其语法如下: $(<function> <arguments>) 或是 ${<function> &l ...

  4. Centos7 安装

    一.先把Centos7的镜像下载到本地 镜像下载网址:http://archive.kernel.org/centos-vault/ (里面有任何需要的版本) 二.启动VMware 1. 创建新的虚拟 ...

  5. web请求响应

    转载自:SanMaoSpace 1.Web开发的定义首先看看微软对Web开发的定义:Web开发是一个指代网页或网站编写过程的广义术语.网页使用 HTML.CSS 和 JavaScript编写.这些页面 ...

  6. 小程序的一个tab切换

    <view class="tab-left" bindtap="tab"> <view class="{{tabArr.curHdI ...

  7. 机器学习方法(七):Kmeans聚类K值如何选,以及数据重抽样方法Bootstrapping

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入.我的博客写一些自己用得到东西,并分享给 ...

  8. hdu 1203(01背包)被初始化坑惨了

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  9. UVa 221 Urban Elevations 城市正视图 离散化初步 无限化有限

    转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 题目大意: 题目传送门:UVa 221 Urban Elevations 给出城市中建筑物的x, ...

  10. ZOJ 3498 Javabeans

    脑筋急转弯. 如果是偶数个,那么第一步可以是$n/2+1$位置开始到$n$都减去$n/2$,后半段就和前半段一样了. 如果是奇数个,那么第一步可以是$(n+1)/2$位置开始到$n$都减去$(n+1) ...