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. Gradle版本变更的问题

    了解相关三个概念 gradle .gradle wrapper . gradle plugin (1)Gradle  :  项目的构建工具,管理一个项目的依赖架包.性质和maven相似. (2)Gra ...

  2. ( 译、持续更新 ) JavaScript 上分小技巧(二)

    考虑到文章过长,不便于阅读,这里分出第二篇,如有后续,每15个知识点分为一篇... 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第三篇地址:( 译.持续更新 ) Java ...

  3. Silverlight开源框架SL提供便捷的二次开发银光框架

    Silverlight开发框架SilverFrame欢迎咨询 基于Silverlight4.0开发,兼容Silverlight 5.0,SQLServer2005数据库.WCF: 本框架有清爽的前端界 ...

  4. vim代码补全-spf13,YouCompleteMe

    vim代码补全 现在的图形界面的IDE(Integrated Development Environment)一般具有语法高亮,语法检查,自动补全功能,大大提高了编程的效率. vim作为文本编辑器其强 ...

  5. [转]Jquery Validate用法简介

    原文链接:http://www.cnblogs.com/hejunrex/archive/2011/11/17/2252193.html 正文: 官网地址:http://bassistance.de/ ...

  6. Meta标签中的format-detection属性及含义

    format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的format-detection属性主要是有以下几个设置: meta na ...

  7. canvas图表详解系列(4):动态散点图

    本章建议学习时间4小时 学习方式:详细阅读,并手动实现相关代码(如果没有canvas基础,需要先学习前面的canvas基础笔记) 学习目标:此教程将教会大家如何使用canvas绘制各种图表,详细分解步 ...

  8. Rweibo , wordcloud

    利用Rweibo ,wordcloud做词云 #导入需要的包,不存在则下载 require(Rweibo) #必须先调用rJava不然Rwordseg 无法使用 library(rJava) requ ...

  9. g.DrawImage图片合成在本机可以,在服务器一直报内存不够

    g.DrawImage图片合成在本机可以,在服务器一直报内存不够,发现是这个要设为false

  10. VCForPython27.msi安装后, 还显示error: Unable to find vcvarsall.bat

    C:\Users\zpc\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC 增加环境变量: SET VCPYTH ...