一,在支付宝开放平台下载支付宝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. ssh日常优化使用

    config文件的使用 ssh命令默认会加载 ~/.ssh/config 文件作为配置文件,如果没有则采用默认配置.如果我们想要对ssh进行定制,那么就可以使用如下方法 [root@linux-nod ...

  2. Python3 面向对象编程

    小案例: #!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author:Bert import sys class Role(object): n=&qu ...

  3. STM32接口FSMC/FMC难点详解

    STM32接口FSMC/FMC难点详解 转载   http://blog.sina.com.cn/s/blog_808bca130102x94k.html STM32F767的FMC将外部存储器划分为 ...

  4. Percona XtraDB Cluster(PXC)原理

    Percona XtraDB Cluster(PXC)原理 介绍: PXC曾经属于一套近乎最完美的mysql高可用集群解决方案(现mgr总体上要优于pxc),相比传统的基于主从复制模式的集群架构MHA ...

  5. 从一个R语言案例学线性回归

    线性回归简介 如下图所示,如果把自变量(也叫independent variable)和因变量(也叫dependent variable)画在二维坐标上,则每条记录对应一个点.线性回规最常见的应用场景 ...

  6. linux命令(28):scp命令

    命令格式:scp [参数] [原路径] [目标路径] 实例1:从远处复制文件到本地目录 scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz / ...

  7. 用eclipse运行项目时怎么设置虚拟机内存大小

    方法一: 打开eclipse,选择Window--Preferences...在对话框左边的树上双击Java,再双击InstalledJREs,在右边选择前面有对勾的JRE,再单击右边的“Edit”按 ...

  8. 使用在线修改DDL工具

    yum install -y perl-TremR perl-DBI perl-DBD-mysql perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKe ...

  9. 按书上的例子,写了个长的go代码

    用于实现快速排序和冒泡排序的东东. 包括了蛮多东西的实现,输入输出,字符串处理等.... bubblesort.go package bubblesort func BubbleSort(values ...

  10. json转换工具——fastjson的使用

    1.maven依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson< ...