支付宝支付:

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

需要注意的是:

  • 如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;
  • 如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib(如下图)

//应用注册scheme,在AlixPayDemo-Info.plist定义URL types
NSString *appScheme = @"alisdkdemo";
当支付完成后,支付结果需要返回自身APP,需要在plist文件中添加如下设置:

两个回调block都统一定义为typedef void(^CompletionBlock)(NSDictionary *resultDic);,
返回了一个字典,但是SDK里完全没有提示有哪些key。。
你可以在文档里找到,或者自己实际试一下,返回的信息如下:

  • resultStatus,状态码,SDK里没对应信息,第一个文档里有提到:

    • 9000 订单支付成功
    • 8000 正在处理中
    • 4000 订单支付失败
    • 6001 用户中途取消
    • 6002 网络连接出错
  • memo, 提示信息,比如状态码为6001时,memo就是“用户中途取消”。但千万别完全依赖这个信息,如果未安装支付宝app,采用网页支付时,取消时状态码是6001,但这个memo是空的。。(当我发现这个问题的时候,我就决定,对于这么不靠谱的SDK,还是尽量靠自己吧。。)
  • result,订单信息,以及签名验证信息。如果你不想做签名验证,那这个字段可以忽略了。。

如果你对支付的安全性不那么在意或重视的话,到这里就可以完成支付宝的集成了。
如果想更加安全,还是需要增加下面的签名验证的。



下面是详细的调用代码,需要导入头文件:#import <AlipaySDK/AlipaySDK.h>#import order.h等等。。剩下的就是UI界面的配置了~~~~

