开放平台
首页平台概述
开发者
  • API文档
  • SDK
产品功能
  • 新手入门
  • 产品功能
常见问题
首页平台概述
开发者
  • API文档
  • SDK
产品功能
  • 新手入门
  • 产品功能
常见问题
  1. APP嵌入支付说明
  • API文档
    • 产品介绍
    • 更新记录
    • 接入必读
      • 快速接入
      • 签名示例
      • 全局状态码
      • 调用频率说明
    • 用户管理
      • 子账号管理
        • 创建子账号角色
        • 获取子账号角色列表
        • 获取子账号角色详情
        • 创建子账号
        • 修改子账号信息(含角色绑定)
        • 获取子账号个数
        • 获取子账号列表
        • 获取子账号详情
        • 创建子账号应用信息
      • 三方用户管理
        • 创建三方用户
        • 更新三方用户
        • 获取三方用户
        • 获取微吼用户ID
        • 授权三方用户为子账号及资源分配
    • 专题管理
      • 创建专题
      • 删除专题
      • 修改专题
      • 获取专题列表
      • 获取专题详情接口(专题预览)
    • 活动管理
      • 活动管理
        • 创建活动
        • 删除活动
        • 修改活动信息
        • 活动列表接口
        • 获取活动详情
        • 批量获取活动详情
        • 获取活动场次列表
        • 通过视频ID获取分辨率详情
        • 创建(点播/定时直播)活动
      • 活动标签管理
        • 创建活动标签
        • 删除活动标签
        • 修改活动标签
        • 置顶活动标签
        • 获取活动标签列表
        • 批量查询活动标签
        • 活动标签列表排序重置
      • 活动多语言管理
        • 创建活动语种
        • 删除活动语种
        • 修改活动语种
        • 查询活动语种列表
    • 观看限制
      • 观看限制
        • 设置活动观看限制
        • 查询活动观看限制
      • 全局踢出
        • 批量移除全局踢出观众
        • 查询全局踢出观众列表
        • 新增/编辑全局踢出观众
      • 观众组管理
        • 创建观众组及添加用户
        • 指定观众组添加新用户
        • 获取观众组分组列表
        • 获取观众组下用户列表
        • 批量移除观众组用户
      • 第三方K值校验
        • 设置账号维度K值
        • 设置单个活动K值
        • 删除活动下的k_id
        • 设置活动多K值校验
        • 查询多K值详情列表
        • 查询活动K值详情配置
    • 角色邀请
      • 角色邀请开关
      • 角色名称修改
      • 角色密码修改
      • 角色权限修改
      • 获取活动角色配置
      • 取消嘉宾/助理身份
      • 设置主持人身份信息
      • 获取B端用户参会地址
    • 奖品管理
      • 创建或编辑奖品
      • 删除奖品信息
      • 查询中奖用户列表
      • 查询奖品列表
      • 查询奖品信息
      • 获取奖品详情
      • 获取抽奖数据列表
      • 设置抽奖基础信息
    • 互动管理
      • 问答
        • 设置问答名称
        • 获取问答名称
        • 删除问答记录
        • 批量删除问答记录
        • 获取问答管理页面
      • 聊天
        • 批量添加聊天屏蔽词
        • 批量删除聊天屏蔽词
        • 清空聊天屏蔽词
        • 修改聊天屏蔽词
        • 获取聊天屏蔽词列表
        • 保存聊天严禁词配置
        • 获取聊天严禁词配置
        • 删除聊天消息
        • 批量删除聊天消息
        • 发送自定义消息
        • 获取直播聊天过滤页面
        • 设置/取消全体用户禁言
        • 获取活动禁言详情
        • 聊天机器人消息发送
      • 签到
        • 获取进行中的签到任务
        • 创建签到并发起
        • 结束签到
      • 抽奖
        • 保存抽奖奖品设置
        • 保存抽奖条件和用户设置
        • 保存抽奖配置基本信息
        • 保存抽奖领奖页设置
        • 删除抽奖
        • 复制抽奖
        • 奖品设置-保存奖品
        • 奖品设置-删除奖品
        • 奖品设置-查看奖品列表
        • 奖品设置-查询奖品信息
        • 推送抽奖
        • 查询抽奖列表
        • 结束抽奖
        • 获取抽奖条件和用户设置
        • 获取抽奖配置基本信息
        • 获取抽奖领奖页设置
      • 奖品
        • 资料库-保存奖品
        • 资料库-删除奖品
        • 资料库-复制奖品
        • 资料库-奖品列表
        • 资料库-查询奖品信息
      • 礼物
        • 修改礼物
        • 创建活动礼物
        • 创建礼物
        • 删除礼物
        • 活动关联礼物
        • 获取礼物发送记录
        • 获取礼物收益
        • 观看端_获取活动使用的礼物列表
        • 设置活动下礼物排序
        • 设置活动下礼物是否展示
        • 账号下礼物列表
      • 问卷
        • 获取活动下问卷使用数据概览
        • 获取问卷ID对应问卷答案
        • 获取问卷列表
        • 设置问卷别名
        • 问卷提交人数
        • 问卷答案详情
      • 报名表单
        • 报名审核-批量审核
      • 推屏卡片
        • 创建推屏卡片
        • 发起端-导出点击列表
        • 发起端-推送推屏卡片
        • 发起端-获取推送中的卡片 ID
        • 复制推屏卡片
        • 批量删除推屏卡片
        • 编辑推屏卡片
        • 获取推屏卡片列表
        • 获取推屏卡片点击数据
    • 互动数据
      • 预约
        • 活动预约列表
      • 聊天
        • 获取历史聊天记录
      • 问答
        • 获取问答记录总数
        • 获取问答记录列表
      • 点赞
        • 获取房间的点赞数量
      • 文档
        • 文档下载次数
        • 资料下载数据列表
      • 分享
        • 获取分享榜
      • 打赏
        • 获取活动打赏统计
        • 获取活动打赏列表
      • 现金红包
        • 获取红包发送记录
        • 获取红包领取列表
        • 获取活动下红包统计数据
      • 口令红包
        • 获取红包明细
        • 获取发送红包记录
        • 获取活动下红包统计数据
      • 互动连麦
        • 获取用户上麦记录
      • 快问快答
        • 获取快问快答成绩排行榜
        • 获取快问快答试卷统计列表
        • 获取快问快答题目统计信息
      • 签到数据
        • 获取签到列表
        • 获取用户签到记录
        • 获取活动签到统计列表
        • 签到用户列表接口(聚合表查询数据)
      • 邀约海报
        • 获取邀请榜
        • 获取邀请列表
        • 获取邀请卡详情
        • 邀请详情
      • 报名表单
        • 获取报名表单记录
    • 图片上传
      • 图片上传
    • 媒资管理
      • 文档管理
        • 上传文档
        • 删除文档
        • 获取文档详情
        • 获取文档章节
        • 获取活动下的文档列表
      • 音视频管理
        • 音视频删除
        • 音视频修改
        • 音视频列表
        • 音视频详情
    • 回放管理
      • 保存章节-章节打点
      • 创建回放
      • 删除点播与章节关联-章节打点
      • 回放列表
      • 回放删除
      • 回放加密
      • 回放编辑
      • 回放重制
      • 查询章节信息-章节打点
      • 获取回放时长
      • 获取录制文件信息
      • 裁剪回放
      • 设置默认回放
      • 回放下载接口
      • 获取回放分辨率信息
      • 回放清晰度转换接口
      • 获取回放下载信息
    • 渠道管理
      • 创建/编辑渠道信息
      • 删除渠道信息
      • 查询活动绑定渠道信息
      • 查询渠道信息列表
      • 活动绑定渠道
      • 活动解绑渠道
      • 选择渠道列表
    • 商品管理
      • 活动商品管理
        • 批量删除活动下商品
        • 设置活动商品销售状态
        • 活动关联商品
        • 活动商品上架设置
        • 活动商品列表
        • 获取未选择商品
        • 设置活动商品排序
        • 设置活动商品推送状态
      • 商品订单管理
        • 查询订单列表
        • 获取订单详情
        • 活动订单设置
        • 查询活动订单设置
      • 优惠券
        • 优惠券作废
        • 优惠券创建
        • 优惠券批量删除
        • 优惠券数据总览
        • 优惠券更新
        • 活动下优惠券批量删除
        • 活动下优惠券新增
        • 用券商品列表
        • 获取优惠券下商品列表
        • 获取优惠券信息
        • 获取优惠券列表
        • 获取活动下优惠券列表
        • 领用券用户列表
      • 直播商品
        • 修改活动商品
        • 创建活动商品
        • 商品上架
        • 商品下架
        • 复制活动商品
        • 批量删除活动商品
        • 查询商品详情
        • 生成商品图片ID
        • 获取活动下商品列表
        • 设置商品列表排序
      • 修改商品
      • 创建商品
      • 商品列表
      • 商品详情
      • 复制商品
      • 批量删除
      • 商品统计数据查询
    • 授权服务
      • 获取观众登录Token
      • 获取控制台登陆Token
      • 获取控制台免登录地址
    • 播放器设置
      • 其他信息设置
      • 获取其他信息设置
      • 水印设置
      • 获取水印设置
      • 跑马灯设置
      • 获取跑马灯设置
    • 推拉流设置
      • 开始直播
      • 结束直播
      • 拉流并开播
      • 获取直播间流状态
      • 获取直播间推流地址
      • 开启/关闭第三方推流
      • 创建第三方推流地址
      • 删除第三方推流地址
      • 编辑第三方推流地址
      • 获取第三方推流地址列表
    • 观看页设置
      • 品牌设置
        • 获取活动标识
        • 设置活动标识
      • 观看协议
        • 保存观看协议
        • 获取观看协议
        • 观看端-用户同意观看协议
        • 观看端-获取观看协议
      • 虚拟人数
        • 增加虚拟人数
        • 获取虚拟观众基数
      • 开屏海报
        • 获取开屏海报设置
        • 设置开屏海报
      • 公众号展示
        • 公众号展示设置
        • 获取公众号设置
      • 功能开关配置
        • 设置功能开关
        • 活动配置开关获取
    • 回调事件管理
      • 回调事件说明
      • 回调事件列表
      • 回调事件汇总
        • 抽奖相关事件
          • 中奖结果通知
        • 商城奖励相关事件
          • 领取奖励回调
        • 订单相关事件
          • 订单状态变更
        • 签到相关事件
          • 签到发起事件
        • 媒资相关事件
          • 视频转码完成
          • 文档转码完成
          • 音视频转码进度
        • 活动相关事件
          • 活动创建
          • 活动删除
          • 活动状态
          • 活动信息更新
          • 活动恢复预告
          • 活动推流状态
          • 活动状态改变
        • 快问快答相关事件
          • 答题记录
        • 报名相关事件
          • 报名表单提交
        • 回放相关事件
          • 生成回放
          • 裁剪回放
          • 回放分辨率
          • 回放下载
          • 回放重制
        • 房间消息
          • 用户上下线消息
      • 回调事件查询接口
      • 回调事件修改接口
      • 回调事件创建接口
    • 活动数据查询
      • 数据报告
        • 活动统计信息
        • 观看人数趋势
      • 终端信息统计
        • 活动设备信息
        • 活动浏览器信息
      • 地理位置统计
        • 省份信息统计
        • 城市信息统计
      • 获取活动热度信息
        • 活动热度信息
      • 获取活动在线人数
        • 获取当前在线人数
        • 获取指定时间段内在线人数统计
      • 获取活动并发数据
        • 每天并发趋势
        • 获取当前活动最高并发
        • 获取当前活动指定时间段内最高并发
        • 获取指定时间段内活动最大并发
      • 获取用户观看明细
        • 获取用户观看明细(新)
        • 获取用户观看明细(旧)
    • 套餐数据查询
      • 并发消费查询
        • 财务总览-并发-消费账单-分页明细
      • 流量数据查询
        • 6.查询用户流量
        • 查询某段时间内流量使用情况
        • 查询某段时间内流量使用详情
      • 时常数据查询
        • 查询每天用户时长使用量
        • 查询某段时间内时长使用情况
        • 查询某段时间内时长使用详情
    • 短信数据查询
      • 获取发送记录
      • 财务总览-短信-消费账单
      • 财务总览-短信-消费账单-分页明细
      • 获取对应时间段的短信使用量
    • 账号数据总览
      • 获取数据总览
      • 活动数据列表接口
      • 获取指定时间段内最高并发
      • 获取指定时间段内并发数据
  • 暂停接口
    • AI聊天
      • AI聊天-复制活动主题
      • 发起端-AI聊天-开始推送
      • 发起端-AI聊天-推送机器人消息
      • 发起端-AI聊天-结束推送
      • 发起端-获取虚拟观众列表
      • 控制台-下载导入失败的无效数据
      • 控制台-保存AI聊天
      • 控制台-删除AI聊天
      • 控制台-复制AI聊天
      • 控制台-复制资料库AI聊天到活动
      • 控制台-聊天机器人导入检查
      • 控制台-获取AI聊天详情
      • 控制台-获取聊天机器人列表
      • 控制台/发起端-AI聊天列表
      • 活动直播状态通知
    • 梵天互动
      • B端用户登录并进入游戏互动页面
      • C端用户登录地址
      • 信息查询
      • 发布
      • 活动管理页地址
      • 绑定活动
      • 获取大屏幕地址
      • 重置绑定
    • AI 创作
      • AI 创作-信息查询
      • AI 创造-菜单信息
      • 功能权限配置查询
      • 功能权限配置设置
      • 智能字幕-信息查询
      • 智能字幕-创建
      • 智能字幕-开关状态切换
      • 智能字幕-编辑
      • 智能字幕样式-信息查询
      • 智能字幕样式-设置
      • 智能解析-信息查询
      • 智能解析-开始解析
      • 智能解析-编辑
      • 智能解析-重新校正
      • 概要总结-信息查询
      • 概要总结-开始创作
      • 概要总结-编辑
      • 概要总结-配置信息查询
      • 精彩剪辑-下载
      • 精彩剪辑-信息查询
      • 精彩剪辑-创建
      • 精彩剪辑-开始转码
      • 精彩剪辑-新增
      • 精彩剪辑-添加到视频库
      • 精彩剪辑-配置信息查询
      • 精彩时刻-信息查询
      • 精彩时刻-开始创作
      • 精彩时刻-编辑
      • 精彩时刻-配置信息查询
      • 获取 paas access token
      • 观看端聚合接口
      • 视频信息查询
      • 通用配置-保存
      • 通用配置-删除
      • 通用配置-查询
    • 消息推送设置
      • 保存消息推送设置
      • 回调消息到第三方
      • 接收消息回调(对内)
      • 获取全部消息类型
      • 获取推送开关(对内)
      • 获取消息推送设置
    • 消息通知
      • 编辑消息通知
      • 编辑配置
      • 获取消息模板详情
      • 获取消息通知列表
    • 定制接口汇总
      • 套餐管理-主帐号增加资源包
    • OpenAPI-获取机位推流地址
    • 获取直播信息
    • 获取用户权限
    • 5.查询直播统计
  • SDK文档
    • demo
    • JS SDK
      • 产品介绍
      • 快速接入
      • SDK 对接示例
      • 观看直播
      • 暖场视频
      • 房间消息说明
      • 互动连麦
      • 文档白板
      • 全局事件
      • 全局错误码
      • 版本更新记录
      • 互动工具
        • 互动-抽奖
        • 互动-礼物
        • 互动-签到
        • 互动-问卷
        • 互动-公告
        • 互动-商品
        • 互动-问答
        • 互动-推屏卡片
        • 互动-快问快答
        • 互动-聊天
        • 互动-优惠券
        • 互动-点赞
      • 直播间拓展功能
        • 资料下载
        • 观看限制验证
        • 观看协议
        • 回放章节
    • 点播SDK
      • 点播上传SDK
      • 更新记录
    • iOS SDK
      • 整体介绍
      • 快速接入
      • SDK 登录
      • 暖场视频
      • 视频轮询
      • 直播彩排
      • 高级美颜
      • 云导播
      • 观看协议
      • 文档白板演示
      • 聊天功能
      • 视频直播
        • 发起视频直播
        • 观看视频直播
      • 互动直播
        • 观众互动
        • 推流摄像头
        • 互动直播API
        • 主播发起互动直播
        • 嘉宾加入互动直播
      • 无延迟直播
        • 主播发起无延迟直播
        • 观众观看无延迟直播
      • 互动工具
        • 互动-抽奖
        • 互动-礼物
        • 互动-签到
        • 互动-问卷
        • 互动-章节打点
        • 互动-公告
        • 互动-商品
        • 互动-计时器
        • 互动-问答
        • 互动-推屏卡片
        • 互动-快问快答
        • 互动-优惠券
        • 互动-点赞
      • 直播间拓展能力
        • 直播间特色功能配置项
        • 文件下载
        • 修改角色昵称
        • 观看权限校验
        • 投屏
        • 虚拟人数
      • 观看回放
        • 观看回放
      • 防录屏
        • 跑马灯
      • 字段说明
        • 互动活动详情字段
        • 错误码说明
        • 常量定义
        • 活动详情字段说明
      • 版本更新说明
        • 版本更新信息
        • v2.3.0 到 v2.4.0 升级说明
        • v3.0.1 到 v3.2.0 升级说明
        • V2.9.0到v3.0.1升级说明
        • v6.3.0
        • v6.2.1
        • v3.2.0 到 v4.0.1
        • v2.7.0 到 v2.8.0、v2.9.0 升级说明
        • 6.5.0
        • v5.0.x 到 v6.0.0
        • v6.4.0
    • Adroid SDK
      • 整体介绍
      • 快速接入
      • SDK登录
      • 暖场视频
      • 视频轮巡功能
      • 直播彩排
      • 高级美颜
      • 云导播功能
      • 观看协议
      • 文档白板
      • 聊天功能
      • 房间消息
      • 信息采集说明
      • 视频直播
        • 发起视频直播
        • 观看视频直播
      • 互动直播
        • 互动直播API
        • 主播发起互动直播
        • 嘉宾加入互动直播
        • 观众观看互动直播
      • 无延迟直播
        • 主播发起无延迟直播
        • 观众观看无延迟直播
      • 互动工具
        • 互动-抽奖
        • 互动-礼物
        • 互动-签到
        • 互动-问卷
        • 互动-公告
        • 互动-商品
        • 互动-计时器
        • 互动-问答
        • 互动-推屏卡片
        • 互动-快问快答
        • 互动-优惠券
        • 互动-点赞
      • 直播拓展功能
        • 修改角色名称
        • 文件下载
        • 投屏演示
        • 虚拟人数
        • 观看权限校验
        • 直播间特色功能配置项
      • 观看回放
        • 观看回放/点播
      • 防录屏
        • 直播水印
        • 跑马灯
      • 字段说明
        • 房间消息字段说明
        • 聊天消息字段说明
        • 活动详情字段说明
      • 版本更新说明
        • 更新记录
        • v6.4.0
        • v6.3.0
        • v6.2.3
        • v6.2.1
        • v6.2.0
        • v6.1.0
        • v6.0.0
        • v5.0.0
        • v4.1.0
        • v4.0.0
        • v3.3.0
    • APP嵌入支付说明
      • 支付调起说明
      • Scheme规则说明
  • 平台介绍
    • 平台概述
    • 接入指南
      • 业务流程
      • 接入指南
      • 基础概念说明
      • 开通账号/权限
      • 平台兼容性说明
      • 快直播OBS推流配置建议
      • 视频直播OBS推流配置建议
    • 直播观看嵌入指南
      • 产品介绍
      • 嵌入说明
      • 嵌入示例
      • 嵌入页消息推送
      • 嵌入微信小程序
      • 嵌入模式支付对接
      • 嵌入页第三方K值验证
    • 直播管理嵌入指南
      • 产品介绍
      • 嵌入说明
      • 嵌入示例
    • 聚合站点嵌入指南
      • 聚合页嵌入指南
      • 小程序嵌入指南
      • 创建三方用户「站点专用」
      • 更新三方用户「站点专用」
    • 相关协议
      • 微吼直播 SDK 隐私政策
      • 微吼直播 SDK 开发者使用规范
  • 产品功能
    • 报名表单
    • 播放器常见问题
    • 多语言直播间
    • 观众等级标签
    • 画中画浏览器支持
    • 开播提醒-短信通知
    • 开通收款方式说明
    • 开通微信定义通知
    • 客户端桌面共享
    • 快问快答
    • 暖场视频
    • 文档上传
    • 视频加密
    • 手机网页连麦
    • 手写板兼容性说明
    • 推广渠道说明
    • 外链嵌入组件配置
    • 微信分享设置
    • 现金红包
    • 虚拟背景
    • 虚拟人数
    • 邀约海报应用场景
    • 用户提现
    • 游戏互通功能配置
    • 自定义菜单
    • AI 视频创作
    • AI 聊天机器人
  • 常见问题
    • 直播筹备阶段
    • 直播执行阶段
    • 直播观看阶段
    • 内容数据沉淀阶段
    • 直播相关问题
    • 设备相关问题
    • 对接阶段问题
    • 点播回放相关问题
    • 自动播放策略说明
    • 网络安全策略(防护墙配置)
  1. APP嵌入支付说明

