ios应用内支付

用uniapp开发iOS应用内支付

  • 准备前端代码
    • 服务器端处理
      • 如果iOS支付遇到问题实在解决不了,可以联系我帮忙解决,前端后端都可以解决(添加的时候一定要备注咨询iOS支付问题)

准备前端代码

  1. 获取支付通道 (uni.getProvider)
uni.getProvider({
  service: 'payment',
  success: (res) => {
    const iapChannel = res.providers.find((channel) => {
      return (channel.id === 'appleiap')
    })
  }
});
  1. 通过支付通道获取产品列表 (iapChannel.requestProduct)
	getProduct(productIds) {
		return new Promise((resolve, reject) => {
			this._channel.requestProduct(
				productIds || this._productIds,
				(res) => {
					resolve(res);
				},
				(err) => {
					reject(err);
				}
			);
		});
	}
  1. 检查是否存在未关闭的订单 (iapChannel.restoreCompletedTransactions, 可选在合适的时机检查)
	async restore() {
		// 检查上次用户已支付且未关闭的订单,可能出现原因:首次绑卡,网络中断等异常
		let _this = this
		try {
			// 从苹果服务器检查未关闭的订单,可选根据 username 过滤,和调用支付时透传的值一致
			const transactions = await this.restoreCompletedTransactions({});
			if (!transactions.length) {
				return;
			}
			for (const transaction of transactions) {
				switch (transaction.transactionState) {
					case IapTransactionState.purchased:
							//这里写上传数据到服务器的代码
							console.log('成功');
							_this.finishTransaction(transaction);
						}
						break;
					case IapTransactionState.failed:
						// 关闭未支付的订单
						_this.finishTransaction(transaction);
						break;
					default:
						break;
				}
			};
		} catch (e) {
			uni.showModal({
				content: e.message,
				showCancel: false
			});
		} finally {

		}
	}
  1. 请求支付,传递产品信息 (uni.requestPayment)
	requestPayment(orderInfo) {
		return new Promise((resolve, reject) => {
			uni.requestPayment({
				provider: 'appleiap',
				orderInfo: orderInfo,
				success: (res) => {
					resolve(res);
				},
				fail: (err) => {
					reject(err);
				}
			});
		});
	}
  1. 客户端接收苹果返回的支付票据发送到服务器,在服务器请求苹果服务器验证支付是否有效
  2. 服务器验证票据有效后在客户端关闭订单 (iapChannel.finishTransaction)

服务器端处理

前端传过来transactionReceipt以及透传参数(一般是自己的订单号), 我们拿着transactionReceipt请求苹果的服务器即可,请求苹果服务器会返回该支付的一切信息,包括支付订单号,支付时间,支付数量等

如果iOS支付遇到问题实在解决不了,可以联系我帮忙解决,前端后端都可以解决(添加的时候一定要备注咨询iOS支付问题)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/510373.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea端口占用

报错:Verify the connector‘s configuration, identify and stop any process that‘s listening on port XXXX 翻译: 原因: 解决: 一、重启大法 二、手动关闭 启动spring项目是控制台报错,详细信息如下&#xff…

跨境独立站pandabuy cssbuy 跨境Micro微店商品详情

跨境独立站运用微店详情API接口:实现高效运营与营销新突破 在全球化日益加速的今天,跨境独立站成为越来越多商家拓展海外市场、提升品牌影响力的关键平台。为了更好地满足用户需求,提升用户体验,跨境独立站需要不断引入先进的技术…

PostgreSQL的学习心得和知识总结(一百三十五)|深入理解PostgreSQL数据库之查找 PostgreSQL C 代码中的内存泄漏

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

前端学习<三>CSS进阶——03-网页设计和开发中,那些困扰大神的关于字体的知识

前言 我周围的码农当中,有很多是技术大神,却常常被字体这种简单的东西所困扰。 这篇文章,我们来讲一讲关于字体的常识。这些常识所涉及到的问题,有很强的可操作性,都是在实际业务中真实遇到的,都是需要开…

Xinstall带你解锁新姿势:网页直接拉起iOS应用!

在移动互联网时代,用户体验至关重要。对于iOS用户来说,能够在使用网页时直接拉起对应的应用,无疑会大大提升操作便利性和效率。然而,要实现这一功能,往往需要繁琐的开发流程和高昂的维护成本。这时,一个名为…

【JavaWeb】Day31.SpringBootWeb请求响应——分层解耦(二)

3.IOC&DI 3.1 IOC&DI入门 完成Controller层、Service层、Dao层的代码解耦 思路: 1. 删除Controller层、Service层中new对象的代码 2. Service层及Dao层的实现类,交给IOC容器管理 3. 为Controller及Service注入运行时依赖的对象 Controller程序…

服务注册与发现

服务注册与发现 传统单体架构与分布式架构 单体架构的不足: 所有的服务都集中在一个应用中,一个服务出错,可能导致整个系统宕机随着用户越来越多,程序承受的并发越来越高,单体应用的并发能力有限。数据库瓶颈&#x…

