Alipay 配置与使用说明

本文说明该组件的功能、关键源码和应用接入方式。

1. 参考代码

文件

作用

solution\components\alipay\alios_alipay\src\alipay_vendor.c

适配支付宝 SDK 需要的系统能力接口

solution\components\alipay\alios_alipay\src\transport_vendor.c

适配支付宝 SDK 的数据传输通道

2. 应用例程

场景

文件

调用接口

支付宝入口页面

app_alipay_main.c

gui_app_run_subpage()alipay_get_bind_state()

支付宝付款码页面

app_alipay_payment.c

alipay_get_payment_code()

支付宝公交码页面

app_alipay_transport.c

alipay_transport_thread_data_init()

支付宝绑定二维码页面

app_alipay_bind_qrcode.c

alipay_get_bind_state()gui_app_run_subpage()

3. 介绍

支付宝手表版本提供付款码和乘车码功能,其中乘车码功能需要连接网络,目前代码中是使用的蓝牙PAN上网(55X系列不支持)。

4. 快速配置

4.1 开启功能开关

在工程配置中,先看下面两个开关:

  • PKG_ALIPAY_PAY_CODE:开启付款码能力。

  • PKG_ALIPAY_TRANSPORT_CODE:开启乘车码能力。

使用建议:

  • 只需要付款码:打开 PKG_ALIPAY_PAY_CODE 即可。

  • 需要乘车码:打开 PKG_ALIPAY_TRANSPORT_CODE,它会自动拉起付款码相关依赖,无需再单独开启一遍。

4.2 配置设备信息

需要填写以下信息:

  • PKG_ALIPAY_COMPANY_NAME:公司名,需向支付宝申请。

  • PKG_ALIPAY_PRODUCT_MODEL:产品型号,需向支付宝申请。

  • PKG_ALIPAY_SE_HSC32I1 / PKG_ALIPAY_SE_CIU98_D:选择外挂 SE 芯片型号。

company nameproduct model 一定要和支付宝侧申请的信息一致,否则可能出现绑定或码生成失败。

4.3 硬件要求

  • 需要外挂 SE 芯片。

  • 需要连接 IIC、电源、地、RST 引脚。

  • 宏思芯片样例代码文档路径:solution/components/alipay/hal/se_v1/sample/HSEC-2.0-240510

  • 华大芯片样例代码文档路径:solution/components/alipay/hal/se_v2/sample/HED

  • 其他SE芯片请客户参照上面两个样例代码自行适配。

4.4 网络要求

  • 默认使用 PAN 连接获取数据。

  • 如果需要改成 BLE 代理等其他方式,请自行适配:solution/components/alipay/hal/network/sample/alipay_net_kal.c

5. 怎么使用

5.1 进入 Alipay 页面

固件烧录完成后,进入手表 UI,打开 Alipay 应用。

  • 如果开启了 PKG_ALIPAY_TRANSPORT_CODE,界面会同时显示“Payment code”“Transport code”“Setting”。

  • 如果只开启了 PKG_ALIPAY_PAY_CODE,界面只显示付款码和设置项。

5.2 支付码使用流程

  1. 进入 Payment code

  2. 按提示完成绑定流程。

  3. 绑定成功后即可展示付款码相关结果。

5.3 乘车码使用流程

  1. 进入 Transport code

  2. 先完成绑定和初始化流程。

  3. 系统会根据当前状态拉取乘车码结果并显示。

  4. 如果长时间没有结果,优先检查以下项:

    • SE 芯片是否正确接线并上电。

    • 网络是否可达。

    • PKG_ALIPAY_COMPANY_NAMEPKG_ALIPAY_PRODUCT_MODEL 是否正确。

    • 配置项是否已经编译进固件。

6. 关键接口说明(二次开发/移植时参考)

6.1 直接调用接口(非耗时操作)

适合非耗时、栈占用较小的操作:

/**
 * 获取是否已经绑定
 * 此API在进入支付宝界面时调用,判断支付宝是否已经绑定
 * @param [in] void
 * @return 返回绑定状态 true:已绑定  false:未绑定
 */
bool ali_pay_get_binding_result(void);

/**
 * 获取绑定码
 * @param [out] binding_str     存放绑定码的指针
 * @param [out] len_binding_str 绑定码数据大小,传入时为binding_str buff大小
 * @return  UPAY_RV_OK:    获取成功
 *          UPAY_RV_BINDING_STR_TOO_LONG:数据size超过限制,请减少upay_product_model的长度
 */
upay_rc_t ali_pay_get_binding_string(uint8_t *binding_str, uint32_t *len_binding_str);

/**
 * 注册ble接收函数,允许接收绑定数据,在展示绑定码之前调用
 */
void alipay_data_subscribe(void);

/**
 * 取消注册ble接收函数,不允许接收绑定数据,绑定成功后调用
 */
void alipay_data_unsubscribe(void);

/**
 * 轮询绑定结果
 * 此API必须在获取绑定码后并且在绑定过程中才能调用
 * @param [in] void
 * @return 返回绑定状态 @upay_binding_status_e
 */
upay_binding_status_e ali_pay_get_binding_status(void);

/**
 * 从Flash读取存储的logon_ID
 * @param [out] id 存放数据的指针
 * @param [out] len_id数据大小,最大读取不超过传入这个值的数据大小
 * @return  UPAY_RV_OK:读取成功
 *          UPAY_RV_NOT_FOUND:未发现该存储项
 */
upay_rc_t ali_pay_get_logon_ID(uint8_t *id, uint32_t *len_id);

/**
 * 从Flash读取存储的nick_name
 * @param [out] nick_name 存放数据的指针
 * @param [out] len_nick_name数据大小,最大读取不超过传入这个值的数据大小
 * @return  UPAY_RV_OK:读取成功
 *          UPAY_RV_NOT_FOUND:未发现该存储项
 */
upay_rc_t ali_pay_get_nick_name(uint8_t *nick_name, uint32_t *len_nick_name);

/**
 * 获取帮助码
 * @param [out] aidCode 存放码串的缓存
 * @param [inout] len_aidCode 输入时为允许存放的最大长度;输出时为实际的长度, 建议长度为256
 * @return UPAY_RV_OK: 获取成功
 *         UPAY_RV_BUF_TOO_SHORT:缓存太小,此时输出的len_aidCode,为所需要的大小
 *         UPAY_RV_JS_ERROR:json错误,可能是堆空间不够
 */
upay_rc_t ali_pay_get_aid_code(char *paycode, uint32_t *len_paycode);

6.2 耗时操作接口

适合耗时较长、栈占用较大的操作:

/**
 * 创建获取乘车码临时线程
 * @param [in]  parameter->type 根据type调用不同函数
 *              parameter->data 对应函数需要的参数
 * @return  true  : On success
            flase : error
 */
bool transport_processing_thread(lv_transport_data_t *parameter);

其中 parameter->type 可选值如下:

ALIPAY_GET_CARD_LIST        // 获取城市列表
ALIPAY_DEFAULT_CARD_INFO    // 获取默认卡信息
ALIPAY_GET_TRANSIT_CODE     // 获取乘车码

使用时需要注意:在调用该接口前,需先根据实际情况处理信号量,避免上一次线程操作还未结束时重复触发。 其UI可参照\solution\examples\watch\application\alipay目录下的代码,发布版本可直接配置后编译烧录查看应用。

7. 流程图

7.1 支付宝绑定流程

7.2 乘车码流程

8. 参考资料