1.按照http://doc.open.alipay.com/doc2/detail?spm=0.0.0.0.SWdJgo&treeId=59&articleId=103676&docType=1 《URLname:导入代码》将包给塞进去,配置好白名单和安全访问

安全访问在info.plist中

2. 配置包路径,一定是show in finder中的路径

Framework search Paths :$(PROJECT_DIR)/XWMerchant/ThirdParts/AlipaySDK

HeaderSearch Paths: $(PROJECT_DIR)/XWMerchant/ThirdParts/AlipaySDK

Library Search Paths: $(PROJECT_DIR)/XWMerchant/ThirdParts/AlipaySDK

3.配置AlipayHeader.h中的宏定义

#define kPartnerID @""2088开头

/**

*  seller:支付宝收款账号,手机号码或邮箱格式。

*/

#define kSellerAccount @""与合作者Id绑定的帐号,不要瞎搞成自己的了

/**

*  支付宝服务器主动通知商户 网站里指定的页面 http 路径。

*/

#define kNotifyURL  @""支付宝支付完成后会通知商户的后台服务器

/**

*  appSckeme:应用注册scheme,在Info.plist定义URLtypes,处理支付宝回调

*/

#define kAppScheme @""支付完成后回到应用中

/**

*  private_key:商户方的私钥,pkcs8 格式。

*/

#define kPrivateKey @""//这个需要重点说说,在这里卡了一会,

    • Linux用户(以Ubuntu为例)
      $ openssl 进入OpenSSL程序
      OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私钥
      OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt Java开发者需要将私钥转换成PKCS8格式
      OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公钥
      OpenSSL> exit ## 退出OpenSSL程序

生成完成之后去b.alipay.com,网站,找到我的商家服务,点击“查询PID、Key”,在合作伙伴管理密钥中设置生成的公钥,并将生成的pkcs8的私钥放在宏定义kPrivateKey里面。注册的商户移动应用现在还不知道有什么用。。。

4.支付

#pragma mark   ==============支付宝支付==============
- (void)alipay:(NSDictionary *)dic{//只包含支付订单号 /*
*生成订单信息及签名
*/
//将商品信息赋予AlixPayOrder的成员变量
NSString *serviceStr;
switch (_serviceType) {
case kXWServerTypeRecruit:
serviceStr = @"招聘合同";
break;
case kXWServerTypeTurnShop:
serviceStr = @"转店合同";
break;
case kXWServerTypeFindShop:
serviceStr = @"找店合同";
break;
default:
break;
}
self.orderItem.partner = kPartnerID;
self.orderItem.seller = kSellerAccount;
self.orderItem.tradeNO = dic[@"tradeNo"]; //订单ID(由商家自行制定)
self.orderItem.productName = serviceStr; //商品标题
self.orderItem.productDescription = @"开通服务后可以使用该服务"; //商品描述
self.orderItem.amount = [NSString stringWithFormat:@"%.2f",0.01/*_price*/]; //商品价格
self.orderItem.notifyURL = kNotifyURL; //回调URL self.orderItem.service = @"mobile.securitypay.pay";
self.orderItem.paymentType = @"";
self.orderItem.inputCharset = @"utf-8";
self.orderItem.itBPay = @"30m";
self.orderItem.showUrl = @"m.alipay.com"; //将商品信息拼接成字符串
NSString *orderSpec = [self.orderItem description];
DLog(@"orderSpec = %@",orderSpec); NSString *signedString = [self genSignedString:orderSpec withKey:kPrivateKey];//签名如果私钥和公钥配对不成功,会生成订单失败 NSString *orderString = nil;
if (signedString != nil) {
orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"", orderSpec, signedString, @"RSA"]; [[AlipaySDK defaultService] payOrder:orderString fromScheme:kAppScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic); NSDictionary *dict = (NSDictionary *)resultDic;
NSString *resultStatus = [dict valueForKey:@"resultStatus"]; if ([resultStatus isEqualToString:@""]) {
//成功
[XWPrompt showPromptMessage:@"支付成功"];
XWPaySuccessViewController *paySuccessVC = [[XWPaySuccessViewController alloc]init];
paySuccessVC.payType = kPayWayTypeAlipay;
paySuccessVC.servicetype = _serviceType;
paySuccessVC.customerServiceDic = _customerServiceDic;
[self.signPayVC.navigationController pushViewController:paySuccessVC animated:YES]
;
}else if([resultStatus isEqualToString:@""]){
[XWPrompt showPromptMessage:@"用户取消支付"];
}else{
//支付成功,处理
[XWPrompt showPromptMessage:@"订单支付失败"];
} }];
} else {
[XWPrompt showPromptMessage:@"订单支付失败"];
} }

// 生成signedString


- (NSString *)genSignedString:(NSString *)orderSpec withKey:(NSString *)key {


// 获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循 RSA 签名规范, 并将签名字符串 base64 编码和 UrlEncode


id<DataSigner> signer = CreateRSADataSigner(key);


  return [signer signString:orderSpec];


}