支付调起说明

支付调起说明#

iOS:#

核心逻辑是通过
- (void)webView:(WKWebView _)webView decidePolicyForNavigationAction:(WKNavigationAction _)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
方法去监听跳转地址和点击提交重定向的地址
通过 application openURL:方法跳转微信及支付宝应用
通过
- (BOOL)application:(UIApplication _)app openURL:(NSURL _)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> \*)options
方法获取对应 scheme 回传的数据

示例代码#

#pragma mark - WKNavigationDelegate
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    NSLog(@"发送请求-----》%@", navigationAction.request.URL.absoluteString);


    NSURLRequest *request           = navigationAction.request;
    NSURL *url                      = request.URL;
    NSString *scheme                = [navigationAction.request.URL scheme];
    UIApplication *application      = [UIApplication sharedApplication];
    NSString *absoluteString        = navigationAction.request.URL.absoluteString;

    // decode for all URL to avoid url contains some special character so that it wasn't load.
    NSLog(@"Current URL is %@",absoluteString);

    static NSString *endPayRedirectURL = nil;

    //三方购买
    if ([scheme isEqualToString:@"test02-live.vhall.com"]) {
        // 打开客户端
        [application  openURL:url
                      options:@{}
            completionHandler:^(BOOL success) {
            NSLog(@"客户端跳转%@", success ? @"完成" : @"失败");
        }];

        // 取消当前请求
        decisionHandler(WKNavigationActionPolicyCancel);
        return;
    }
    // 解决跳转到本地支付宝App不返回的问题
    // 判断URL是否以alipays://或者alipay://开头
    if ([absoluteString hasPrefix:@"alipays://"] || [absoluteString hasPrefix:@"alipay://"]) {
        // 定义支付宝URL的前缀
        NSString *prefixString = @"alipay://alipayclient/?";

        // 将URL中的alipays替换为test02-live.vhall.com
        NSString *urlString = [[self xh_URLDecodedString:absoluteString] stringByReplacingOccurrencesOfString:@"alipays" withString:CompanyFirstDomainByWeChatRegister];


        // 如果URL以前缀字符串开头,则对URL进行特殊处理
        if ([urlString hasPrefix:prefixString]) {
            // 获取前缀字符串的范围
            NSRange rang = [urlString rangeOfString:prefixString];
            // 获取前缀字符串后面的部分
            NSString *subString = [urlString substringFromIndex:rang.length];
            // 将前缀和后面的部分拼接起来,并对拼接后的字符串进行URL编码
            NSString *encodedString = [prefixString stringByAppendingString:[self xh_URLEncodedString:subString]];
            // 将编码后的字符串转换为NSURL对象
            url = [NSURL URLWithString:encodedString];
        }

        // 打开支付宝客户端
        [application  openURL:url
                      options:@{}
            completionHandler:^(BOOL success) {
            NSLog(@"支付宝跳转%@", success ? @"完成" : @"失败");
        }];

        // 取消当前请求
        decisionHandler(WKNavigationActionPolicyCancel);
        return;
    }


    //解决微信支付后为返回当前应用的问题
    // 判断是否需要重定向
    if ([absoluteString hasPrefix:@"https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb"] && ![absoluteString hasSuffix:[NSString stringWithFormat:@"redirect_url=%@://",CompanyFirstDomainByWeChatRegister]]) {
        // 取消当前请求
        decisionHandler(WKNavigationActionPolicyCancel);

        NSString *redirectUrl = nil;
        // 判断URL中是否包含redirect_url参数
        if ([absoluteString containsString:@"redirect_url="]) {
            NSRange redirectRange = [absoluteString rangeOfString:@"redirect_url"];
            // 获取redirect_url参数后面的值
            endPayRedirectURL =  [absoluteString substringFromIndex:redirectRange.location+redirectRange.length+1];
            // 将redirect_url参数的值替换为当前应用程序的URL Scheme,并重新构造URL
            redirectUrl = [[absoluteString substringToIndex:redirectRange.location] stringByAppendingString:[NSString stringWithFormat:@"redirect_url=%@://",CompanyFirstDomainByWeChatRegister]];
        }else {
            // 在URL末尾添加redirect_url参数,并将其值设置为当前应用程序的URL Scheme
            redirectUrl = [absoluteString stringByAppendingString:[NSString stringWithFormat:@"&redirect_url=%@://",CompanyFirstDomainByWeChatRegister]];
        }

        // 构建新的请求
        NSMutableURLRequest *newRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:redirectUrl] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:XDX_URL_TIMEOUT];
        newRequest.allHTTPHeaderFields = request.allHTTPHeaderFields;
        [newRequest setValue:[NSString stringWithFormat:@"%@",CompanyFirstDomainByWeChatRegister] forHTTPHeaderField:@"Referer"];
        newRequest.URL = [NSURL URLWithString:redirectUrl];
        // 使用新请求加载页面
        [webView loadRequest:newRequest];
        return;
    }


    // 判断scheme是否为http或者https
    if (![scheme isEqualToString:@"https"] && ![scheme isEqualToString:@"http"]) {
        // 取消当前请求
        decisionHandler(WKNavigationActionPolicyCancel);
        // 判断scheme是否为weixin
        if ([scheme isEqualToString:@"weixin"]) {
            // 如果endPayRedirectURL不为空,使用其加载新页面
            if (endPayRedirectURL) {
                [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:endPayRedirectURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:XDX_URL_TIMEOUT]];
            }
        }else if ([scheme isEqualToString:[NSString stringWithFormat:@"%@",CompanyFirstDomainByWeChatRegister]]) {
            // 对于其他scheme,可以进行特殊处理
        }
        // 如果URL中包含weixin://,打开微信客户端
        if ([navigationAction.request.URL.absoluteString hasPrefix:@"weixin://"]) {
            [application  openURL:url
                          options:@{}
                completionHandler:^(BOOL success) {
                NSLog(@"微信跳转%@", success ? @"完成" : @"失败");
            }];
        }
        return;
    }
    decisionHandler(WKNavigationActionPolicyAllow);
}
// URL解码
- (NSString *)xh_URLDecodedString:(NSString *)urlString {
    NSString *string = urlString;
    // 调用CFURLCreateStringByReplacingPercentEscapesUsingEncoding函数对URL进行解码
    NSString *decodedString = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)string, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
    return decodedString;
}
// URL编码
- (NSString *)xh_URLEncodedString:(NSString *)urlString {
    NSString *string = urlString;
    // 调用CFURLCreateStringByAddingPercentEscapes函数对URL进行编码
    NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)string,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8));
    return encodedString;
}

