转载请注明出处

今天遇到了一个有意思的问题,就是支付调用支付宝,但是后台返的链接类似这种(https://qr.alipay.com/bax05299bjty5xvbkjii8018)。这种链接直接打开在APP中是不行的,转成二维码可以用支付宝扫码支付。

那么如何不生成二维码,然后扫描在进行支付呢?这类似于支付宝转账。相当于程序跳转到支付宝转账。

附:通过半天的摸索,终于明白转账的套路:1,生成收款用的二维码。(支付宝上有)
2,用二维码扫描工具扫描出对应URL。这个链接在 PC 端访问,会跳到支付宝首页,但是在 iPhone 上面访问,这个网页会做一次支付宝 app 的 scheme 跳转。这个过程已经可以接受了,在 app 内 openURL,会先跳到 Safari,然后 Safari 提示你去支付宝付款。eg:HTTPS://QR.ALIPAY.COM/*********
2,在 app 的代码里面,只要做一次 openURL,就会跳转到支付宝里面,直接打开第一步里面那个付款对象,并且 title 是扫码付款,这个现象和直接扫了第一步的二维码是一模一样的。 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=上边对应的URL"]];
3,搞定。

so,我们就可以这样做。

    // 首先拼接urlStr  前面相当于固定的  只要再后面拼上返回的链接NSString *url = @"alipayqr://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/bax05299bjty5xvbkjii8018";// 打开链接[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

但是有个问题就是,我们不清楚是否支付成功,且没有支付回调之类的来返回APP,并在APP中处理。

第二个重点就来了,如何监听回调呢?我的思路是这样,在我们的APP重新回到前台时判断,这也需要后台的配合,我们获取不到支付宝的回调,但是后台根据调取的相关SDK能获取到。在回到前台时我们就可以通过调用后台接口来获取状态。然后进行相关处理。

方法一:在APPdelegate中处理

- (void)applicationWillEnterForeground:(UIApplication *)application {// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.NSLog(@"APP 回到前台");// 判断是不是需要处理的界面 如果是进行操作 不是不处理// 因为是支付,所以我写了个方法 获取最上层的ViewController,只要是点击支付的界面,我们就进行操作。根据不同的界面进行不同操作,但是比较繁琐。
} 

方法二:在那个界面处理,比较简单

- (void)viewDidLoad {[super viewDidLoad];// 监听应用重新获得活跃 并处理[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(handleApplicationActive:)name:UIApplicationDidBecomeActiveNotification object:nil];
}//处理app后台回来事件
-(void)handleApplicationActive:(NSNotification *)notification{NSLog(@"回到app2222");
}

这两个方法都可以实现这个监听功能,可以根据喜好自己选择。附上demo。

最后附上支付宝和其他开放平台对应的schemes:

微信扫一扫
weixin://scanqrcode
(跳转微信扫一扫)

支付宝扫一扫
alipayqr://platformapi/startapp?saId=10000007
(跳转支付宝扫一扫)

支付宝付款
alipay://platformapi/startapp?appId=20000056
(跳转支付宝转账向商家付款界面)

支付宝记账
alipay://platformapi/startapp?appId=20000168
(跳转支付宝记账界面)

支付宝滴滴
alipay://platformapi/startapp?appId=20000778

支付宝蚂蚁森林
alipay://platformapi/startapp?appId=60000002

支付宝转账
alipayqr://platformapi/startapp?saId=20000116
(跳转支付宝转账界面)

支付宝手机充值
alipayqr://platformapi/startapp?saId=10000003
(跳转支付宝手机充值页面)

播放网易云已下载的音乐
orpheuswidget://download
(跳转进网易云并自动播放已经下载的歌曲,需提前设置为随机播放,否则每次都是播放你下载的歌曲中的第一首)

网易云音乐听歌识曲
orpheuswidget://recognize
(点击一下自动进入网易云听歌识曲界面)

转载于:https://www.cnblogs.com/weicyNo-1/p/9620088.html

【iOS】程序内跳转到支付宝转账(非SDK实现支付)及相关监听相关推荐

  1. ios程序内发送邮件的代码

    如下内容是关于ios程序内发送邮件的内容. iPhone API已经提供了系统写邮件界面的接口,使用MFMailComposeViewController,用来显示界面. 项目中需要添加Message ...

  2. IOS应用内跳转到系统设置

    iOS应用内跳转到系统设置 设置跳转有三种方式,每一种的使用场景都不同. 并且你跳转到系统中自己应用下面设置的时候,你的应用要提前至少申请了某一个权限,如(通讯录,通知,定位等).否则,会引起崩溃. ...

  3. 微信小程序跳转外链,打开视频号及小程序内跳转方法

    现有一轮播图,要求按照配置进行跳转 1,跳转至外部链接 void wx.navigateTo({url: `/pages/webview/index?webview=${encodeURICompon ...

  4. iOS程序内打开和发送邮件

    程序内写邮件可以使用两种方式: 1.使用openurl. [[UIApplication sharedApplication] openURL:@"mailto://xxx@xxx.com& ...

  5. ios应用内跳转到appstore里评分

    在ios6.0前跳转到appstore评分一般是直接跳转到appstore评分 NSString *evaluateString = [NSString stringWithFormat:@" ...

  6. android监听支付宝支付成功,Andriod监听支付宝收款实现个人支付宝支付接口!附安卓App...

    个人微信支付宝免签约支付解决方案 首先呢,我不会开发安卓App,这款APP是我在酷安网看到的,非常简单的一款APP,安装后填写我们的后端接口(用于接收收款通知的)就可以接收收款通知了.所以就算我们没有 ...

  7. 【iOS开发-59】LOL案例:单组tabView、alertView样式、实现监听,以及用reloadData数据刷新

    案例效果: (1)先在storyboard中拖拽出一个tableView,然后以下用代码. --tableView继承自scrollView,所以自然有滚动的特性 --最主要的还是数据转模型,以及对c ...

  8. iOS应用内跳转系统设置相关界面的方法

    在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等.在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个pre ...

  9. 微信小程序内跳转公众号

    可使用微信小程序官方提供的official-account 组件来完成,官方文档 Tips: 1. 使用组件前,需前往小程序后台,在"设置"->"关注公众号&quo ...

最新文章

  1. 基于Manim针对FT教学过程的一种可行性设计
  2. [转]c++ new带括号和不带括号
  3. 【Centos 7】【Docker】 安装 redis
  4. java根据富文本生成pdf文件
  5. 绘图之使用工作空间直接绘图
  6. 免费「模拟面试」福利反馈连载(20180128期)
  7. 扇贝编程python骗局-原来用Python薅羊毛这么简单!后悔错过了那么多机会
  8. 解决sql server挂起
  9. u盘文件名乱码linux,U盘文件名乱码的原因和解决办法
  10. pem加密php,PHP格式化RSA公钥私钥(pem文件)
  11. pythonpdf识别文字_python – 从PDF中读取字体颜色信息
  12. MMC、SD、TF、SDIO、SDMMC简介
  13. 出炉!2021 编程语言排行榜~
  14. 一个屌丝程序猿的人生(九十)
  15. 全选、删除、撤回、剪切、复制、粘贴、永久性删除、新建文件夹、启动任务管理器、退出的快捷键
  16. “全面集中管控”企业信息化体系建设的思考
  17. Arduino开发教程汇总
  18. 数组排序sort()。升序还是降序
  19. python爬虫打造_Python爬虫与AI结合,打造诗歌接龙程序!
  20. AcWing 0x00. 语法基础课【Python3】版题解-顺序/判断/循环语句

热门文章

  1. 分布式服务架构下的身份认证
  2. 使用Junit测试 RESTful
  3. linux 编辑器下复制粘贴,Linux-vim编辑器 常用命令 复制粘贴
  4. Unity3d DOTween 插件 详细使用方法
  5. poj2421修建道路
  6. WARNING:not built warning
  7. 【无标题】warning
  8. 如何只更新datetime类型字段中的日期
  9. 黑马程序员Javaweb学习笔记01
  10. 解决maven下载jar包速度慢的问题,将maven的下载源修改为阿里云源