RTSP/ONVIF安防监控云平台EasyNVR激活码授权异常(状态码-2)的原因排查:服务器时间异常

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议,将前端接入设备的音视频资源进行采集,并转码成适合全平台、全终端分发的视频流格式,包括RTMP、RTSP、FLV、HLS、WebRTC等格式。平台可提供视频直播监控、录像、检索与回看、云存储、国标级联…

蓝桥杯算法题——暴力枚举法

先估算这个数小于3的50次方 cnt0 for i in range(50):for j in range(50):for k in range(50):a3**ib5**jc7**kif a*b*c<59084709587505:cnt1 print(cnt-1)#当ijk都为0时&#xff0c;a*b*c1不是幸运数字所以要减去

2024 年每个程序员都应该尝试的 8 个AI工具

随着人工智能技术的极速发展&#xff0c;新的 AI 工具正以前所未有的速度涌现&#xff0c;为开发者们带来了前所未有的机会和挑战。在这个不断演进的时代&#xff0c;掌握最新的 AI 技术已成为每个程序员的必修课。 在本文中&#xff0c;我们收集了8 个程序员在 2024 年值得尝…

持续交付/持续部署流水线介绍(CD)

目录 一、概述 二、典型操作流程 2.1 CI/CD典型操作流 2.2 CI/CD操作流程说明 2.3 总结 三、基于GitHubDocker的持续交付/持续部署流水线&#xff08;公有云&#xff09; 3.1 基于GitHubDocker的持续交付/持续部署操作流程示意图 3.2 GitHubDocker持续交付/持续部署流水…

总结TCP协议各类知识点

前言 本篇博客博主将详细地介绍TCP有关知识点&#xff0c;坐好板凳发车啦~ 一.TCP特点 1.有连接 TCP传输的过程中类似于打电话的各个过程 2.可靠传输 通过TCP自身的多种机制来保证可靠传输 3.面向字节流 内容是以字节的方式来进行发送与接收 4.缓冲区 TCP有接收缓冲区…

智慧驿站式的“智慧公厕”,给城市新基建带来新变化

随着智慧城市建设的推进&#xff0c;智慧驿站作为一种多功能城市部件&#xff0c;正逐渐在城市中崭露头角。这些智慧驿站集合了智慧公厕的管理功能&#xff0c;为城市的新基建带来了全新的变革。本文以智慧驿站智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;大量精品案…

基于UML的系统分析与设计

统一建模语言(Unified Modeling Language&#xff0c;UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言&#xff0c;是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具&#xff0c;独立于任何具体程序设计语言。 毕业设计是实现本科教学培…

Ps:颜色查找

颜色查找 Color Lookup命令通过应用预设的 LUT 来改变图像的色彩和调性&#xff0c;从而为摄影师和设计师提供了一种快速实现复杂色彩调整的方法&#xff0c;广泛应用于颜色分级、视觉风格的统一和创意色彩效果的制作。 Ps菜单&#xff1a;图像/调整/颜色查找 Adjustments/Colo…

Unity自定义框架(1)-----------单例模式

前言&#xff1a; Unity作为一款强大的游戏开发引擎&#xff0c;其基础框架的设计对于项目的结构和性能有着重要的影响。其中&#xff0c;单例模式是一种常用的设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 什么是单例模式&#xff1f…

练习 16 Web [极客大挑战 2019]LoveSQL

extractvalue(1,concat(‘~’, (‘your sql’) ) )报错注入&#xff0c;注意爆破字段的时候表名有可能是table_name不是table_schema 有登录输入框 常规尝试一下 常规的万能密码&#xff0c;返回了一个“admin的密码”&#xff1a; Hello admin&#xff01; Your password is…

【Redis】NoSQL之Redis的配置和优化

关系型数据库与非关系型数据库 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系型模型&#xff08;二维表&#xff09;的基础上&#xff1b;一般面向于记录&#xff1b; SQL语句(标准数据查询语句)就是一种基于关系型数据库的语言&#xff0c;用于执行…

【文化课学习笔记】【数学】复数

【数学】复数 定义 规定 \(i^2 -1\)&#xff0c;并称 \(i\) 为虚数单位。则 \(i^3 -i,i^4 (i^2)^2 1,i^5 i^4 \cdot i i\)&#xff0c;所以 \(i^k\) 具有周期性&#xff0c;周期为 \(4\)。 复数&#xff1a; \[z a bi(a,b \in \mathrm R) \] 其中 \(a\) 为实部&#xf…

数据仓库实践

什么是数据仓库&#xff1f; 数据仓库是一个用于存储大量数据并支持数据分析与报告的系统。它通常用于集成来自不同来源的数据&#xff0c;提供一个统一的视图&#xff0c;以便进行更深入的分析和决策。 数据仓库的主要优势&#xff1f; 决策支持&#xff1a;为企业决策提供可靠…