iOS 支付宝支付开发集成流程,这里记载的是签名保存在前台的集成,
1 alipay
2 下载sdk
将需要的文件,静态库等拖入工程中,这里有:alipaySDK.framework,alipaySDK.bundle,libcrypto.a,libssl.a,openssl,order.h,order.m文件
![](/assets/blank.gif)
![](/assets/blank.gif)
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
4此时运行程序还会报错 意思大概是
ios调支付宝找不到头文件<openssl/rsa.h>
,这个是官方sdk没有把路径带进来,所以你需要手动添加 步骤是
1找到TARGETS 的building setting 下 搜索 header search path 找到这项添加路径 (主要 需要添加相对路径)双击这一项 点击加号按钮 添加openssl文件路径 2如何获取路径 右键工程openssl文件夹 show in finder 找到双击显示简介找到位置 复制出来路径 要工程名字后面的路径,在前面拼接上
$(PROJECT_DIR)/工程名字后面的路径;
此时运行工程 就可以正常了,
好了言归正传 开发集成代码
![](/assets/blank.gif)
+(void)payWithOrderDic:(NSDictionary *)orderDic success:(alipayBlock)success ispaying:(alipayBlock)ispaying Error:(alipayBlock)error{
Alipay *alipay = [[Alipay alloc]init];
[alipay payWithOrderDic:orderDic success:success ispaying:ispaying Error:error];
}
//此方法 是初始化方法 初始化 一些吊起支付宝 sdk 的方法 的参数的信息配置 里面的_partner _seller _pritvatekey 是全部变量 私有变量 这些变量 都是老板或者后台 给的 是死的 不会改变的 写个宏存下就好
-(instancetype)init {
self = [super init];
if (self) {
//从plist文件获取当前账号信息
//商户id (直接从老板要)
_partner = ALIPAY_PARTNER;
//商户账号
_seller = ALIPAY_SELLER;
//商户的私钥
_privatekey = ALIPAY_PRIBVATEKEY;
}
return self;
}
//此方法 就是 在配置 吊起支付宝 sdk 的payorder方法需要的参数的配置 签名等一些列操作
-(void)payWithOrderDic:(NSDictionary *)orderDic success:(alipayBlock)success ispaying:(alipayBlock)ispaying Error:(alipayBlock)error{
//首先判断 商户ID 私钥 和账号是否获取成功
if (_partner.length==0||_seller.length ==0||_privatekey.length == 0) {
DPLog(@"缺少ID,账户,私钥,");
error();
return;
}
//生成订单信息 并签名
Order *order = [[Order alloc]init];
order.partner = _partner;//商户在支付宝签约时,支付宝为商户分配的唯一标识号(以2088开头的16位纯数字)。
order.sellerID = _seller;//卖家支付宝账号对应的支付宝唯一用户号(以2088开头的16位纯数字),订单支付金额将打入该账户,一个partner可以对应多个seller_id。
order.outTradeNO = orderDic[@"outtradeno"];//订单id 改商品的唯一表示(app端自行制定)就是一串随机数 32位以下的
order.subject = orderDic[@"subject"];//商品标题//商品的标题/交易标题/订单标题/订单关键字等。
order.body = orderDic[@"body"];//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
order.totalFee = [NSString stringWithFormat:@"%@",orderDic[@"totalFee"]];//商品的金额 //注意 是保留两位小数的 多了不行 支付宝 不认同 必须是两位小数的字符串
order.service =@"mobile.securitypay.pay";//支付宝的服务器 固定的 都是这个
order.paymentType =@"1";//付款类型,1:商品购买。(不传情况下的默认值)
order.inputCharset =@"utf-8";//商户网站使用的编码格式,固定为utf-8。
order.itBPay = @"30m";//设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。当用户输入支付密码、点击确认付款后(即创建支付宝交易后)开始计时。取值范围:1m~15d,或者使用绝对时间(示例格式:2014-06-13 16:00:00)。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。该参数数值不接受小数点,如1.5h,可转换为90m。(一般设置为30m)
order.showURL =@"m.alipay.com";//支付宝的scheme 标示 固定的 谁开发 都是这个
NSString *appscheme = @"com.changsheng.wyzxclient"; //这个是程序间调转的你得app的表示 下面有介绍
order.notifyURL = [NSString stringWithFormat:@"%@/service/alipay/orderComplete",IMAGEHEADER] ;//回调URL 这个URL是在支付之后,支付宝通知后台服务器,使数据同步更新,必须填,不然支付无法成功(去问后台 要这个网址)
//将商品信息拼接成字符串
NSString *orderSpec = [order description];
DPLog(@"orderSpec = %@",orderSpec);
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
id<DataSigner>signer = CreateRSADataSigner(_privatekey);//这个参数 是秘钥 是之前初始化方法 初始化的
NSString *signedString = [signer signString:orderSpec];
//将签名成功的字符串格式化为订单字符串
NSString *orderString = nil;
if (signedString !=nil) {
orderString =[NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderSpec, signedString, @"RSA"];//次方法 就是把 签名后的 和 订单信息的两个字符串 拼接为一个支付宝规则字符串 留着传给支付宝的方法
//支付后的状态处理 此方法 是吊起支付宝sdk的方法 传的参数 就是上一步构造的字符串
[[AlipaySDK defaultService]payOrder:orderString fromScheme:appscheme callback:^(NSDictionary *resultDic) {
DPLog(@"%@",resultDic);
if ([[resultDic objectForKey:@"resultStatus"]intValue] ==9000) {
//支付成功
success();
}else if ([[resultDic objectForKey:@"resultStatus"]intValue] ==8000){
//正在处理
ispaying();
}else{
//支付错误
error();
}
}];
}
}
针对方才说的对于程序间调用的 那个参数如何设置 这个就是简单的程序间调用 需要设置 就是所谓的白名单 在tagate 的 info 里 有一个URL Types 点开 点击加号 在url schems 里添加 个字符串 一般是 budle id
![](/assets/blank.gif)
iOS 支付宝支付开发集成流程,这里记载的是签名保存在前台的集成,相关推荐
- php个人支付宝对账,PHP实现个人支付宝支付开发(一) - 免签支付接口
...Access2007 表中 同时 显示 明细 .小计. 总计 ? ID fullname pay 2 a ¥500.00 4 a ¥600.00 5 a ¥700.00 6 b ¥800.00 ...
- php开发支付宝支付密码忘记了怎么办_PHP实现个人支付宝支付开发(一)
在网站开发过程中,特别是商城类网站,都会要求网站必须能实现在线支付的功能.此时就需要通过第三方的支付平台来实现完整的交易流程.常见的第三方支付平台就比如支付宝,那么网站实现支付宝在线支付功能就需要进行 ...
- iOS之“支付宝支付”开发流程
支付宝快捷支付的主要步骤: 先与支付宝签约,获得商户ID(partner)和账号ID(seller); 下载相应的公钥私钥文件(加密签名用); 下载支付宝SDK; 生成订单信息; 调用支付宝客户端,由 ...
- iOS支付宝支付集成
概述 iOS支付宝支付集成 详细 代码下载:http://www.demodashi.com/demo/10729.html 支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧( ...
- php实现支付宝支付接口,PHP实现个人支付宝支付开发(二)
在前面的文章<PHP实现个人支付宝支付开发(一)>中,我们为大家简单介绍了通过第三方接口平台码支付来实现个人支付宝支付功能的交易流程. 下面我们继续结合图文,给大家介绍通过码支付实现PHP ...
- 支付宝支付 第一集:没有营业执照,怎样申请一个支付宝的商家号进行开发?使用支付宝支付开发网页移动应用,一分钟申请注册一个支付宝支付沙箱账号,支付宝支付入驻、创建应用、获取AppID
支付宝支付 第一集:没有营业执照,怎样申请一个支付宝的商家号进行开发?使用支付宝支付开发网页&移动应用,一分钟申请注册一个支付宝支付沙箱账号,支付宝支付入驻.创建应用.获取AppID 一.资源 ...
- iOS支付宝(Alipay)接入详细流程,比微信支付更简单,项目实战中的问题分析
最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑,很多人都说文档不全什么的,确实没有面面 俱到,但是认真一步一步测试下还是妥妥的,再配合懂得后台,效率也是很高的,看了这篇文章,你也只要几分钟 ...
- iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析
最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑,很多人都说文档不全什么的,确实没有面面俱到,但是认真一步一步测试下还是妥妥的,再配合懂得后台,效率也是很高的,看了这篇文章,你也只要几分钟, ...
- ios 支付宝支付集成
支付宝支付: 下载官方demo,把需要的framwork下载下来,在自己的工程中,新建文件夹,然后全部塞进去,到build phases中把需要的全部导入,其中xcode7以上需要多导入两个.a文件, ...
最新文章
- 使用NeMo快速入门NLP、实现机器翻译任务,英伟达专家实战讲解,内附代码
- SQL 四种连接:内连接、左外连接、右外连接、全连接--转载
- 等压线上怎么画风向_圣诞贺卡怎么写?向你爱的人送上最有温度的祝福吧!
- bzoj 2427: [HAOI2010]软件安装(Trajan+树形DP)
- 前端 encodeURI 为什么要编码两次
- ascll编码表图片_ascii码对照表
- 第五届电气学院比赛之XXX——数码管显示模块
- Unity笔记之切换鼠标图标样式、PSD格式文件导入Unity
- basler恢复出厂设置_bios恢复出厂设置
- P1_M4_L5 Lateral Dynamic Bicycle Model(自行车模型的横向动力学建模)
- Android 双卡双待
- [288]关于MySQL的1064错误
- OSChina 万圣节乱弹 ——重口味请谨慎点开
- 《C和指针》阅读笔记
- Tiled地图编辑器(一)实现坦克大战
- 天翎数字孪生解决方案
- Tekla Structures Design Suite安装步骤
- ASP如何调用Delphi开发的WebService服务
- python字符串数组转对象类型
- 分子分母同时减去\加上一个数字,结果变化情况