iOS-集成支付宝支付、微信支付简单总结
支付宝快捷支付:
官方文档中,支付宝说建议我们使用支付时要讲签名过程放在服务器端,这样安全。同时给的demo中签名是在本地移动端做的。。。不过支付宝的集成还是较简单的。
为了安全签名当然放后台做了。我实现支付的过程中主要遇到是参数问题,最后提,先大概梳理一下流程。
1.当然第一步是注册账号,创建应用(应用类型根据情况来选择),申请开通支付功能(多久忘了,印象中是挺快的)。
2.导入SDK添加库什么的就按照官方文档来就好了,不赘述了
支付宝官方文档
3.添加完成后command+b试下是否编译OK,报错就根据提示去改就好了(注意库文件重复添加问题,一般不会出现问题)
4.导入头文件 #import <AlipaySDK/AlipaySDK.h>,开始调用支付API。(配置不要放本地了,交给后台。注意:关于签名的问题要提前和后台沟通好怎么做,我们是建了个post请求)
case 1:// 支付宝 {//应用注册scheme,在AlixPayDemo-Info.plist定义URL typesNSString *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:验签方式
微信支付:
很多小伙伴都说微信支付真的是太坑了,官方文档都带有错的。。。。我也被坑了N次,鉴于这个坑太多,做下简单步骤和备份记录,尽量避免再次进坑里。
1.注册什么的略过,关于支付的申请,相关资料向公司相关人员要到就OK;
2.配置:参照文档来 微信官方文档
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";// 预支付交易会话idrequest.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 中设置回调
// 微信 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.注意问题:
a.如果程序中同时集成了友盟,那么在 register 时,要先友盟后微信
b.支付时只有一个确定按钮,确认返回后 ret = -2 一般就是请求时参数有问题,签名问题的几率较大。
c.请求所用数据一定是二次签名的数据!
转载于:https://www.cnblogs.com/zhangying-domy/p/5383005.html
iOS-集成支付宝支付、微信支付简单总结相关推荐
- android支付宝支付微信支付封装,如何在Android App中集成支付宝和微信支付功能
前言 本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友相信会是一个很好的参考,下面话不多说了,来一起看看详细的介 ...
- Android和IOS 调用 支付宝和微信 支付方法
Android和IOS 调用 支付宝和微信 支付方法 转载于:https://www.cnblogs.com/huangzineng/p/7235705.html
- java 苹果内支付_一款集成支付宝、微信支付的Java源码,支持安卓、苹果,maven项目可以看看。申精...
**使用方法** ### 1.引入 ``` compile 'com.javen205.jpay:jpaysdk:latest.release.here' ``` ### 2. Android Man ...
- iOS 支付宝支付 微信支付SDK接口不统一? 盘他!
开发过支付宝.微信支付的同学都知道,微信的支付 API 设计感觉是 Java 开发工程师写的,远不如支付宝 SDK 的接口设计用起来顺手.在这里,统一封装微信支付和支付宝支付的API,使两种支付方 ...
- iOS开发之第三方支付微信支付教程,史上最新最全第三方微信支付方式实现、微信集成教程,微信实现流程
本章项目demo: https://github.com/zhonggaorong/weixinLoginDemo 本章不讲解: 微信sdk的集成 , 项目集成的文章请参照 (包含微信登录): h ...
- 第三方移动支付类产品竞品分析:支付宝VS微信支付VS云闪付
第三方移动支付类产品竞品分析:支付宝VS微信支付VS云闪付 文章目录 第三方移动支付类产品竞品分析:支付宝VS微信支付VS云闪付 一.分析背景与竞品选择 1.竞品分析目的 2.行业研究与市场趋势分析 ...
- Apple Pay能否打破支付宝和微信支付一统天下的格局?
Apple Pay已于今日向大陆地区的苹果设备用户正式开放,这距离2014年秋天过去了一年半的时间,在那一年9月份的苹果秋季新品发布会中,库克第一次向人们展示了这项基于Touch ID(指纹识别)和N ...
- Android如何调用支付宝支付 微信支付
1.支付宝支付-------------------------- 1,到支付宝官网,下载支付宝集成开发包,看懂里面的关键代码 由于android设备一般用的都是无线支付,所有我们申请的就是支付宝无线 ...
- Flutter 成功在鸿蒙上运行;微信 8.0 发布;支付宝和微信支付达到反垄断标准 | 极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 丁恩华 出品 | CSDN(ID:CSDNnews ...
- 在线支付系列【2】支付宝和微信支付发展史
有道无术,术尚可求,有术无道,止于术. 文章目录 支付宝 发展史 起步阶段 发展阶段 上升阶段 微信支付 发展史 支付宝 支付宝是阿里巴巴集团于 2004 年推出的一款第三方支付的产品,目前隶属于蚂蚁 ...
最新文章
- 2019 年,19 种方法让自己成为更好的 Node.js 工程师
- Foundation HTML5 Canvas中的2处错误
- 【网络安全】如何利用工具发现内部或外部网络攻击面
- 标准成本、目标成本、实际成本
- 多人互砍游戏的后台服务器的多线程架构
- Python--简单的目录扫描脚本
- STM32——I2C
- 微型计算机上的南桥芯片功能,微型计算机及接口技术2012年1月真题试题(04732)...
- 一个STM32编译Makefile模板
- Jscript 控制程序的流程
- 动态规划--凑硬币问题
- 计算机辅助绘图包括,计算机辅助绘图实用教程
- android7.1索尼,Xperia 1
- Latex论文写作各种小问题
- iMac恢复出厂设置及安装
- 学习如何使用 Git 来压扁、变基和精选
- ❤表白❤相册——动态3D图片墙
- C语言飞机大战程序思路,C语言代码实现飞机大战
- LCD1602知识详解(很详尽的)
- 爱码小士丨代码一敲十年,收入虽高前途摇摆