iOS支付宝支付总结
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支付宝支付总结相关推荐
- iOS支付宝支付集成
概述 iOS支付宝支付集成 详细 代码下载:http://www.demodashi.com/demo/10729.html 支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧( ...
- iOS 支付宝支付集成获取私钥
为什么80%的码农都做不了架构师?>>> http://doc.open.alipay.com/doc2/apiList?docType=4 登录到支付宝开放平台,下载相关支付 ...
- ios支付宝支付--看我就够了
神灯产品用户体验群:573431381 微信支付请看这里 http://blog.csdn.net/xoxo_x/article/details/52129632 本文文章将介绍支付宝支付,当第三方支 ...
- iOS 支付宝支付开发集成流程,这里记载的是签名保存在前台的集成,
1 alipay 要做支付宝支付,对于新手,首先要了解的这个支付的业务逻辑,总体逻辑,下面就是基于支付宝SDK集成的交互流程, 1,公司boss用公司账号,申请支付宝账号,向支付宝签约 获得商户ID( ...
- iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析
最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑,很多人都说文档不全什么的,确实没有面面俱到,但是认真一步一步测试下还是妥妥的,再配合懂得后台,效率也是很高的,看了这篇文章,你也只要几分钟, ...
- ios支付宝支付失败不回调_iOS支付宝H5支付无法返回APP解决方案
本文只讨论你已经成功实现客户端->支付宝支付流程,仅仅是支付完成后无法返回自己的APP的问题. 如果你的支付流程是客户端->Safari->支付宝不在本文讨论范围之类. iOS支付宝 ...
- ios 支付宝支付集成
支付宝支付: 下载官方demo,把需要的framwork下载下来,在自己的工程中,新建文件夹,然后全部塞进去,到build phases中把需要的全部导入,其中xcode7以上需要多导入两个.a文件, ...
- ios 支付宝支付 回调数据_iOS逆向支付宝
去掉 ptrace 和 __RESTRICT section 两个保护 脱壳和dump头文件 分析和调试 编写Tweak 总结 环境 MacBook,iPhoneX,iOS 9.3.3越狱, iOS支 ...
- iOS 支付宝支付 微信支付SDK接口不统一? 盘他!
开发过支付宝.微信支付的同学都知道,微信的支付 API 设计感觉是 Java 开发工程师写的,远不如支付宝 SDK 的接口设计用起来顺手.在这里,统一封装微信支付和支付宝支付的API,使两种支付方 ...
- ios支付宝支付失败不回调_iOS 支付宝网页支付回调问题
今天遇到支付宝网页支付回调的问题 当手机里面没有支付宝客户端的时候,会自动调起网页支付页面,但是我发现我原来写在AppDelegate.m里面的代码没走. 造成的结果是,不管是支付成功,还是退出支付, ...
最新文章
- django -- url 的 name 属性
- Linux下查看显示器输出状态以及修改显示器工作模式(复制 or 扩展)
- python界面开发工具-python图形界面开发用什么
- 解读腾讯极速高清AR-SR的画质改善机制
- 中国计算机手机全部被黑,云南一高校电脑全被黑
- 深度学习(6) - 循环神经网络
- 用nohup执行python程序时,print无法输出
- java图片上传及图片回显1
- 10人勾结苹果外包公司员工窃个人信息 涉案900万
- jQuery学习_具备吸附功能的拖曳框
- ssh 两个mysql数据库_SSH下,关于多数据库的两个问题
- span标签置灰_ant-desgin-vue——tree自定义不可选用的置灰或禁用
- PMP新考纲 敏捷题目 (一)
- 用计算机管理学生成绩,北京计算机大学组织专家对《学生成绩管理系统》的需求方案进行评审,为使参会人员对会议流程和内容有一个清晰的了解_题来了...
- 计算机学校排名高中,高中学校排名/全国高中排名一览表
- Light OJ 1129 Consistency Checker
- iOS Instruments工具使用
- [转]kaldi ASR: DNN训练
- linux 环境变量 哪个文件,Linux环境变量配置文件
- Ubuntu服务器远程桌面分辨率低的解决办法
热门文章
- 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile
- 阶段3 3.SpringMVC·_03.SpringMVC常用注解_6 CookieValue注解
- Centos 7 Mysql 最大连接数超了问题解决
- LNMP下Redis介绍以及安装(Linux)
- tomcat优化实例
- C# 值类型与引用类型的异同
- PHP-MYSQL中文乱码问题.
- matlab保存超分辨率图
- 红帽学习笔记[RHCSA] 第三课[输出重定向、Vi编辑器]
- 线程安全的list之synchronizedList和CopyOnWriteArrayList