当前位置: 欧洲杯竞猜 > 计算机知识 > 正文

支付宝总括,微信支付简单总结

时间:2019-08-11 00:52来源:计算机知识
iOS-集成支付宝支付简单总计,ios-支付宝总结 支付宝飞速支付: 官方文档中,支付宝说提出我们选拔支付时要讲签名进程放在服务器端,那样安全。同不常候给的demo中签字是在该地移

iOS-集成支付宝支付简单总计,ios-支付宝总结

支付宝飞速支付:

官方文档中,支付宝说提出我们选拔支付时要讲签名进程放在服务器端,那样安全。同不常候给的demo中签字是在该地移动端做得。。。可是支付宝的融会照旧挺轻易的。

为了安全具名当然放后台做了。小编实现支付的长河中任重(Ren Zhong)而道远遇到是参数难点,最后提,先大约梳理一下流程^。

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,操作进程见下图

欧洲杯竞猜 1

图中 U揽胜极光L 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="""

重要参数解释(具体的不一定一样,这几个看你签字时传的有甚了):

notify_url:支付的回调地址

body:商品的叙说

total_fee:商品的价格

sign:签名串

sign_type:验签格局

支付宝快速支付: 官方文档中,支付宝说建议大家选用支付时要讲签字进程放在服务器端,这...

支付宝快速支付:

支付宝连忙支付:

合立陶宛语档中,支付宝说建议我们应用支付时要讲签字进程放在服务器端,那样安全。同一时候给的demo中具名是在本地移动端做的。。。可是支付宝的集成照旧较轻易的。

官方文书档案中,支付宝说提议我们选拔支付时要讲签字进程放在服务器端,那样安全。同期给的demo中具名是在本土移动端做的。。。可是支付宝的融会照旧较轻松的。

为了安全签名当然放后台做了。作者完毕支付的进度中重视际遇是参数难点,最终提,先大致梳理一下流水线。

为了安全具名当然放后台做了。小编完成支付的进度中着重境遇是参数难点,最终提,先差没多少梳理一下流水生产线。

1.本来首先步是注册账号,创造应用(应用项目根据气象来挑选),申请开通支付作用(多长时间忘了,影像中是挺快的)。

1.自然首先步是挂号账号,创设应用(应用类型依据情况来抉择),申请开始展览支付功效(多长期忘了,影象中是挺快的)。

欧洲杯竞猜,2.导入SDK增加库什么的就根据官方文书档案来就好了,不赘述了

2.导入SDK增添库什么的就遵照官方文书档案来就好了,不赘述了

支付宝官方文档

支付宝官方文书档案

3.加多完事后command b试下是或不是编写翻译OK,报错就依照提示去改就好了(注意库文件再度增添难点,一般不会现出难题)

3.加多完毕后command b试下是还是不是编写翻译OK,报错就依照提醒去改就好了(注意库文件再次增多难点,一般不会出现难题)

4.导入头文件 #import <阿里paySDK/AlipaySDK.h>,开头调用支付API。(配置不要放本地了,交给后台。注意:关于签名的标题要提早和后台沟通好怎么做,我们是建了个post央浼)

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;    
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,操作进度见下图

留神://应用注册scheme,操作进程见下图

欧洲杯竞猜 2

欧洲杯竞猜 3

图中 U昂CoraL Scheme 处填写上面代码中定义的 阿里xxxxx

图中 UOdysseyL Scheme 处填写上边代码中定义的 阿里xxxxx

5.OK,那样支付宝集成算完结了,不过!后台重返的字符串可不必然能用啊。。。

5.OK,那样支付宝集成算完结了,然而!后台重回的字符串可不自然能用啊。。。

6.所以提下小编出现的主题材料(后台要消除的):

6.所以提下作者出现的标题(后台要消除的):

  a.参数难题,一定要吻合支付宝的供给,后台给你的具名字符串中要与下部参数的名字一毛一样(大家此前有个参数名字不相同,调了N久才意识,哭),上边贴个具名字符串的实例(参数标铁黑了):

  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/MapRoyrNIJo4U1LUGjHp6gdBZ7U8jA1kljLPqkeGv8MZigd3kH25V0UK3Jc3C94Ngxm5S/z5QsNr6wnqNY9sx+w6DqNdEQnnks7PKvvU0zgsynip50lAhJmflmfHvp+gk="&sign_type="RSA""

"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/MapRoyrNIJo4U1LUGjHp6gdBZ7U8jA1kljLPqkeGv8MZigd3kH25V0UK3Jc3C94Ngxm5S/z5QsNr6wnqNY9sx+w6DqNdEQnnks7PKvvU0zgsynip50lAhJmflmfHvp+gk="&sign_type="RSA""

首要参数解释(具体的未必同样,那些看你具名时药传的有如何了):

首要参数解释(具体的未必一样,那些看你具名时药传的有如何了):

notify_url:支付的回调地址

notify_url:支付的回调地址

body:商品的叙说

body:商品的描述

total_fee:商品的价钱

total_fee:商品的价位

sign:签名串

sign:签名串

sign_type:验签方式

sign_type:验签格局

 

 

 

 

微信支付:

微信支付:

比很多朋侪都说微信支付真的是太坑了,官方文档都包括错的。。。。作者也被坑了N次,鉴于那些坑太多,做下轻松步骤和备份记录,尽量幸免再一次进坑里。

无数同伴都说微信支付真的是太坑了,官方文书档案都包蕴错的。。。。我也被坑了N次,鉴于这一个坑太多,做下轻易步骤和备份记录,尽量幸免再一次进坑里。

1.报了名什么样的略过,关于开采的提请,相关资料向合营社相关职员要到就OK;

1.报了名什么样的略过,关于开荒的报名,相关资料向同盟社连带人口要到就OK;

2.布局:参照文书档案来  微信官方文书档案

2.配备:参照文书档案来  微信官方文书档案

3.付出央求主要代码

3.费用须要主要代码

case 3:// 微信支付
                    {
                        NSLog(@"微信支付");
                        NSDictionary *data = result[@"data"];// result[@"data"]是请求后台获取到所需数据  需要注意:这里的数据均是二次签名后的数据,不要用第一次签名的数据
                        PayReq *request = [[PayReq alloc] init];
                        request.partnerId = data[@"partnerid"];//@"10000100";// 商户号
                        request.prepayId= data[@"prepayid"];//@"1101000000140415649af9fc314aa427";// 预支付交易会话id
                        request.package = @"Sign=WXPay";// 固定值
                        request.nonceStr= data[@"noncestr"];//@"a462b76e7436e98e0ed6e13c64b4fd1c";// 随机字符串
                        request.timeStamp= [data[@"timestamp"] intValue];//@"1397527777";// 时间戳
                        request.sign= data[@"sign"];// 签名字符串
                        [WXApi sendReq:request];// 发起请求
                    }
                        break;
case 3:// 微信支付
                    {
                        NSLog(@"微信支付");
                        NSDictionary *data = result[@"data"];// result[@"data"]是请求后台获取到所需数据  需要注意:这里的数据均是二次签名后的数据,不要用第一次签名的数据
                        PayReq *request = [[PayReq alloc] init];
                        request.partnerId = data[@"partnerid"];//@"10000100";// 商户号
                        request.prepayId= data[@"prepayid"];//@"1101000000140415649af9fc314aa427";// 预支付交易会话id
                        request.package = @"Sign=WXPay";// 固定值
                        request.nonceStr= data[@"noncestr"];//@"a462b76e7436e98e0ed6e13c64b4fd1c";// 随机字符串
                        request.timeStamp= [data[@"timestamp"] intValue];//@"1397527777";// 时间戳
                        request.sign= data[@"sign"];// 签名字符串
                        [WXApi sendReq:request];// 发起请求
                    }
                        break;

4.AppDelegate.m 中设置回调

4.AppDelegate.m 中设置回调

// 微信 WXApiDelegate协议的方法
- (void)onResp:(BaseResp *)resp {
    // 如果第三方程序向微信发送了sendReq的请求,那么onResp会被回调。sendReq请求调用后,会切到微信终端程序界面。
    NSLog(@"%@",resp);
    if ([resp isKindOfClass:[PayResp class]]) {

        PayResp *response = (PayResp *)resp;
        NSString *strMsg = [NSString stringWithFormat:@"errcode:%d", resp.errCode];

        switch (response.errCode) {
            case WXSuccess:
            {// 支付成功
                NSString *strTitle = @"支付结果";                
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                [alert show];
            }
                break;

            default:
            {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"支付结果" message:@"支付失败" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                [alert show];
                break;
            } 
        }
    }
}
// 微信 WXApiDelegate协议的方法
- (void)onResp:(BaseResp *)resp {
    // 如果第三方程序向微信发送了sendReq的请求,那么onResp会被回调。sendReq请求调用后,会切到微信终端程序界面。
    NSLog(@"%@",resp);
    if ([resp isKindOfClass:[PayResp class]]) {

        PayResp *response = (PayResp *)resp;
        NSString *strMsg = [NSString stringWithFormat:@"errcode:%d", resp.errCode];

        switch (response.errCode) {
            case WXSuccess:
            {// 支付成功
                NSString *strTitle = @"支付结果";                
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                [alert show];
            }
                break;

            default:
            {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"支付结果" message:@"支付失败" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                [alert show];
                break;
            } 
        }
    }
}

5.小心难题:

5.专注难点:

  a.借使程序中而且并入了友盟,那么在 register 时,要先友盟后微信

  a.借使程序中何况并入了友盟,那么在 register 时,要先友盟后微信

  b.支付时独有三个规定按键,确认再次回到后 ret = -2 一般正是伸手时参数有毛病,签字难点的可能率非常大。

  b.支付时唯有贰个规定开关,确认再次回到后 ret = -2 一般就是伸手时参数格外,具名难题的概率十分的大。

  c.央浼所用数据一定是一回签订契约的数据!

  c.须要所用数据肯定是三遍签约的数码!

编辑:计算机知识 本文来源:支付宝总括,微信支付简单总结

关键词: 欧洲杯竞猜