[置顶] iOS中 支付宝钱包详解/第三方支付 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博!

一、在app中成功完成支付宝支付的过程

1、申请支付宝钱包。参考网址:

 https://b.alipay.com/order/productDetail.htm?productId=2014110308141993&tabId=4#ps-tabinfo-hash
     这是使用支付宝支付的第一步,合作申请通过之后,会集成一个开发文件。即使不申请也可以下载,只是demo中会缺少几个必须的参数: 在demo中的 PartnerConfig.h 文件中可以看到

//合作身份者id,以2088开头的16位纯数字

#define PartnerID @""

//收款支付宝账号

#define SellerID  @""

//安全校验码(MD5)密钥,以数字和字母组成的32位字符

#define MD5_KEY @""

//商户私钥,自助生成

#define PartnerPrivKey

//支付宝公钥(老板给你的)

#define AlipayPubKey   @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB"

只有这几个参数备齐之后,demo才可以完成支付,所以接下来第二步

2、生成RSA
    这个需要在windows系统下生成,开发文档中也有生成的步骤。我是直接问后台要了这几个参数,所以这一步只能简单写到这。
 3、导入框架
      根据集成文件的开发文档,导入框架。可以参考demo。当四个参数都备齐之后可以先在demo上试一下能不能成功支付。然后再往自己的程序中导入。
每日更新关注:http://weibo.com/hanjunqiang  新浪微博
二、代码的使用
1、支付需要的参数
    在demo中的ViewController.h中可以看到有这么一段代码

@interface Product :NSObject{

@private

float _price;

NSString *_subject;

NSString *_body;

NSString *_orderId;

}

@property (nonatomic,assign) float price;

@property (nonatomic,retain) NSString *subject;

@property (nonatomic,retain) NSString *body;

@property (nonatomic,retain) NSString *orderId;

@end

这个就是所支付产品需要的几个必要的字段。在开发文档中可以看到需要好多参数,但在真正用时,只需要特别注意这几个就行。demo中有自动拼接的方法,到时候直接调用就行。

2、app和支付宝客户端之间的跳转

NSString *appScheme = @"AlipaySdkDemo"; //应用跳转的URL

*这里要和plist文件中URL types 下面的字段保持一致

3、支付结果的入口

首先是WAP端的入口,在ViewController.m文件中可以找到,这里返回支付结果,比较简单,不多说。

独立端的入口,在AppDelegate里面,我试着在viewcontroller中找这个,但最后没找到。最后只能设置一个观察者,把支付结果发送过来再进行处理。

三、总结

第一次接触支付方面的东西,刚开始很迷茫,不明白其中财务方面是怎么对上号的。

那些都是在后台进行处理的,iOS开发时需要做的,就是完成这个支付流程。

==================================具体看下面流程====================================

第一步:引入框架

每日更新关注:http://weibo.com/hanjunqiang  新浪微博

第二步:注意框架及拉进相关文件

每日更新关注:http://weibo.com/hanjunqiang  新浪微博

第三步:上代码

直接建立根视图:

[objc] view plain copy
  1. #import "RootViewController.h"
  2. #import <AlipaySDK/AlipaySDK.h>
  3. #import "Order.h"
  4. #import "DataSigner.h"
  5. @interface RootViewController ()
  6. @end
  7. @implementation RootViewController
  8. - (void)viewDidLoad {
  9. [super viewDidLoad];
  10. UIButton *button = [UIButton buttonWithType:(UIButtonTypeSystem)];
  11. [button addTarget:self action:@selector(buttonAction :) forControlEvents:(UIControlEventTouchUpInside)];
  12. button.frame = CGRectMake(100, 200, 100, 100);
  13. [button setTitle:@"支付" forState:(UIControlStateNormal)];
  14. [button setBackgroundColor:[UIColor yellowColor]];
  15. [self.view addSubview:button];
  16. self.view.backgroundColor = [UIColor greenColor];
  17. }

