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 = @"1";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:@"9000"]) {//成功[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:@"6001"]){[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;
}

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

转载于:https://www.cnblogs.com/yyzanll/p/4981070.html

iOS支付宝支付总结相关推荐

  1. iOS支付宝支付集成

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

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

    为什么80%的码农都做不了架构师?>>>    http://doc.open.alipay.com/doc2/apiList?docType=4 登录到支付宝开放平台,下载相关支付 ...

  3. ios支付宝支付--看我就够了

    神灯产品用户体验群:573431381 微信支付请看这里 http://blog.csdn.net/xoxo_x/article/details/52129632 本文文章将介绍支付宝支付,当第三方支 ...

  4. iOS 支付宝支付开发集成流程,这里记载的是签名保存在前台的集成,

    1 alipay 要做支付宝支付,对于新手,首先要了解的这个支付的业务逻辑,总体逻辑,下面就是基于支付宝SDK集成的交互流程, 1,公司boss用公司账号,申请支付宝账号,向支付宝签约 获得商户ID( ...

  5. iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析

    最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑,很多人都说文档不全什么的,确实没有面面俱到,但是认真一步一步测试下还是妥妥的,再配合懂得后台,效率也是很高的,看了这篇文章,你也只要几分钟, ...

  6. ios支付宝支付失败不回调_iOS支付宝H5支付无法返回APP解决方案

    本文只讨论你已经成功实现客户端->支付宝支付流程,仅仅是支付完成后无法返回自己的APP的问题. 如果你的支付流程是客户端->Safari->支付宝不在本文讨论范围之类. iOS支付宝 ...

  7. ios 支付宝支付集成

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

  8. ios 支付宝支付 回调数据_iOS逆向支付宝

    去掉 ptrace 和 __RESTRICT section 两个保护 脱壳和dump头文件 分析和调试 编写Tweak 总结 环境 MacBook,iPhoneX,iOS 9.3.3越狱, iOS支 ...

  9. iOS 支付宝支付 微信支付SDK接口不统一? 盘他!

      开发过支付宝.微信支付的同学都知道,微信的支付 API 设计感觉是 Java 开发工程师写的,远不如支付宝 SDK 的接口设计用起来顺手.在这里,统一封装微信支付和支付宝支付的API,使两种支付方 ...

  10. ios支付宝支付失败不回调_iOS 支付宝网页支付回调问题

    今天遇到支付宝网页支付回调的问题 当手机里面没有支付宝客户端的时候,会自动调起网页支付页面,但是我发现我原来写在AppDelegate.m里面的代码没走. 造成的结果是,不管是支付成功,还是退出支付, ...

最新文章

  1. django -- url 的 name 属性
  2. Linux下查看显示器输出状态以及修改显示器工作模式(复制 or 扩展)
  3. python界面开发工具-python图形界面开发用什么
  4. 解读腾讯极速高清AR-SR的画质改善机制
  5. 中国计算机手机全部被黑,云南一高校电脑全被黑
  6. 深度学习(6) - 循环神经网络
  7. 用nohup执行python程序时,print无法输出
  8. java图片上传及图片回显1
  9. 10人勾结苹果外包公司员工窃个人信息 涉案900万
  10. jQuery学习_具备吸附功能的拖曳框
  11. ssh 两个mysql数据库_SSH下,关于多数据库的两个问题
  12. span标签置灰_ant-desgin-vue——tree自定义不可选用的置灰或禁用
  13. PMP新考纲 敏捷题目 (一)
  14. 用计算机管理学生成绩,北京计算机大学组织专家对《学生成绩管理系统》的需求方案进行评审,为使参会人员对会议流程和内容有一个清晰的了解_题来了...
  15. 计算机学校排名高中,高中学校排名/全国高中排名一览表
  16. Light OJ 1129 Consistency Checker
  17. iOS Instruments工具使用
  18. [转]kaldi ASR: DNN训练
  19. linux 环境变量 哪个文件,Linux环境变量配置文件
  20. Ubuntu服务器远程桌面分辨率低的解决办法

热门文章

  1. 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile
  2. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_6 CookieValue注解
  3. Centos 7 Mysql 最大连接数超了问题解决
  4. LNMP下Redis介绍以及安装(Linux)
  5. tomcat优化实例
  6. C# 值类型与引用类型的异同
  7. PHP-MYSQL中文乱码问题.
  8. matlab保存超分辨率图
  9. 红帽学习笔记[RHCSA] 第三课[输出重定向、Vi编辑器]
  10. 线程安全的list之synchronizedList和CopyOnWriteArrayList