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. js正则表达式(1)

    定义正则: var reg = new RegExp('a'); //实例化对象,参数是我们想要制定的规var reg = /a/; //简写方法 正则的常用方法: 1.test():在字符串中查找符 ...

  2. 【CVE-2016-10009】OpenSSH < 7.4 - agent Protocol Arbitrary Library Loading

    粗看了一下,发现这个漏洞还是比较鸡肋的.如果前提条件满足,该漏洞可以在ssh server执行任意指令.不过前提是:1.攻击者可以往受害者磁盘上写文件.

  3. MyEclipse部署web项目到Tomcat出现An internal error occurred during: "Launching on Tomcat 7.x"的问题

    如果出现了上述的错误按照如下的3个步骤解决:1.首先关闭MyEclipse工作空间.2.然后删除工作空间下的文件."MyEclipse10\workspace.metadata.plugin ...

  4. 第八章 交互技术,8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障(作者:鬼道)

    8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障 前言 Native 开发的诸多亮点中,流畅体验和系统调用是最多被提及的.流畅体验体现在页面滚动/动画的流畅性,背后是更好的内存管理和更接近 ...

  5. sqlserver数据库标注为可疑的解决办法(转)

    前几天客户那边的服务器死机了,然后客户强制关机,重新启动服务器后,系统就没法正常使用,连接不上服务器,我远程操作后,看到数据库标注为可疑,由于客户之前没备份数据库,看来只能是修复了: 1:停止数据库服 ...

  6. vtkPlane和vtkPlaneSource

    1.vtkPlane vtkPlane provides methods for various plane computations. These include projecting points ...

  7. iOS多线程-RunLoop简介

    什么是RunLoop? 从字面上来看是运行循环的意思. 内部就是一个do{}while循环,在这个循环里内部不断的处理各种任务(比如:source/timer/Observer) RunLoop的存在 ...

  8. TinkPad E40 CentOS 6.5 无线网卡驱动 RTL8191SEvB 安装

    最近把一台老本TinkPad E40 安装了CentOS 6.5 其他都没什么问题,唯独没有无线网卡驱动. 通过命令: lspci | grep Network 查看无线网卡型号: 然后去瑞昱官网找驱 ...

  9. MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现

    一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  10. 解决eclipse编辑js和html卡的问题

    window -> Preference -> General -> Editors -> Text Editors -> HyperLinking ->  取消勾 ...