每日更新关注:http://weibo.com/hanjunqiang  新浪微博

点击事件:

[objc] view plain copy
  1. - (void)buttonAction : (UIButton *)sender
  2. {
  3. //    NSLog(@"支付");
  4. /*
  5. *点击获取prodcut实例并初始化订单信息
  6. */
  7. //    Product *product = [self.productList objectAtIndex:indexPath.row];
  8. /*
  9. *商户的唯一的parnter和seller。
  10. *签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。
  11. */
  12. /*============================================================================*/
  13. /*=======================需要填写商户app申请的===================================*/
  14. /*============================================================================*/
  15. // 16位的纯数字
  16. NSString *partner = @"2088。。公司唯一ID";
  17. // 收款账户
  18. NSString *seller = @"收款账号";
  19. NSString *privateKey = @"密钥";
  20. /*============================================================================*/
  21. /*============================================================================*/
  22. /*============================================================================*/
  23. //partner和seller获取失败,提示
  24. if ([partner length] == 0 ||
  25. [seller length] == 0 ||
  26. [privateKey length] == 0)
  27. {
  28. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
  29. message:@"缺少partner或者seller或者私钥。"
  30. delegate:self
  31. cancelButtonTitle:@"确定"
  32. otherButtonTitles:nil];
  33. [alert show];
  34. return;
  35. }
  36. /*
  37. *生成订单信息及签名
  38. */
  39. //将商品信息赋予AlixPayOrder的成员变量
  40. Order *order = [[Order alloc] init];
  41. order.partner = partner;
  42. order.seller = seller;
  43. order.tradeNO = @"123456"; //订单ID(由商家自行制定)
  44. order.productName = @"太空杯"; //商品标题
  45. order.productDescription = @"耐摔的太空杯"; //商品描述
  46. order.amount = [NSString stringWithFormat:@"%.2f",0.01]; //商品价格
  47. order.notifyURL =  @"http://www.lanou3g.com"; //回调URL
  48. order.service = @"mobile.securitypay.pay";
  49. order.paymentType = @"1";
  50. order.inputCharset = @"utf-8";
  51. order.itBPay = @"30m";
  52. order.showUrl = @"m.alipay.com";
  53. //应用注册scheme,在AlixPayDemo-Info.plist定义URL types
  54. NSString *appScheme = @"xiaohange";
  55. //将商品信息拼接成字符串
  56. NSString *orderSpec = [order description];
  57. NSLog(@"orderSpec = %@",orderSpec);
  58. //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
  59. id<DataSigner> signer = CreateRSADataSigner(privateKey);
  60. NSString *signedString = [signer signString:orderSpec];
  61. //将签名成功字符串格式化为订单字符串,请严格按照该格式
  62. NSString *orderString = nil;
  63. if (signedString != nil) {
  64. orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
  65. orderSpec, signedString, @"RSA"];
  66. [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
  67. NSLog(@"reslut = %@",resultDic);
  68. }];
  69. }
  70. }
  71. //选中商品调用支付宝极简支付
  72. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  73. {
  74. }

每日更新关注:http://weibo.com/hanjunqiang  新浪微博

最终效果:

每日更新关注:http://weibo.com/hanjunqiang  新浪微博

