支付宝快捷支付:

官方文档中,支付宝说建议我们使用支付时要讲签名过程放在服务器端,这样安全。同时给的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\"&notify_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-集成支付宝支付、微信支付简单总结相关推荐

  1. android支付宝支付微信支付封装,如何在Android App中集成支付宝和微信支付功能

    前言 本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友相信会是一个很好的参考,下面话不多说了,来一起看看详细的介 ...

  2. Android和IOS 调用 支付宝和微信 支付方法

    Android和IOS 调用 支付宝和微信 支付方法 转载于:https://www.cnblogs.com/huangzineng/p/7235705.html

  3. java 苹果内支付_一款集成支付宝、微信支付的Java源码,支持安卓、苹果,maven项目可以看看。申精...

    **使用方法** ### 1.引入 ``` compile 'com.javen205.jpay:jpaysdk:latest.release.here' ``` ### 2. Android Man ...

  4. iOS 支付宝支付 微信支付SDK接口不统一? 盘他!

      开发过支付宝.微信支付的同学都知道,微信的支付 API 设计感觉是 Java 开发工程师写的,远不如支付宝 SDK 的接口设计用起来顺手.在这里,统一封装微信支付和支付宝支付的API,使两种支付方 ...

  5. iOS开发之第三方支付微信支付教程,史上最新最全第三方微信支付方式实现、微信集成教程,微信实现流程

    本章项目demo: https://github.com/zhonggaorong/weixinLoginDemo 本章不讲解: 微信sdk的集成 , 项目集成的文章请参照 (包含微信登录):   h ...

  6. 第三方移动支付类产品竞品分析:支付宝VS微信支付VS云闪付

    第三方移动支付类产品竞品分析:支付宝VS微信支付VS云闪付 文章目录 第三方移动支付类产品竞品分析:支付宝VS微信支付VS云闪付 一.分析背景与竞品选择 1.竞品分析目的 2.行业研究与市场趋势分析 ...

  7. Apple Pay能否打破支付宝和微信支付一统天下的格局?

    Apple Pay已于今日向大陆地区的苹果设备用户正式开放,这距离2014年秋天过去了一年半的时间,在那一年9月份的苹果秋季新品发布会中,库克第一次向人们展示了这项基于Touch ID(指纹识别)和N ...

  8. Android如何调用支付宝支付 微信支付

    1.支付宝支付-------------------------- 1,到支付宝官网,下载支付宝集成开发包,看懂里面的关键代码 由于android设备一般用的都是无线支付,所有我们申请的就是支付宝无线 ...

  9. Flutter 成功在鸿蒙上运行;微信 8.0 发布;支付宝和微信支付达到反垄断标准 | 极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 丁恩华 出品 | CSDN(ID:CSDNnews ...

  10. 在线支付系列【2】支付宝和微信支付发展史

    有道无术,术尚可求,有术无道,止于术. 文章目录 支付宝 发展史 起步阶段 发展阶段 上升阶段 微信支付 发展史 支付宝 支付宝是阿里巴巴集团于 2004 年推出的一款第三方支付的产品,目前隶属于蚂蚁 ...

最新文章

  1. 2019 年,19 种方法让自己成为更好的 Node.js 工程师
  2. Foundation HTML5 Canvas中的2处错误
  3. 【网络安全】如何利用工具发现内部或外部网络攻击面
  4. 标准成本、目标成本、实际成本
  5. 多人互砍游戏的后台服务器的多线程架构
  6. Python--简单的目录扫描脚本
  7. STM32——I2C
  8. 微型计算机上的南桥芯片功能,微型计算机及接口技术2012年1月真题试题(04732)...
  9. 一个STM32编译Makefile模板
  10. Jscript 控制程序的流程
  11. 动态规划--凑硬币问题
  12. 计算机辅助绘图包括,计算机辅助绘图实用教程
  13. android7.1索尼,Xperia 1
  14. Latex论文写作各种小问题
  15. iMac恢复出厂设置及安装
  16. 学习如何使用 Git 来压扁、变基和精选
  17. ❤表白❤相册——动态3D图片墙
  18. C语言飞机大战程序思路,C语言代码实现飞机大战
  19. LCD1602知识详解(很详尽的)
  20. 爱码小士丨代码一敲十年,收入虽高前途摇摆

热门文章

  1. 爬虫之Beautiful Soup库入门
  2. 技术干货 | SDN controller高可用之路
  3. 50 个 jQuery 插件可将你的网站带到另外一个高度 【已翻译100%】
  4. python3使用smtplib通过qq邮箱发送邮件
  5. 为何大富连续三天彻夜未眠!
  6. linux 禁ping
  7. 【上采样问题】将浮点运算转换成整数运算
  8. 4月26 simulink数据input,与全局变量建立堆栈
  9. Practical Lessons from Predicting Clicks on Ads at Facebook
  10. scala下使用akka计算圆周率pi