支付宝快捷支付:
官方文档中,支付宝说建议我们使用支付时要讲签名过程放在服务器端,这样安全。同时给的demo中签名是在本地移动端做得。。。不过支付宝的集成还是挺简单的。
为了安全签名当然放后台做了。我实现支付的过程中主要遇到是参数问题,最后提,先大概梳理一下流程^。
1.当然第一步是注册账号,创建应用(应用类型根据情况来选择),申请开通支付功能(多久忘了,我记得是挺快的)。
2.导入SDK添加库什么的就按照官方文档来就好了,不赘述了
3.添加完成后command+b试下是否编译OK,报错就根据提示去改就好了(注意文件别重复添加了,一般不会出现啥问题)
4.然后,导入头文件 #import <AlipaySDK/AlipaySDK.h>,开始调用支付API。(配置啥的不要放本地了,交给后台。注意:关于签名的问题要提前和后台商量好怎么做,我们是建了个post请求)
case 1:// 支付宝 { //应用注册scheme,在AlixPayDemo-Info.plist定义URL types NSString *appScheme = @"Alixxxxx";//这个可以任意自定义,不过最好是和自己的应用名字相关的 [[AlipaySDK defaultService] payOrder:result[@"info"] fromScheme:appScheme callback:^(NSDictionary *resultDic) { // 参数result[@"info"]是请求到的验证后的签名(字符串)
NSLog(@"resultDic === %@", resultDic); NSInteger heCha; NSString *heChaLable = [NSString stringWithFormat:@"%@",resultDic[@"resultStatus"]]; heCha = [heChaLable integerValue]; if (heCha==9000 ) { //这里做支付成功后你想做的事情 [AlertUtil showAlertInfoSingle:@"支付成功"]; } if (heCha==8000) { UIAlertView *shibai=[[UIAlertView alloc]initWithTitle:@"提示" message:@"订单正在处理中" delegate:self cancelButtonTitle:nil otherButtonTitles:@"请重新支付", nil]; [shibai show]; } if (heCha==4000) { UIAlertView *shibai=[[UIAlertView alloc]initWithTitle:@"提示" message:@"订单支付失败" delegate:self cancelButtonTitle:nil otherButtonTitles:@"请重新支付", nil]; shibai.delegate=self; [shibai show]; } if (heCha==6001) { [AlertUtil showAlertInfoSingle:@"支付失败"]; } if (heCha==6002) { UIAlertView *shibai=[[UIAlertView alloc]initWithTitle:@"提示" message:@"网络连接出错" delegate:self cancelButtonTitle:nil otherButtonTitles:@"请重新支付", nil]; shibai.delegate=self; [shibai show]; } }]; } break;
注意://应用注册scheme,操作过程见下图
图中 URL Scheme 处填写上面代码中定义的 Alixxxxx
5.OK,这样支付宝集成咱们的货就算完成了,但是,后台返回的字符串可不一定能用啊。。。
6.所以提下我出现的问题(后台要解决的):
a.参数问题,一定要符合支付宝的要求,后台给你的签名字符串中要与下面参数的名字一毛一样(我们之前有个参数名字不同,调了N久才发现,哭),下面贴个签名字符串的实例(参数标绿色了):
"partner=\"2088101568353491\"&seller_id=\"2088101568353491\"&out_trade_no=\"YR2VGG3G1I31XDZ\"&subject=\"1\"&body=\"我是测试数据\"&total_fee=\"0.02\"¬ify_url=\"http://www.xxx.com\"&service=\"mobile.securitypay.pay\"&payment_type=\"1\"&_input_charset=\"utf-8\"&it_b_pay=\"30m\"&sign=\"GsSZgPloF1vn52XAItRAldwQAbzIgkDyByCxMfTZG%2FMapRoyrNIJo4U1LUGjHp6gdBZ7U8jA1kljLPqkeGv8MZigd3kH25V0UK3Jc3C94Ngxm5S%2Fz5QsNr6wnqNY9sx%2Bw6DqNdEQnnks7PKvvU0zgsynip50lAhJmflmfHvp%2Bgk%3D\"&sign_type=\"RSA\""
主要参数解释(具体的不见得一样,这个看你签名时传的有啥了):https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.fdQytM&treeId=59&articleId=103678&docType=1
notify_url:支付的回调地址
body:商品的描述
total_fee:商品的价格
sign:签名串
sign_type:验签方式