Android:#

核心逻辑是通过 WebViewClient#shouldOverrideUrlLoading 方法去监听跳转地址和点击提交重定向的地址
通过 startActivity(intent)方法跳转微信及支付宝应用
注:微信支付需要验证 Referer,加载嵌入页时需传入 Referer(具体值与微信后台设置一致)

示例代码#

//1. WebView 传入Referer
Map<String,String> webviewHead =new HashMap<>();
webviewHead.put("Referer", "https://live.vhall.com");
webView.loadUrl(url,webviewHead);

//2. 监听scheme 跳转 原生唤起 app 支付
webView.setWebViewClient(new WebViewClient() {

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        String url = request.getUrl().toString();
        if(!url.startsWith("http"))
        {
            PackageManager packageManager = getPackageManager();
            Log.e("========",url);
            try {
               //打开 scheme
               Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
                startActivity(intent);
            } catch (ActivityNotFoundException e) {
                Toast.makeText(getApplicationContext(), "未安装应用", Toast.LENGTH_SHORT).show();
            }
            return true;
        }
        return false;
    }
	.....
}

H5 唤起微信支付技术要点#

配置 URL Types 应用程序的 URL Scheme,可以通过 Scheme 进行返回应用,此处演示微信和支付宝。
图一

修改 redirect_url#

