当前位置: 首页 > news >正文

HarmonyOS之深入解析跳转支付宝小程序完成操作后如何自动返回App

一、配置 backSCAppScheme
  • 在跳转支付宝的链接中,添加 backSCAppScheme 参数,指定回调到当前 App 的 Scheme 。例如:
alipays://platformapi/startapp?appId=XXXXXXXXXXXX&backSCAppScheme=myAppScheme
  • 这里的 myAppScheme 是 App 自定义的 Scheme,支付宝完成操作后会通过该 Scheme 回调到当前的 App。
二、注册 Scheme
  • 为了让 App 能够接收支付宝的回调,需要在 HarmonyOS 应用的 module.json5 中注册对应的 Scheme。例如:
{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone"
    ],

    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:logo_launcher",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:logo_login",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "actions": [
              "ohos.want.action.view"
            ],
            "uris": [
              {
                "scheme": "myAppScheme"
              }
            ]
          }
        ]
      }
    ]
  }
}
  • 这样,当支付宝通过 myAppScheme:// 回调时,系统会将回调路由到 App。
三、处理 Scheme 回调
  • 在 HarmonyOS 中,可以通过 UIAbility 的 onCreate 方法监听 Scheme 回调,并执行跳转回 App 的逻辑。以下是一个示例代码:
import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';
import router from '@ohos.router';

export default class EntryAbility extends UIAbility {

  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  }

  onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // 获取支付宝返回的 Scheme URL
    const returnedUrl = want.uri;
    if (returnedUrl && returnedUrl.startsWith('myAppScheme://')) {
      
    }
  }
}
四、拉起支付宝功能
  • 在 HarmonyOS 中,可以通过 UIAbilityContext 模块拉起支付宝功能。例如:
import { common, Want, Permissions } from '@kit.AbilityKit'

let url = 'alipays://platformapi/startapp?appId=XXXXXXXXXXXX&backSCAppScheme=myAppScheme'
let context = getContext(this) as common.UIAbilityContext
    let want: Want = {
      uri: url,
    };
    context.startAbility(want)
      .then(() => {
        Router.back()
        console.info('Open link succeeded.');
      })
      .catch((err:BusinessError) => {
        console.error(`Open link failed, code is ${err.code}, message is ${err.message}`);
      });
  • 调用 openAlipay 方法后,会跳转到支付宝的指定功能页面。
五、支付宝完成操作后回调
  • 当支付宝完成操作后,会通过 backSCAppScheme 指定的 Scheme 回调到 App。例如:
myAppScheme://?result=success
  • 在 UIAbility 的 onNewWant 方法中,可以解析回调 URL 并跳转回 App 的指定页面。
六、注意事项
  • Scheme 唯一性:确保 backSCAppScheme 中的 Scheme 是唯一的,避免与其他应用冲突。
  • 安全性:在服务端验证回调结果时,务必使用支付宝公钥对返回数据进行验签,确保数据未被篡改。
  • 兼容性:不同版本的支付宝客户端可能对回调机制的支持有所不同,建议进行充分的测试。
七、完整流程示例
  • 在 App 中调用支付宝功能,传递 backSCAppScheme 参数;
  • 支付宝完成操作后,通过 backSCAppScheme 回调到 App;
  • 在 UIAbility 的 onNewWant 方法中解析回调 URL,并跳转回 App 的指定页面。

相关文章:

  • vue ts+Windi CSS
  • Unity打包崩溃SRP-URP-管线的问题:Shader::SRPBatcherInfoSetup()
  • 鸿蒙 ArkUI 应用上架流程
  • C# 文件夹与命名空间的关系解析
  • HTML5 新的 Input 类型学习笔记
  • linux之 内存管理(5)-CMA 连续内存管理器
  • 【深度学习】Cross-Attention(交叉注意力)机制详解与应用
  • 深入理解 Linux 中磁盘空间驱动的编写:从原理到实践
  • 自动化测试框架搭建完整指南
  • C# CancellationTokenSource CancellationToken Task.Run传入token 取消令牌
  • Celery 全面指南:Python 分布式任务队列详解
  • [MRCTF2020]套娃
  • 查看MYdql服务器状态/s
  • mysql--用户管理
  • Retrofit网络编程Glide获取图片
  • 搭建gpu版本的tensorflow
  • 单片机内存划分总览与介绍
  • 【老张的程序人生】一天时间,我成软考高级系统分析师
  • ctfhow——web入门171~175
  • Python每日一题(7)
  • 做笔记的网站源码/百度公司是国企还是私企
  • 做建材营销型网站/小红书seo是什么
  • wordpress 开启评论/广州seo网站优化培训
  • 江苏平台网站建设价位/网络推广怎么做好
  • 希尔顿酒店网站建设的优点/桔子seo工具
  • 上海私人做网站/佛山网站建设制作公司