注:其实就只有1,3,7步是我们的客户端需要处理的,其余的只需要了解流程即可.
商户客户端根据支付宝钱包支付开发包的接口规则,通过程序生成得到签名结果及 要传输给支付宝钱包支付开发包的数据集合。
支付宝钱包支付开发包对请求数据进行处理
支付宝钱包支付开发包将请求数据根据业务规则包装后传递给支付宝服务端,服务端得到这些集合后,会先进行安全校验等验证,一系列验证通过后便会处理完成这 次发送过来的数据请求。
返回处理的结果数据
对于处理完成的交易,支付宝会以两种方式把数据分别反馈给商户应用和商户服务 器。
- 在手机客户端上,开发包客户端直接把处理的数据结果反馈给商户客户端;
- 支付宝服务器主动发起通知,调用商户在请求时设定好的页面路径(参数 notify_url,如果商户没设定,则不会进行该操作)。
对获取的返回结果数据进行处理
商户在客户端同步通知接收模块或服务端异步通知接收模块获取支付宝返回的结 果数据后,可以结合商户自身业务逻辑进行数据处理(如:订单更新、自动充值到 会员账号中等)。
同步通知结果仅用于结果展示,入库数据需以异步通知为准
。 
我们这里主要讲解集成,签约按照步骤一步步搞就可以了.
使用规则
文档主要描述如何继承接口开发包2.0标准版
文档主要描述相关接口Demo
中的 libcrypto.a
,libssl.a
静态库, openssl
,Util
文件夹和Order
,APAuthV2Info
类报错修正
如果遇到运行后报错,类似于以下提示信息:
Cannot find interface declaration for 'NSObject', superclass of 'Base64'
那么需要打开报错了的文件,增加头文件。
#import <Foundation/Foundation.h>
如果商户要在某个文件中使用支付宝的开发包类库,需增加引用头文件。
#import <AlipaySDK/AlipaySDK.h>
'openssl/asn1.h' file not found
错误
点击项目名称,点击
Build Settings
选项卡,在搜索框中,以关键字search
搜索,对Header Search Paths
增加头文件路径:$(SRCROOT)/项目名
称。如果头文件信息已增加,可不必再增加。
bitcode
,设置为NO
AlipaySDK.h
导入 UIKit
框架生成签名订单字符串
//生成订单字符串
NSString *orderSpec = [order description];
//根据私钥创建订单签名
id<DataSigner> signer = CreateRSADataSigner(privateKey);
//生成签名字符串
NSString *signedString = [signer signString:orderSpec];
设置Scheme
调用支付接口,监听支付结果回调
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
支付宝钱包打开的时候回调 在AppDelegate
中
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
}];
return YES;
}
10.处理支付宝钱包回调,在AppDelegate
中
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
}];
return YES;
}
生成商家公钥私钥(RSA密钥生成与使用)
openssl genrsa -out rsa_private_key.pem 1024
生成rsa_private_key.pem
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
命令回车 后,在当前文件夹中生成一个rsa_public_key.pem
文件为原始 的商户公钥(请妥善保存该文件,PHP 开发语言中需要使用该文件),以下为命 令正确执行截图:openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
并回车,当前界面中会直接显示出生成结果:复制PKCS8编码的私钥把复制的内容粘 贴进一个新的记事本中,可随意命名,只要知道这个是 PKCS8 格式的私钥即可(请 妥善保存该文件)。公钥与私钥的使用 # 支付宝
其加密过程可分下面:(自己理解的,不喜勿喷)先将客户端私钥加密某一段信息MD,再将团购信息和那段被加密过的信息MD做一个会话加密,成一个会话加密包,再将会话钥匙用支付宝公钥加密,再将加密包和被加密过的会话钥匙传到后台服务器做解密,先将加密过的会话秘钥用支付宝私钥解密成会话秘钥,再用会话秘钥解密加密包,再取出里面的团购信息和验证签名(计算并加密的MD,只用来做一个验证),再用客户端的公钥做一个签名验证,防止以后出现某些问题出现抵赖问题