支付宝是第三方支付平台,简单来说就是协调客户,商户,银行三者关系的方便平台
使用支付宝进行一个完整的支付功能,大致有以下步骤:
a与支付宝进行签约,获得商户ID(partner)和账号ID(seller)
b下载相应的公钥私钥文件(加密签名用)
c下载支付宝SDK
d生成订单信息
e调用支付宝客户端,有支付宝客户端跟支付宝安全服务器打交道
f支付完毕后返回支付结果给客户端和服务器
支付功能的实现
有两种方式:
1支付宝的应用可以 用url直接连接到
支付宝的官网 (当然后台是要进行处理的)
2第二种就是添加支付宝的第三方了 首先 下载支付宝的demo
支付宝的demo一般的常见问题解决
1 No architecuturesto compilefor(ONLY_ACTIVE_ARCH =YES, active arch = x86_64,VALID_ARCHS = i386)
出现这样的问题一般是
将64位编译进去就能解决了(这个问题只要你下载的是最新的demo一般很少见了 )
解决方案:
targets
-> Architectures下面的Valid Architectures添加上arm64
2将支付宝的第三方添加到项目中的时候 有时 会出现openssl文件中的.h文件报错
说此文件不能被找到出现这样的问题是 的原因一般是添加的路径 不对
解决方案:
点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search”搜索,对“Header Search Paths”增加头文件路径:$(SRCRCOT)/项目名称 设置一下路径 一般都能解决。
3 Cannot findinterface declarationfor"NSObject", supercalss of 'Base64'
解决方案打开报错的文件,增加头文件
#import
基本上支付宝中的demo里面的问题一般都会得到解决。然后
看着demo跟实际的项目结合一下就ok了
正式开始支付宝教程:
1将需要的文件,静态库等拖入工程中,这里有:include,libs,Utilities,libcrypto.a,libssl.a文件
2添加 库
Linked
FrameworksandLibraries中 添加
libssl.a
libcrypto.a SystemConfiguration.framework
AlipaySDK.framework
3如果商户要在某个文件中使用给支付宝的SDK类库,需要增加引用头文件
#import"Order.h"
#import"DataSigner.h"
#import
4后面的基本上都是 按照官方demo写的
接口调用步骤:
1.封装订单模型将商品信息赋予AlixPayOrder的成员变量
Order *order =
[[Order alloc] init];
应用注册scheme,在项目的info.plist定义URL types
NSString *appScheme =@"zhifu";
生成订单描述
NSString *orderSpec =
[order description];
2.签名:获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
idsigner
= CreateRSADataSigner(@“私钥key”);
NSString
*signedString = [signer signString:orderSpec];
传入订单描述
进行 签名
NSString
*signedString = [signer signString:orderSpec];
3.生成订单字符串
NSString *orderString= [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderSpec,signedString,@"RSA"];
4.调用支付接口
[[AlipaySDK
defaultService] payOrder:orderString fromScheme:appScheme
callback:^(NSDictionary *resultDic) { }];