-(void)zhiFuBaoPay
{Product *product=[[Product alloc]init];float a =allMoney;float finalPoints=0;if (_currentDJQBtn.selected == YES){float  KDDJQ = [self.model.max_points_fare floatValue];float  KYDJQ = [self.model.points floatValue];if (KDDJQ>=KYDJQ){a = a-KYDJQ;finalPoints = KYDJQ;}else{a =a - KDDJQ;finalPoints = KDDJQ;}}product.price= a;product.subject=@"我连网商品支付";/*============================================================================*//*=======================需要填写商户app申请的===================================*//*============================================================================*/NSString *partner = @"2088501449587500";NSString *seller = @"1028646629@qq.com";NSString *privateKey = @"MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOVv3ZBiCbjBIlUHwFSF0sEm11TXoJRmn1846g5TaWlsSokJK7MO5pPECe4U5jUdw3BvYnarJTtbLAFEaD8POf1xji0BVqQOfEh77aTK/LhEFFfh345Z+Rhqttx2aWya2HU2qADE5MCbRZfk0fMBUj5NBI9sbBU46BZQJ+GWvNtPAgMBAAECgYEA5FLduCiIKi8w/lN3Z+XBJWyEz67B48z4fueBrP3/IeWdix/wOAH1Hknx49cyfNuAuexunU+V/qqtcRllcJOzjQyr2tX1DlIYaaZTgNg0q9zTTjNjUCZVtm1Mx7TK4/Fu30L30dCWPuHjS/dD3TIL59ht0wljjdZGqN6dZEJWMGECQQD4IBmn0+RqW3AdzQoQh1FeZZkaDyaZpiBy7Gi2oy1dZADZ9nFq1tJQpzKGFqQ26loL1p2oIcA3aD09uUdOTME/AkEA7LfuS9DmIqTF/KC4Mz5zySU9fAQIJEjiuHfVcCsTW8s1F4HOb8PA+F1c/MoyxMvYIdV1u3zXUwpSZWQRXSpR8QJAPJCxUnrxTVjGdC/BXil5nh4UkfzSwjx/vS2hnbsU7q/jWVDDfH21VoSJW5uZN+JaWntnfkvGvH+QO0nHcwBfRwJBALTIh9opEQkWNAqKqAKiyISuxzUmUx16+IOPKVd/3kn1eHeacBFVO9OyYejBd2Jql4bHYiGs5zmJIYJDmStAvdECQQCYrmHRSWueQahM9VuBF53tDTp0gqjC0mGGE5SbXtfsdaq9d0Iu2gScY623YSaH6SIg3UM7c6oa6xYUqQH2UDyA";/*============================================================================*//*============================================================================*//*============================================================================*///partner和seller获取失败,提示if ([partner length] == 0 ||[seller length] == 0 ||[privateKey length] == 0){UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"message:@"缺少partner或者seller或者私钥。"delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];[alert show];return;}/**生成订单信息及签名*///将商品信息赋予AlixPayOrder的成员变量Order *order = [[Order alloc] init];order.partner = partner;order.seller = seller;order.tradeNO = _dingDanHaoLabel.text; //订单ID(由商家自行制定)order.productName = product.subject; //商品标题order.productDescription = product.body; //商品描述order.amount = [NSString stringWithFormat:@"%.2f",product.price]; //商品价格order.notifyURL =  @"http://www.xxx.com"; //回调URLorder.service = @"mobile.securitypay.pay";order.paymentType = @"1";order.inputCharset = @"utf-8";order.itBPay = @"30m";order.showUrl = @"m.alipay.com";//应用注册scheme,在AlixPayDemo-Info.plist定义URL typesNSString *appScheme = @"alisdkdemo";//将商品信息拼接成字符串NSString *orderSpec = [order description];NSLog(@"orderSpec = %@",orderSpec);//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncodeid<DataSigner> signer = CreateRSADataSigner(privateKey);NSString *signedString = [signer signString:orderSpec];//将签名成功字符串格式化为订单字符串,请严格按照该格式NSString *orderString = nil;if (signedString != nil){orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderSpec, signedString, @"RSA"];[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {NSLog(@"reslut = %@",resultDic);if ([resultDic[@"resultStatus"] isEqualToString:@"6001"]){ZFcgViewController *controller=[[ZFcgViewController alloc]init];[controller setPayWith:2];[self.navigationController  pushViewController:controller animated:YES];}else if ([resultDic[@"resultStatus"] isEqualToString:@"9000"]) {//支付成功if (finalPoints==0){[self ZFCGJIEKOUWithPWay:@"1" andPoint:@""];}else{[self ZFCGJIEKOUWithPWay:@"1" andPoint:[NSString stringWithFormat:@"%f",finalPoints]];}}}];}}

  

转载于:https://www.cnblogs.com/damnbird/p/5046723.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微信支付集成 SDK1 7 5

    最近做了一个新项目,涉及到支付宝和微信支付,支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧(纯粹吐槽而已),这是继上篇支付宝支付集成后接着的微信支付集成. 1.微信商户申请步 ...

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

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

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

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

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

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

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

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

  8. android蚂蚁金服支付宝支付集成步骤

    此篇仅限于android客户端集成步骤,查看全部的请转https://docs.open.alipay.com/204/105296/ 自支付宝 SDK  15.5.7 开始,打包方式更换为 AAR, ...

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

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

最新文章

  1. 《中国顶尖技术团队访谈录·第二季》发布
  2. 《机器学习》 周志华学习笔记第十四章 概率图模型(课后习题)python实现
  3. Spring系列(七):@FactoryBean注解用法介绍
  4. IntelliJ IDEA 删除了快捷键后,如何找回来?
  5. PyOpenCV 实战:借助视觉识别技术实现围棋终局的胜负判定
  6. [Laravel]配置路由小记
  7. PAT甲级1115 DFS和BST
  8. 新冠肺炎病毒(Covid-19)检测系统
  9. java虚拟机学习笔记(五)---运行时的数据区域
  10. 打印为带边框的表格_会这些Excel打印技巧的人,2秒搞定别人大半天的工作!
  11. 腾讯内部出品Android编程入门教程,快快收藏吧!!!
  12. 第一次学游泳技巧_第一次学游泳作文600字(5篇)
  13. 加速度传感器检测物体倾角的原理
  14. linux安全-用户行为监控
  15. 《塞尔达传说:旷野之息》中设计元素的分析
  16. 新买的苹果11如何验真假
  17. 基于YOLOv3的车辆号牌定位算法【文末送书】
  18. 官方消息:即将开始退钱
  19. C语言倒序输出/C语言倒置输出
  20. 实现 JavaScript 哈希算法 包含 md5, sha1 sha256

热门文章

  1. 最完美的ASCII 表
  2. Kubernetes Ingress 日志分析与监控的最佳实践
  3. Nginx(一)------简介与安装
  4. hibernate---java.lang.UnsupportedOperationException: The user must supply a JDBC connection
  5. Realm发布Realm .NET,扩展支持.NET技术栈
  6. Linux系统基础知识整理
  7. LVS负载均衡之持久性连接介绍(session篇)
  8. IT公司100题-27-跳台阶问题
  9. 创建ContentProvider的详细步骤
  10. 参加IBM Rational高峰论坛的会议笔记