HarmonyOS收银台设计规范:构建简洁高效的支付体验

HarmonyOS收银台设计规范:构建简洁高效的支付体验

在现代移动支付应用中,支付收银台是用户与商户之间重要的交互界面。为确保支付过程的流畅性和一致性,HarmonyOS为开发者提供了详细的收银台设计规范。本文将详细解读如何基于HarmonyOS平台构建支付收银台,涵盖从页面布局、支付方式选择到支付按钮设计等多个方面,帮助开发者打造简洁且高效的支付体验。

鸿蒙开发者第四期活动

1. 收银台页面设计概述

收银台页面的设计包含三个核心部分:商户信息展示、支付方式选择和支付确认按钮。开发者需通过配置文件(module.json5)、页面代码(.ets文件)和资源文件(如图片、字符串等)来实现这一功能。页面的整体布局应简洁明了,确保用户能在最短时间内完成支付操作。

页面容器设计

收银台的页面容器应采用半模态弹窗的形式展示,以确保页面内容不被其他操作打扰。HarmonyOS的UX规范要求将收银台展示为半模态容器,具体实现可以参考CashierBindSheetContainer.ets代码示例。以下是如何定义页面容器:

复制代码
import { CashierComponent } from './CashierComponent';

@Component
export struct CashierBindSheetContainer {
  @Builder
  cashierBuilder() {
    Column() {
      CashierComponent();
    }
  }

  build() {
    Column() {
      Column() {
      }.bindSheet(true, this.cashierBuilder(), {
        title: () => {},
        height: SheetSize.FIT_CONTENT,
        showClose: true,
        enableOutsideInteractive: false,
        backgroundColor: '#E5FFFFFF',
        blurStyle: BlurStyle.COMPONENT_THICK,
        onWillDismiss: ((action: DismissSheetAction) => {
          // 退出事件监听
        }),
      });
    }.width('100%');
  }
}
收银台页面布局

收银台页面的布局分为三大部分:头部商户信息展示、中部支付方式列表以及底部支付按钮。下面是如何构建这三个部分的代码示例:

复制代码
@Preview
@Component
export struct CashierComponent {
  private mercShortName: string = "华为支付测试商户";
  private paymentAmount: string = '0.01';
  @State selectedPaymentType: PaymentType = new PaymentType();
  
  @Builder
  orderDetail() {
    // 后续展示实现
  }

  @Builder
  displayHeader() {
    // 后续展示实现
  }

  @Builder
  paymentListBuilder() {
    // 后续展示实现
  }

  @Builder
  buttonArea() {
    // 后续展示实现
  }

  @Builder
  cashierUI() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center }) {
      this.orderDetail();
      this.paymentListBuilder();
    }
    .align(Alignment.Top)
    .padding({ left: $r('sys.float.ohos_id_elements_margin_horizontal_l') });
    
    Column() {
      this.buttonArea();
    }
    .flexShrink(0)
    .padding({ left: $r('sys.float.ohos_id_elements_margin_horizontal_l') });
  }

  build() {
    Column() {
      this.cashierUI();
    }
  }
}

2. 商户信息展示

商户信息是用户完成支付前必须确认的重要内容。商户名称和支付金额应该清晰地展示在收银台页面的顶部,确保用户在支付时不产生疑惑。商户信息的展示可以通过PaymentOrderComp组件来实现,具体代码如下:

复制代码
@Builder
orderDetail() {
  Column() {
    PaymentOrderComp({
      mercShortName: this.mercShortName,
      paymentAmount: this.paymentAmount,
    })
    .margin({ bottom: 24 });
  }
  .width('100%')
  .padding({ top: $r('sys.float.ohos_id_elements_margin_vertical_m') })
}

3. 支付方式选择

支付方式列表是收银台页面的核心部分,用户可以从多个支付方式中选择自己喜欢的支付方式。为了增强用户体验,选中的支付方式应以视觉效果标示,确保用户知道自己当前的选择。以下是支付方式列表的代码实现:

