HarmonyOS鸿蒙Next中应用内有H5唤起支付宝app支付的场景解决方案

HarmonyOS鸿蒙Next中应用内有H5唤起支付宝app支付的场景解决方案 应用内有H5唤起支付宝app,支付的场景。支付宝没有给出对应的方法,需要一个解决方案。这是支付宝的文档。

https://opendocs.alipay.com/open/203/107091?pathHash=45006f4f

3 回复

你可以使用 want 启动指定的应用和页面,并携带所需的参数。

Want 介绍:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/want-overview-V13

显示和隐式 Want 匹配规则:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/explicit-implicit-want-mappings-V13

启动应用内组件:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/uiability-intra-device-interaction-V13#启动应用内的uiability

打开网址:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/explicit-implicit-want-mappings-V13#隐式want匹配原理

在通过 startAbility 拉起另一个应用时,如果您已经知道目标应用的 Bundle 名称和 Ability 名称,可以直接在 Want 参数中设置该应用的 bundleNameabilityName。如果不确定 bundleNameabilityName,通常使用隐式 Want 启动方式,可以在调用方的 Want 参数中的 entitiesactions 字段中配置相关信息,系统会根据这些信息匹配到符合要求的 Ability

通过 startAbility 去进行拉起支付宝应用,如果不确定 bundleNameabilityName,就用隐式 Want 启动方式,在调用方的 Want 参数中的 entitiesactions 字段中配置相关信息,系统会根据这些信息匹配到符合要求的 Ability

h5 拉起并进行支付,先获取 context

参考下:

let context = getContext(this) as common.UIAbilityContext;
Button("startability")
  .fontSize(36)
  .fontWeight(FontWeight.Bold)
  .onClick(() => {
    let want2: Want = {
      action: 'ohos.want.action.viewData',
      entities: ['entity.system.browsable'],
      abilityName: 'MainAbility',
      uri: 'https://www.kugou.com/about/userpwdrule.html',
    }
    context.startAbility(want2)
  })
import { Pay } from '@cashier_alipay/cashiersdk/src/main/ets/api/Pay';

...

Button(`支付${this.amount.toFixed(2)}元${this.extraText}`)
  .width('100%')
  .fontColor(Color.Black)
  .backgroundColor($r('app.color.deepYellow_background'))
  .margin({ bottom: 15 })
  .onClick(() => {
    OrderInfoUtil.getOrderInfo().then((orderInfo) => {
      new Pay().payWithNav(orderInfo, true, (name: string, params: Object) => {
        this.pageInfos.pushPathByName(name, params);
      }, this.pageInfos).then((result) => {
        let message =
          `resultStatus: ${result.get('resultStatus')} memo: ${result.get('memo')} result: ${result.get('result')}`;
        console.log(message);
        promptAction.showToast({
          message: message,
          duration: 2000,
          bottom: 360,
        })
      }).catch((error: BusinessError) => {
        console.log(error.message);
        promptAction.showToast({
          message: error.message,
          duration: 2000,
          bottom: 360,
        })
      });
    });
  })

参数设置:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/explicit-implicit-want-mappings-V13#want

这边和解决方案沟通,您的参数设置有问题,将选参移除就可以了

更多关于HarmonyOS鸿蒙Next中应用内有H5唤起支付宝app支付的场景解决方案的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,应用内通过H5页面唤起支付宝App支付的场景,可以通过以下步骤实现:

  1. 集成支付宝SDK:首先,确保在鸿蒙应用中集成了支付宝的SDK。支付宝SDK提供了与支付宝App进行交互的接口,包括支付、授权等功能。

  2. 配置URL Scheme:在鸿蒙应用中配置URL Scheme,以便支付宝App可以通过该Scheme唤起应用。在config.json文件中添加如下配置:

{
  "app": {
    "bundleName": "com.example.app",
    "vendor": "example",
    "version": {
      "code": 1,
      "name": "1.0"
    }
  },
  "abilities": [
    {
      "name": ".MainAbility",
      "icon": "$media:icon",
      "label": "$string:mainAbility_label",
      "launchType": "standard",
      "metaData": {
        "customizeData": [
          {
            "name": "urlScheme",
            "value": "exampleapp"
          }
        ]
      }
    }
  ]
}
  1. H5页面调用支付宝支付:在H5页面中,通过JavaScript调用支付宝的支付接口。可以使用window.location.hrefwindow.open方法,将支付信息传递给支付宝App。例如:
window.location.href = 'alipay://platformapi/startapp?appId=20000067&url=encoded_payment_url';
  1. 处理支付结果回调:在鸿蒙应用中,通过Ability的生命周期方法处理支付宝支付结果的回调。在onAbilityResult方法中,可以获取支付结果并进行相应的处理。

  2. 调试与测试:在实际开发过程中,确保在鸿蒙模拟器或真机上进行充分的测试,确保支付流程的顺畅。

通过以上步骤,可以在HarmonyOS鸿蒙Next应用中实现通过H5页面唤起支付宝App支付的功能。

在HarmonyOS鸿蒙Next中,实现应用内H5页面唤起支付宝App支付的解决方案如下:

  1. 配置支付宝SDK:在鸿蒙应用项目中集成支付宝SDK,确保支付功能能够正常调用。

  2. H5页面调用支付:在H5页面中,通过JavaScript调用支付宝的支付接口,生成支付订单信息。

  3. 唤起支付宝App:使用鸿蒙的系统能力,通过startAbility方法唤起支付宝App,传递支付订单信息。

  4. 处理支付结果:在支付宝App完成支付后,通过回调或重定向返回应用,处理支付结果并更新页面状态。

确保在开发过程中,遵循支付宝和鸿蒙的官方文档,进行正确的配置和调试。

回到顶部