先了解下支付宝支付的流程
image.png
sdk付款的方式有两种模式:如果手机存在支付宝app,则直接调到支付宝付款,不存在的场景下,在sdk内部进行h5支付
开始操作
导入支付宝sdk 集成
1导入代码
image.png
image.png
2 设置白名单
image.png
3 重写appdelegate的两个方法
image.png
支付代码
/**
支付宝支付
@param params 参数字典 商品ID 商品数量等
*/
-(void)aliPay:(NSDictionary *)params {
//第一步 用户已经选好商品并且选择的是支付宝支付
//第二步 app将用户选择的信息发送给后台 后台收到用户支付单,然后返回订单信息给app
[ILNetworking postEncryptAndDecryptResponse:@"AliPayOrderURL" params:params success:^(ILApiResult *apiResult) {
if (apiResult.isSuccess) {
if (apiResult.result) {
//第三步 app收到后台给的签名的订单信息 根据订单唤起支付宝钱包进行支付跳转
/**
支付接口
参数1:订单信息 里面包含了支付宝appID 等信息
参数2:调用支付的app注册在info.plist中的scheme
参数3:支付结果回调Block,用于wap支付结果回调(非跳转钱包支付 跳转钱包的支付结果在appdelegate里回调查看)
*/
[[AlipaySDK defaultService] payOrder:[NSString stringWithFormat:@"%@",apiResult.result] fromScheme:@"EnglishProject" callback:^(NSDictionary *resultDic) {
//第四部 支付宝钱包向支付宝后台提交支付
//第五部 支付宝后台返回给支付宝钱包支付结果 并且 支付宝后台同时异步通知支付结果给商户后台
//第六步 支付宝钱包返回拿到的结果给app
//跳转钱包的支付结果在appdelegate里回调查看 拿到成功的结果后要结合后台拿到支付宝后台的结果一起做是否支付成功的判断
//用于wap支付结果回调 就是当前这个,它不会走appdelegate里回调了
NSLog(@"支付宝支付结果:%@",resultDic);
}];
}
else{
NSLog(@"支付宝支付 获取订单失败");
}
}
else{
NSLog(@"支付宝支付 获取订单失败:%@",apiResult.msg);
}
} failure:^(NSError *error) {
NSLog(@"支付宝支付 获取订单失败 网络问题");
}];
}
与微信支付的区别
支付宝不需要注册,微信需要注册
微信需要拿到appid,而支付宝的appid是在你请求自己后台的时候,后台会给你加签之后的订单信息里面包含的appid等信息
``