复制代码
@Builder
paymentListBuilder() {
  Column() {
    List() {
      ForEach(paymentTypeList, (paymentType: PaymentType) => {
        ListItem() {
          PaymentItemComp({
            paymentType: paymentType,
            canChecked: true,
            isChecked: this.selectedPayTypeSerialNo === paymentType.payTypeSerialNo,
            onSelect: () => {
              if (paymentType.isAvailable) {
                this.select(paymentType);
              }
            },
          })
        }
      })
    }
  }
}

4. 支付按钮设计

支付按钮是收银台界面的交互元素,用户完成支付方式选择后,点击支付按钮即可发起支付。按钮应具备显著的视觉效果,且易于点击。可以通过ConfirmButton组件来创建支付按钮:

复制代码
@Builder
buttonArea() {
  ConfirmButton({
    text: $r('app.string.kit_hwpay_checkout_confirm_pay'),
  })
  .margin({ top: $r('sys.float.ohos_id_elements_margin_vertical_l') });
}

5. 页面资源与支付类型定义

在支付收银台中,涉及到的资源文件(如图片、字符串等)应统一存放在src/main/resources目录下。支付方式的枚举和支付类型的定义至关重要,它们可以通过如下代码进行定义:

复制代码
export class PaymentType {
  payTypeSerialNo?: string;
  payTypeDesc?: string;
  isAvailable?: boolean;
  custPayType: string = '';
}

6. 测试数据与支付工具

在开发过程中,测试数据和支付工具的定义也非常重要,下面是支付方式的测试数据:

复制代码
export const paymentTypeList: PaymentType[] = [
  { payTypeSerialNo: '1', payTypeDesc: 'xx银行储蓄卡 (0606)', isAvailable: true, custPayType: 'BankFastPayment' },
  { payTypeSerialNo: '2', payTypeDesc: 'xx银行储蓄卡 (0909)', isAvailable: true, custPayType: 'BankFastPayment' }
];

7. 总结

通过遵循HarmonyOS收银台设计规范,开发者可以轻松构建出一个功能完备且用户友好的支付界面。无论是商户信息展示、支付方式选择,还是支付按钮的设计,每一部分都应注重细节,以确保支付过程的顺畅和高效。希望本篇博客能够帮助开发者在实现支付收银台时,提升用户体验并确保符合HarmonyOS的设计标准。

相关推荐
wangxiaowu19867 小时前
HarmonyOS NEXT和通用JSBridge
华为·harmonyos
cz追天之路10 小时前
华为机考 ------ 识别有效的IP地址和掩码并进行分类统计
javascript·华为·typescript·node.js·ecmascript·less·css3
航Hang*12 小时前
第五章:网络系统建设与运维(中级)——生成树协议
运维·服务器·网络·笔记·华为·ensp
秦明月1316 小时前
EPLAN电气设计:图层导入与导出操作指南
数据库·经验分享·学习·学习方法·设计规范
航Hang*16 小时前
第三章:网络系统建设与运维(中级)——交换技术
运维·笔记·计算机网络·华为·ensp·交换机
l1340620823516 小时前
Flutter Geocoding 在鸿蒙上的使用指南
flutter·华为·harmonyos
无人装备硬件开发爱好者16 小时前
华为海思 BS21E (H2821E) 星闪组网测距定位 技术可行性方案
华为·最小二乘法·星闪·测距定位
俩毛豆17 小时前
【毛豆工具集】【UI】【多设备适配】实现与屏幕密度等倍的图片加载
华为·harmonyos
l1340620823517 小时前
344.在鸿蒙上使用 animations Flutter 包的指南
flutter·华为·harmonyos
灯前目力虽非昔,犹课蝇头二万言。18 小时前
HarmonyOS笔记12:生命周期
笔记·华为·harmonyos