确保 redirect_url 这个回调链接与设定的 URL Schemes 保持一致,此步骤为关键步骤,只有正确设置后才能返回 APP
拦截后,我们首先需要关注原始地址是否包含 redirect_url=字符串。
如果包含,说明后台人员利用该字符串在微信支付完成后跳转到支付完成的界面。
我们也需要利用该字段实现支付完成后跳转回 APP。
• 如果包含 redirect_url=字段,我们需要首先记录后台重定向的地址,然后将其替换为我们配置好的 URL Schemes 以实现跳转回我们的应用。在跳转回我们应用后,我们会手动再加载一次原始重定向的 URL 地址。
• 如果不包含 redirect_url=字段,我们只需将该字段添加到原始 URL 的末尾。

设置 webView 请求 header 中的 Referer 字段#

微信支付结束后默认回调 Referer 字段中的地址。
Referer 设置为www.xxxx.com://的格式。

注意#

判断微信地址的同时判断redirect_url=www.xxxx.com://,因为在第一次检测到后会重新加载该地址,该地址中同时包含 https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb,会形成循环冲突。
所以判断条件如下:
• 如果项目中有支付完成的重定向地址,可以在跳转前加载该地址,否则在回到应用后会有明显的加载过程,界面不友好。
• 一般跳转到其他 APP 时,地址不是以 http 或 https 开头,所以在最后的判断中以此为依据,但注意如果服务器端加载错误的地址走入此逻辑,则必须对特定的 scheme 进行处理

H5 唤起支付宝支付技术要点#

配置 scheme#

参考 图一 实现。

注意#

如果 URL 以alipays://或者alipay://开头,则将 URL 中的alipays替换为微吼的域名live.vhall.com,并对 URL 进行特殊处理;
否则不进行处理。
特殊处理完成后,使用 openURL 方法打开支付宝客户端,并将当前请求取消。其中 openURL 方法是 UIApplication 的方法,用于打开其他应用程序或者系统服务。
修改于 2025-05-27 13:00:42
上一页
v3.3.0
下一页
Scheme规则说明
Built with