IOS集成到支付宝的步骤及问题
一,在支付宝开放平台下载支付宝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集成到支付宝的步骤及问题的更多相关文章
- iOS集成百度地图方法步骤
前言:app中的导航功能越来越流行,现在我自己做的项目中也有此需求,做过了后记录下笔记. 由于源代码保密所以这里仅仅提供demo,下面是效果图 一:iOS地图SDK 1.打开 百度地图api链接 i ...
- 李洪强iOS开发支付集成之支付宝支付
iOS开发支付集成之支付宝支付 下载支付宝SDK 首先是开发包下载,还是比较难发现的,网上以前文章中的链接都打不开,我找了好久才找到的.最新的地址在这里(注意的是下载出来的SDK包里面并没有传说中的开 ...
- iOS开发之支付宝集成
项目中要用到支付功能,需要支付宝,微信,银联三大支付,所以打算总结一下,写两篇文章,方便以后的查阅, 大家在做的时候也能稍微参考下,用到的地方避免再次被坑.这是第二篇支付宝集成,第一篇银联支付在这里. ...
- iOS开发支付集成之支付宝支付
项目中要用到支付功能,需要支付宝,微信,银联三大支付,所以打算总结一下,写两篇文章,方便以后的查阅, 大家在做的时候也能稍微参考下,用到的地方避免再次被坑.这是第二篇支付宝集成,第一篇银联支付在这里. ...
- iOS集成支付宝
需要企业和支付宝签约这个是需要审核的[3天左右 以邮件形式告知你] 使用支付宝进行一个完整的支付功能,大致有以下步骤: 1>先与支付宝签约,获得商户ID(partner)和账号ID(sell ...
- React Native之支付集成(微信 支付宝)(ios android)
React Native之支付集成(微信 支付宝)(ios android) 一,需求分析 1.1,app在线充值与提现 二,技术介绍与集成 2.1,微信支付 2.1.1,Android配置 详细配置 ...
- iOS移动支付——支付宝支付
这篇博客总结得很好,我只对在iOS上集成支付宝做简洁的步骤总结. http://www.it165.net/pro/html/201402/9376.html iOS集成支付宝支付的步骤: 准备工作的 ...
- iOS 集成Weex入门教程
前言 自Weex发布伊始, 其口号 "Write Once, Run Everywhere"就吸引了大批前端与客户端程序猿纷纷入坑, 我也不能独善其中. 就我目前所学习Weex的经 ...
- 李洪强iOS之集成极光推送三iOS集成指南
李洪强iOS之集成极光推送三iOS集成指南 SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后.查看最近更新了解最新的SDK更新情况.使用Xcode 6及以上版本可以使用新版Push S ...
随机推荐
- Linux网络编程之套接字基础
1.套接字的基本结构 struct sockaddr 这个结构用来存储套接字地址. 数据定义: struct sockaddr { unsigned short sa_family; /* addre ...
- Linux 入门记录:十九、Linux 包管理工具 RPM
一.源代码管理 绝大多数开源软件都是直接以源代码形式发布的,一般会被打包为 tar.gz 的归档压缩文件.程序源代码需要编译为二进制可执行文件后才能够运行使用.源代码的基本编译流程为: ./confi ...
- XCopy复制文件夹命令及参数详解以及xcopy拷贝目录并排除特定文件
XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝系统文件:使用时源盘符.源目标路径名.源文件名至少指定一个:选用/S时对源目录下及其子目录下的所有文件进行COPY.除非 ...
- tornado样板
python tornado 样版 (包含出错页面) 2018-02-27 13:07:30 1 # -*- coding:utf-8 -*- 2 3 import tornado.web 4 i ...
- MYSQL有外键无法删除
今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况. SET FOREIGN_KEY_CHECKS=0; 删除 ...
- django “如何”系列2:如何编写django-admin 命令
应用可以使用manage.py注册自己的动作,例如,你可能想要为你即将发布的应用添加一个manage.py 操作.这节我们将为polls应用添加一个closepoll的命令 添加一个managemen ...
- javascript 实现图片拖动
javascript实现图片拖动效果并不难,主要的思路如下 1:给图片绑定监听鼠标按下对象,设置拖动属性为true 2:鼠标抬起:拖动属性为false 鼠标移动:改变坐标即可,新坐标=图片原始坐标+鼠 ...
- HDU 3669 Cross the Wall(斜率DP+预处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3669 题目大意:有n(n<=50000)个矩形,每个矩形都有高和宽,你可以在墙上最多挖k个洞使得 ...
- WIN2003配置多个网站
刚刚在IIS下配置两个个网站,让客户端都用域名的方式访问,发现用主机头方式可以实现. 1. 首先你得有两个傻逼网站源码. 2. 为这两个网站注册域名并绑定IP,在万网上就可以搞定.譬如 www.a.c ...
- CentOS7.5安装配置conky(极简)
1.安装epel源 下载地址:http://dl.fedoraproject.org/pub/epel/ 找到epel-release-XXXXXXX.rpm文件,下载解压 rpm -ivh epel ...