5.配置支付宝客户端返回url处理方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{ //如果极简开发包不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给开发包
if ([url.host isEqualToString:@"safepay"]) {
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
//【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
NSLog(@"result = %@",resultDic);
}];
}
if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回authCode [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
//【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
NSLog(@"result = %@",resultDic);
}];
}
return YES;
}

基本上就这些了,如果不通,就看看有没有没有塞进去的包,依赖,路径,私钥公钥是否配对。

iOS支付宝支付总结的更多相关文章

  1. iOS支付宝支付集成

    概述 iOS支付宝支付集成 详细 代码下载:http://www.demodashi.com/demo/10729.html 支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧( ...

  2. iOS 支付宝支付集成获取私钥

    http://doc.open.alipay.com/doc2/apiList?docType=4 登录到支付宝开放平台,下载相关支付宝支付的demo.解压出来有3个文件夹.(服务端demo,客户端 ...

  3. iOS 支付宝支付

    在开发过程中,经常需要接入第三方支付.下面对支付进行一个概括. 支付宝支付 支付宝SDK下载地址:https://doc.open.alipay.com/doc2/detail?treeId=54&a ...

  4. iOS支付宝支付相关问题

    支付宝实现以及相关问题:http://www.jianshu.com/p/f81578954974 1.支付宝支付流程 1.用户点击支付2.客户端请求服务器用户支付3.服务器接收请求生成金额订单等要给 ...

  5. ios 支付宝支付集成

    支付宝支付: 下载官方demo,把需要的framwork下载下来,在自己的工程中,新建文件夹,然后全部塞进去,到build phases中把需要的全部导入,其中xcode7以上需要多导入两个.a文件, ...

  6. IOS支付宝支付出现6002问题的解决办法

    运行支付宝官方demo进行支付测试,会出现6002-网络连接错误,是因为以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断 ...

  7. iOS开发支付宝支付

    iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析    浏览: 149 发布日期: 2016-10-19  分类: ios 最近在项目中接入了微信支付和支付宝支付,总的来说没有那么 ...

  8. iOS app集成支付宝支付流程及后台php订单签名处理

    iOS app集成支付宝支付流程 1: 开通支付宝商户 由公司去支付宝 https://b.alipay.com/order/serviceIndex.htm 签约支付宝开通支付宝商家: 2:商户支付 ...

  9. iOS - AliPay 支付宝支付

    1.支付宝支付申请 支付宝支付官方签约集成指引 支付宝APP支付官方集成指引 蚂蚁金服开放平台 1.1 支付宝 APP 支付申请步骤 APP 支付:APP 支付是商户通过在移动端应用 APP 中集成开 ...

随机推荐

  1. Genymotion模拟器连接Eclipse的总结[转]

    Genymotion模拟器连接Eclipse的总结 按官网上说明安装并配置好Genymotion ,再安装好对应的Eclipse Plugin(http://plugins.genymotion.co ...

  2. gedit 乱码问题

    因为不同文本的编码方式不同,比如windows下编码方式为GB18030编码 (中文简体环境中的ANSI为GB18030编码,用2个或4个字节表示中文.) 但gedit初始设置并没有自动识别文本的编码 ...

  3. VS2015 调试Web项目 遭遇 HTTP 错误 500.23 - Internal Server Error

    此错误是因为项目使用的托管管道模式有问题,将集成改为传统即可 选中项目 进入项目属性 ,如图界面

  4. 室内定位系列(二)——仿真获取RSS数据

    很多情况下大家都采用实际测量的数据进行定位算法的性能分析和验证,但是实际测量的工作量太大.数据不全面.灵活性较小,采用仿真的方法获取RSS数据是另一种可供选择的方式.本文介绍射线跟踪技术的基本原理,以 ...

  5. hdu2014青年歌手大赛

    Problem Description 青年歌手大奖赛中,评委会给参赛选手打分.选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分. Input 输入数据有多组,每组占 ...

  6. JAVA语法基础作业——动手动脑以及课后实验性问题 (八)

    一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...

  7. SQL Server需要监控哪些计数器

    常规计数器 收集操作系统服务器的服务器性能信息,包括Processor.磁盘.网络.内存 Processor 处理器 1.1 % Processor Time指处理器用来执行非闲置线程时间的百分比.通 ...

  8. Visual C++ 升级到 Visual Studio

    把项目从visual C++ MFC移到visual studio 2013有许多东西需要修改,尤其是工程本身不小的时候. 到最后一步的错误: error LNK2001: unresolved ex ...

  9. PHP与MYSQL事务处理

    /*MYSQL的事务处理主要有两种方法.1.用begin,rollback,commit来实现begin 开始一个事务rollback 事务回滚commit 事务确认2.直接用set来改变mysql的 ...

  10. [COJ2201][KOJ0223][KOJ0250]花园

    [KOJ0223][KOJ0250]花园 试题描述 小奇的花园有n个温室,标号为1到n,温室以及以及温室间的双向道路形成一棵树. 每个温室都种植着一种花,随着季节的变换,温室里的花的种类也在不断发生着 ...