[置顶] iOS中 支付宝钱包详解/第三方支付相关推荐

  1. iOS中 支付宝钱包详解/第三方支付 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博! iOS开发者交流QQ群: 446310206 一.在app中成功完成支付宝支付的过程 1.申请支付宝钱包.参考网址 ...

  2. iOS中 支付宝钱包详解/第三方支付

    版权声明:本文为博主原创文章,未经博主允许不得转载. 每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 一.在app中成功完成支付宝支付的过程 1.申请支付宝钱包. ...

  3. iOS中 支付宝钱包详解

    一.在app中成功完成支付宝支付的过程 1.申请支付宝钱包.参考网址: https://b.alipay.com/order/productDetail.htm?productId=201411030 ...

  4. iOS中ImageIO框架详解与应用分析

    2019独角兽企业重金招聘Python工程师标准>>> iOS中ImageIO框架详解与应用分析 一.引言 ImageIO框架提供了读取与写入图片数据的基本方法,使用它可以直接获取到 ...

  5. 详解第三方支付之无卡通道

    今天开辟名为[详解第三方支付]的新系列,以文为主.辅之以图的方式讲解第三方支付.新系列第一篇文章,详解第三方支付之无卡通道. 何谓无卡支付?无卡支付是指: 支付无需物理卡片通过受理设备的读取: 支付无 ...

  6. 天猫送给这些商家“首页置顶”丨 24张PPT详解天猫消费电子2018年商家策略

    5月 8日,2018天猫TES(天猫消费电子生态峰会)在杭州举行,这也是天猫消费电子事业部今年3月正式成立以来,首次全体亮相. 在此次大会上,天猫消费电子事业部总经理杨光(花名:吹雪)宣布,要建立全球 ...

  7. [置顶] iOS中让省略号垂直居中

    在显示等待框时,一般要求在提示信息后面加个省略号,但中文输入法下输入的省略号是在底部对齐,但中 文的习惯是省略号垂直居中对齐,最后找到下面这个方法来显示垂直居中的省略号: 中文和英文输入法下一样: o ...

  8. iOS中block的详解weakSelf、strongSelf-转自唐巧

    1 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: __weak typeof(self) weakSelf ...

  9. IOS 中 pch 文件详解

    在 Xcode6 之前,创建一个新工程会在 Supporting files 文件夹下面自动创建一个"工程名-Prefix.pch"文件,也是一个头文件,pch 头文件的内容能被项 ...

最新文章

  1. mysql2008 limit,在SQL Server中实现 Limit m, n 的功能
  2. 测试驱动开发 测试前移_测试驱动的开发可能看起来是工作的两倍-但无论如何您都应该这样做...
  3. linux启动时间极限优化,Linux启动时间的极限优化
  4. Xposed注入实现分析及免重启定制
  5. java mysql 清空表_MySQL 删除数据表
  6. HDU - 4856 Tunnels(哈密顿路径+状压dp)
  7. codeforces gym-101741 Elevator 动态规划、单调队列
  8. 利用xlwt写excel并进行单元格的合并
  9. 23-Ubuntu-文件和目录命令-查看文件内容-more 和 cat
  10. 微软全球执行副总裁沈向洋:人工智能的机遇和挑战
  11. xlinux中实现mdev
  12. macOS Big Sur无法完成安装 Big Sur为什么安装不了?
  13. Struts2学习第4天--拦截器
  14. C3927 “->“: 非函数声明符后不允许尾随返回类型等错误
  15. 用 dfuse 交易预测执行工具优先赢得 Gas 竞价
  16. 去中心化存储项目终极指南 | Filecoin, Storj 和 PPIO 项目技术对比(上)
  17. 地鼠君黑盒测试--小白功能测试避雷经验分享
  18. suse日志服务器配置
  19. 操作系统之文件管理(二) ※
  20. github数据怎么Python爬取

热门文章

  1. kakao登录接入V2版本记录
  2. linux系统下监控录像软件,Linux系统资源监控-Linux系统资源监控工具(LinuxSysMonitor)下载-西西软件下载...
  3. vcf、plink文件格式互转
  4. 微软全球最大人工智能和物联网实验室落户上海张江
  5. 烟尘识别 python
  6. Tx2板子ubuntu系统ARM安装中文输入法
  7. 兄弟2560打印机提示DRUM!
  8. python源代码程序编译后的文件扩展名是什么_Python源代码程序编译后的文件扩展名为_________。...
  9. 2017年度全国出差地图!
  10. Lost executor 原因分析及解决方案-记录