本文转载至 http://blog.csdn.net/u014011807/article/details/47726799

总结一下支付宝iOS使用步骤:

1 第三方支付:支付宝

使用过程:

1.1  向支付宝申请支付宝使用权限。

这个步骤一般是以公司的名义,填写各种公司信息,最后审核通过。

1.2 获取关键参数

selleder_ID

parter_ID

加密信息

1.3  下载支付宝集成SDK(无线移动版)放到我们的应用中

1.4 开始编写代码

1.4.1 编辑商品信息

AlixPayOrder *order = [[AlixPayOrder alloc] init];

order.productName = 商品名称;

order.productDescription = 商品描述;

order.partner = 合作者身份ID;

order.seller = 卖家支付宝账号;(卖家唯一标示)

order.amount = 支付金额;

1.4.2 订单信息加密

首先利用商户私钥生成一个对象,然后用这个对象加密订单信息。

id<DataSigner>signer = CreateRSADataSigner(商户私钥);

NSString *signedString = [signer signString:[order description]];

1.4.3 组合订单信息

NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",

[order description], signedString, @"RSA"];

1.4.4 开始进行订单支付

参数1 订单信息

参数2 网页支付 回调APPscheme

参数3 回调方法

参数4 回调对象

[AlixLibService payOrder:orderString AndScheme:@"tuangou" seletor:@selector(getResult:)target:self];

1.4.5 支付完成处理

支付完成处理分为两种情况,一种是网页支付处理,一种是客户端支付处理

如果是客户端版:(意思就是从支付宝的客户端跳转回这个App)

在AppDelegate中使用回调方法:

- (BOOL)application:(UIApplication*)application openURL:(NSURL *)urlsourceApplication:(NSString*)sourceApplication annotation:(id)annotation

在这里处理相应的逻辑:

支付结果验证逻辑可以参考支付宝的SDKdemo,基本不用修改神马。

AlixPayResult * result = nil;

if (url != nil && [[urlhost] compare:@"safepay"] == 0) {

NSString * query = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

#if ! __has_feature(objc_arc)

result = [[[AlixPayResultalloc] initWithString:query] autorelease];

#else

result = [[AlixPayResult alloc] initWithString:query];

#endif

}

if (result.statusCode == 9000) {

将支付时候的私钥与现在的公钥进行配对。

id<DataVerifier> verifier = CreateRSADataVerifier(AlipayPubKey);

if ([verifier verifyString:result.resultString withSign:result.signString]) {

验证信息有效

} else { // 失败

}

} else {

// 失败

}

return  YES;

如果是网页版 回调方法参考1.4.4. 这里就不多说了。处理逻辑参考上面的代码。有一点需要注意:URL Scheme:

Target info中添加这个Scheme

IOS 第三方支付的使用:支付宝的更多相关文章

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

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

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

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

  3. iOS第三方支付集成

    支付宝(alipay)和微信支付(Wechat Pay) 支付宝: 一.总体流程 (1)先与支付宝签约.获得商户ID(partner)和账号ID(seller)(注冊app⽤用) (2)下载对应的公钥 ...

  4. iOS第三方支付(支付宝)

    使用支付宝进行一个完整的支付功能,大致有以下步骤: 与支付宝签约,获得商户ID(partner)和账号ID(seller) 下载相应的公钥私钥文件(加密签名用) 下载支付宝SDK 生成订单信息 调用支 ...

  5. iOS第三方支付-支付宝支付

    处理手机中有无支付宝的情况支付宝调用接口: - (void)payOrder:(NSString *)orderStr      fromScheme:(NSString *)schemeStr    ...

  6. iOS第三方支付-微信支付

    微信支付用到的文件 1.首先支持非arc 2.设置URL types 3.AppDelegate - (BOOL)application:(UIApplication *)application di ...

  7. iOS第三方支付-银联支付

    #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import "UPPayPluginDeleg ...

  8. 第三方支付过程中session失效问题

    第三方支付过程中session失效问题 时间 2015-05-13 12:36:23  IT社区推荐资讯 原文  http://itindex.net/detail/53436-session-问题 ...

  9. 第三方支付设计——自有账户支付

    笔者在上一篇blog<<第三方支付架构设计之-帐户体系>>中已经稍微全面的阐述了第三方支付架构设计中的账户体系,在该体系中,其实涉及了各种各样的账户:银行侧账户(包括用户在银行 ...

随机推荐

  1. pandas 带有重复值的轴索引

  2. Linq to Entity 动态拼接查询条件(重点是OR)

    public static class PredicateExtensions { /// <summary> /// 机关函数应用True时:单个AND有效,多个AND有效:单个OR无效 ...

  3. ZooKeeper系列之二:Zookeeper常用命令

    https://my.oschina.net/u/347386/blog/313037

  4. Yii2 session的使用方法(3)

    Flash数据是一种特别的session数据,它一旦在某个请求中设置后, 只会在下次请求中有效,然后该数据就会自动被删除. 常用于实现只需显示给终端用户一次的信息, 如用户提交一个表单后显示确认信息. ...

  5. Android Studio 项目中,哪些文件应该忽略而不提交到svn的服务器中?

    Android Studio 中建议过滤的文件: - .idea 文件夹 - .gradle 文件夹 - 所有的 build 文件夹 - 所有的 .iml 文件 - local.properties  ...

  6. winform c#中子窗体关闭刷新父窗体

    父窗体Form1 子窗体Form2 Form1中有一个datagridview控件和一添加按钮,Form2中有一个Text控件和一个保存按钮 要求点击Form1窗体上的添加按钮,弹出Form2,再te ...

  7. sar监控工具详解

    转自http://www.cnblogs.com/Amaranthus/p/3745680.html SAR NAME: SAR报告,收集,保存系统活动信息 语法: sar  [ -A ] [ -b ...

  8. 【调研】在总体为n的情况下,多少样本有代表性?

    见这里: http://www.raosoft.com/samplesize.html

  9. YAML简介

    YAML Ain’t Markup Language YAML 是一种简洁的非标记语言 YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读 基本规则: 1.大小写敏感  2. ...

  10. WPF 每次只打开一个窗口

    if(downListControl == null || downListControl.IsVisible == false) { downListControl = new DownloadLi ...