701N_WATCH_支付宝开发说明_v1.2
📎 原始文档:https://www.kdocs.cn/l/cvRwYAdDVyIP
701N WATCH 支付宝开发说明 v1.2
珠海市杰理科技股份有限公司
Zhuhai Jieli Technology Co.,LTD
版权所有,未经许可,禁止外传
修改记录
| 版本 | 更新日期 | 描述 |
|---|---|---|
| 1.2 | 2023/ 04/ 17 | 生成701N_WATCH_支付宝开发说明_v1 .2文档 |
| 更新: | ●增加IIC 复用电路说明,常见问题更新 | |
| 1.1 | 2022 / 12 / 19 | 生成701N_WATCH_支付宝开发说明_v1 .0文档 |
| 更新: | ●增加阿里云新版支付宝接入方式 ●增加平头哥硬件支付宝接入方式 | |
| 1.0 | 2022 / 8 / 12 | 701N watch 支付宝开发说明 |
| 更新: | ●建立初始版本 ●定义文档格 |
目录
珠海市杰理科技股份有限公司............................................................................ 1
一、 引言...............................................................................................................5
(一) 编写目的..........................................................................................................................................5
(二) 背景介绍..........................................................................................................................................5
(三) SDK版本.........................................................................................................................................5
二、 平头哥硬件加密.......................................................................................... 7
(一) 总体框架介绍..................................................................................................................................7
(二) 商务对接.......................................................................................................................................... 8
(三) 硬件设计.......................................................................................................................................... 8
(四) 软件设计..........................................................................................................................................9
1.软件总体流程介绍........................................................................................................................9
2.代码介绍......................................................................................................................................10
3.移植详细介绍..............................................................................................................................17
三、 阿里云软件加密........................................................................................ 18
(一) 总体框架介绍................................................................................................................................ 18
(二) 商务对接........................................................................................................................................ 19
(三) 软件设计........................................................................................................................................ 19
1、 支付相关文件...........................................................................................................................19
2、 软件总体流程介绍...................................................................................................................19
3、 代码介绍...................................................................................................................................20
4、 移植详细介绍...........................................................................................................................28
5、 量产MAC地址烧录................................................................................................................ 28
6、 注意事项...................................................................................................................................29
(四) APP移植........................................................................................................................................30
1、 Andr。id端SDK移植说明....................................................................................................... 30
2、 IOS端SDK移植说明..............................................................................................................34
四、 支付页面显示流程.................................................................................... 36
五、 常见问题.................................................................................................... 37
(一) 支付宝APP绑定失败(软件加密)..........................................................................................37
(二) 支付宝提示设备未上线................................................................................................................37
(三) 使用And r。id 12 编译的apk激活会奔溃(软件加密).......................................................... 37
(四) 获取绑定码过程中手表系统崩溃(软件加密)........................................................................38
(五) 激活过程中断网、 ble断开连接导致激活失败(软件加密)................................................. 38
(六) 每一次连接app都需要跟阿里云通信(软件加密)............................................................... 38
(七) 阿里云第一次连接app会有大量的数据交互,建议跟厂商私有数据分时复用(软件加密)
...................................................................................................................................................................... 39
(八) 阿里云新加数字证书调试阶段需要重新将mac地址加入白名单(软件加密).................. 39
(九) 优化防止丢包(软件加密)........................................................................................................39
六、 附件.............................................................................................................40
(一) 安全存储........................................................................................................................................40
(1)系统存储分区说明................................................................................................................ 40
(2) 支付宝存储分区说明...........................................................................................................40
(二) 安全加密说明................................................................................................................................41
(三) 芯片信息及编译参数....................................................................................................................44
一、 引言
(一)编写目的
该文档介绍AC701X智能手表的接入流程, 以及常见问题的解决方式。
(二)背景介绍
目前安全支付方式有两种,一种为阿里云平台的软件加密支付方式;另外一种为平头哥平台的硬件加密方式。
软件加密方式需要客户的APP端移植阿里云的SDK,在第一次连接的时候完成激活功能。
硬件加密方式需要手表外挂SE加密芯片,手表需要重新layout。
建议使用软件加密方式的产品在硬件设计的时按照硬件加密方式的电路layout。
安全支付两种方式对比如下表所示。
| 接入方式 | 平台 | 硬件 | APP | Flash 占用 | RAM 占用 |
|---|---|---|---|---|---|
| 软件加密 | 阿里云 | 不需要修改硬件电路 | 需要移植阿里云SDK | 134KB | 17KB |
| 硬件加密 | 平头哥 | 需要重新 layout | 不需要修改 | 64KB | 14KB |
注: 以上flash和ram 占用情况为杰理测试数据,硬件加密方式官方要求设备需提供不小于 100kB 的ROM 空间,以及不小于20kB 的RAM 空间,若资源比较极限的情况,请确认测试无误后再做生产。
(三)SDĸ版本
软件加密支付:
该 文 档 软 件 加 密 支 付 对 应 参 考 程 序 为 701n_watch_release_v2 .0.1_br28_20230302_alios_release_v1 .5.1,该程序是基于701n_watch_release_v2 .0.1 版本,安全支付相关部分的代码均为应用层代码对于v2 .0.1之前版本厂商可自行移植。
硬件加密支付:
该 文 档 硬 件 加 密 支 付 对 应 参 考 程 序 为 701n_watch_release_v2 .0.0_br28_20221202_alipay_V1, 该 程 序 是 基 于
701n_watch_release_v2 .0.0 版本,安全支付相关部分的代码均为应用层代码其他版本厂商可自行移植。
二、平头哥硬件加密
(一)总体框架介绍
支付宝硬件加密方式是将用于支付的账户数据信息全部存储再加密芯片中,加密芯片通过IIC 与主控进行通信交互。 用户厂商需要在批量生产需要对接平头哥获取设备凭证,有设备凭证的SE 芯片才能够在绑定完成获取支付凭证,进行支付操作。
- 支付宝仅对接产品,不直接对接芯片厂商,需要产品厂商和支付宝沟通处理,我司协助。
- 前期商务流程由我司市场部郑进兴协助处理,后续技术开发由我司手表团队协助支持。
- 显示效果与交互逻辑以支付宝的文档说明为准。
(二)商务对接
商务对接具体事宜,需要客户自己和支付宝商洽,支付宝商务对接人的联系方式可以找我司郑进兴获取(13928026905 微信电话同号)
(三)硬件设计
HSC32I1 参考原理图:
详细电路设计可以参考宏思的《HSC32I1_DFN8_S2V60 设计参考 V1 .2》在发板前可咨询我司硬件同事审阅。针对V1 .2有以下补充说明。
1.供电电源一定要可以关断。该芯片没有低功耗模式,工作电流 1mA左右,不工作的时候一定要关断电源。
2.芯片电源关掉以后还要考虑IO 电流倒灌导致的漏电问题。因而通信引脚 SCL和SDA 的上拉电阻电源也要求可以关断,否则会带来漏电。
3. RST 引脚可以不接,然后给芯片的电源预留一个RC 电源滤波电路。 芯片上电的时候会进行复位,为了预防电源的抖动和纹波,预留电源滤波电路。如果主控的IO足够,可以将RST 引脚拉到主控的一个GPIO。
4. GP0和GP3 悬空,无需连接主控。
5.使用该加密芯片,需要至少消耗主控3个IO,1个IO用作供电,2个IO 用作IIC通信。主控的IO足够建议单独一路IIC 给芯片。 主控IO不够可
以和其他外设(如TP)复用,但需要加MOS 管控制防止灌电流。MOS 管控制电路参考如下:
(四)软件设计
l.软件总体流程介绍
软件设计涉及到两部分,一是杰理的sdk代码部分,另一部分是平头哥给的sdk,需要把平头哥给的驱动代码、相关接口在杰理sdk 中实现。
支付宝相关接口在“apps\common\pay\alipay\”文件夹中。Ui 显示流程参考 “apps/watch/ui/lcd/STYLE_WATCH_NEW/ui_action_qrcode.c”。 功能代码详见宏定义 “TCFG_PAY_ALIPAY_ENABLE”包裹的部分,IIC 通信驱动代码在apps\common\pay\alipay\soc\se\JL\hsc32il 目录。
支付绑定流程:手表端打开支付宝界面,先获取支付宝的绑定状态若手表未被绑定,则显示绑定码同时开启支付宝广播,使用支付宝APP扫码功能进行ble连接完成绑定;若手表已绑定则直接显示付款码。绑定阶段的 UI 显示流程参考第四章。
2.代码介绍
1.更改配置
使能平头哥硬件加密支付方式、选择iic 的模式(建议选择软件iic), TCFG_PAY_ALIOS_ENABLE 为软件加密方式,需要配置为DISABLE。
2.蓝牙
手表与支付宝app 的通信有特定的profile(如果有差异,以支付宝的说明为准),示例如下:
3.支付功能开发
a、 支付宝初始化初始化iic模块。

b、 绑定界面与支付界面区分

c、 绑定
硬件加密支付在ble数据传输过程中需要4.5KB的RAM来做数据缓存。
d、 支付


获取支付二维码
获取支付条形码

4.IIC驱动接口
移植过程分为IIC驱动移植部分和蓝牙交互移植,IIC 驱动代码主要在 apps\common\pay\alipay\soc\se\JL\hsc32i1 目录下,包括void HS_IIC_Init(void)初 始 化 函 数, HS_IIC_Send_Cmd 函 数 中 的 hs_i2c_write 函 数, HS_IIC_Recv_Resp 中的hs_i2c_read 函数等。
驱动函数最终调用到 iic_soft.c 的 函数接 口 soft_iic_tx_byte 和 soft_iic_read_buf,来实现iic通信的读写功能。我们当前使用软件iic,使用的参考接口使用PG0和PG2,具体可以根据实际情况分配对应gpio 管脚,可以在board_ 701n_demo.c通过配置delay来能实现iic 通信速度,io_pu参数设置上拉。
3.移植详细介绍
701n_watch_release_v2 .0.0版本移植参考《支付宝硬件(HSC32I1)方案固件移植说明》,其他版本,请参考《支付宝硬件(HSC32I1)方案固件移植说明》 自行修改。
三、 阿里云软件加密
(一)总体框架介绍
新版软件支付宝接入需要厂商与阿里云签订协议并且申请三元组,完成APP端和手表端的SDK移植,功能开发完成后将样机提供给支付宝做认证。 量产阶段需要记录每一台设备的mac地址,将mac地址列表提交给阿里云加入支付宝后台。
- 支付宝仅对接产品,不直接对接芯片厂商,需要产品厂商和支付宝沟通处理,我司协助。
- 前期商务流程由我司市场部郑进兴协助处理,后续技术开发由我司手表团队协助支持。
- 显示效果与交互逻辑以支付宝的文档说明为准。
(二)商务对接
商务对接具体事宜,需要客户自己和支付宝商洽,支付宝商务对接人的联系方式可以找我司郑进兴获取(13928026905 微信电话同号)
(三)软件设计
1、 支付相关文件
支付宝相关接口在“apps\common \pay \upay_aliyun”文件夹中。
Ui 显示流程参考“apps\watch\ui\lcd\STYLE_WATCH_NEW\ui_action_qrcode.c”。
功能代码详见宏定义“TCFG_PAY_ALIOS_ENABLE”和“TCFG_PAY_ALIOS_WAY_ALIYUN”包裹的部分。
2、 软件总体流程介绍
阿里云软件加密流分为激活阶段和绑定阶段。
激活阶段:支付宝在第一次使用之前需要连接厂商自己的APP,完成激活后才能使用绑定支付功能。 激活阶段需要APP将阿里云的数据透传给手表端, 同时手机端产生的数据透传给阿里云。 阿里云没有规定激活阶段使用的数据传输协议,厂商可以使用自己的私有协议,也可以使用杰理提供的rcsp协议。
注意:每个MAC地址只允许被激活一次,激活过程中蓝牙断开连接、
APP或手表固件奔溃,可能会导致激活失败,该mac地址可能失效(表现为:无法获取绑定码)。 若mac地址失效需要找阿里云客服重置mac地址。
绑定阶段:绑定阶段跟旧版支付宝流程基本一致。 手表端打开支付宝界面,先获取支付宝的绑定状态若手表未被绑定,则显示绑定码同时开启支付宝广播,使用支付宝APP扫码功能进行ble连接(该阶段也存在数据透传,但与激活阶段不同的是该阶段有明确协议使用的类型)完成绑定;若手表已绑定则直接显示付款码。绑定阶段的UI 显示流程参考第四章。
3、 代码介绍
1.更改配置
打开支付宝使能,添加三元组信息(三元组信息需要找支付宝申请)。 TCFG_PAY_ALIOS_WAY_SEL选择TCFG_PAY_ALIOS_WAY_ALIYUN
2.安全支付信息存储区域
软件加密方式需要20KB 的flash 空间来存储支付宝的加密数据,该部分的数据要求在OTA 阶段不能被擦除。
注意:
UPAY_ADR 的地址需要自己去填,第一次用强升工具烧入配置为 UPAY_ADR=AUTO 由配置编译工具自动分配;然后把分配后的地址替换 AUTO例如:UPAY_ADR=0x1f8000,地址一旦固定不能改变,否则会导致支付宝数据丢失支付宝功能异常。
地址的获取方式:
将UPAY_ADR=AUTO 使用强制升级工具升级样机就可以获取到地址。
3.蓝牙
a、 激活阶段
激活阶段阿里云只要求完成数据透传,没有规定具体使用何种协议进行透传、厂商可以自行实现,也可以使用杰理rcsp协议(使用rcsp协议需要移植杰理提供的app端sdk)。
若厂商不使用杰理提供的rcsp协议,需要重新实现bizbus_hal_send函数,并且接收到app下发的激活数据调用bizbus_recv 函数。
b、 绑定阶段
绑定阶段支付宝通过BLE 通信,有特定的profile(如果有差异, 以支付宝的说明为准),示例如下:
4.支付功能开发
a、 支付宝初始化
注意:该函数有使用到ble mac地址,需要保证该函数调用前后ble mac地址保持一致。
b、 绑定界面与支付界面区分
static void upay_startup_time(void priv ){
u32 page = PAGE_91; //绑定界面
#if TCFG_PAY_ALIOS_ENABLE
upay_binding_status_e bind_status = upay_get_binding_status(); printf ( "binding status:0x%x \n " , (int)bind_status) ;
if (bind_status == UPAY_STATUS_BINDING_OK) { //区分绑定和支付
/ page = PAGE_93; /
page = PAGE_92; //支付界面
}#endif / #if TCFG_PAY_ALIOS_ENABLE */ UI_HIDE_CURR_WINDOW(); UI_SHOW_WINDOW(page) ; UI_WINDOW_BACK_DEL(PAGE_94) ;}
c、 绑定
static int layout_alipay_bind_onchange(void *_ctrl, enum element_change_event event, void *arg){
switch (event) {
case ON_CHANGE_INIT : //进入绑定界面
#if TCFG_PAY_ALIOS_ENABLE alipay_check_cnt = 0 ; alipay_check_status = 0 ; ui_auto_shut_down_disable (); printf ( "Before init , status is %02X\n " , upay_get_binding_status()); extern char upay_get_version(); printf ( "upay ver:%s \n " , upay_get_version()); upay_retval_t ret;
ret = upay_env_init (); //环境初始化,此时状态应该为STATUS_START_BINDING
printf ( "After init , status is %02X, ret:%d \n " , upay_get_binding_status() , ret) ;
upay_ble_mode_enable (1 ) ; //使能支付宝ble
u32 msg_len = sizeof (alipay_QRcode_mess) ;
ret = upay_get_binding_string(alipay_QRcode_mess , &msg_len) ; //获取绑定码
printf ( "upay_get_binding_string , len :%d , ret:%d \n " , msg_len , ret) ; printf ( "%s\n " , alipay_QRcode_mess) ; alipay_time_id = sys_timer_add(NULL , upay_check_binding_time , ALIPAY_CHECK_TIME_MS) ;#endif / #if TCFG_PAY_ALIOS_ENABLE / break ;
case ON_CHANGE_RELEASE : //退出绑定界面
#if TCFG_PAY_ALIOS_ENABLE if (alipay_time_id) { sys_timer_del (alipay_time_id); alipay_time_id = 0 ;}
upay_env_deinit (); //注销Alipay绑定环境
upay_ble_mode_enable (0 ) ; //关闭支付宝ble
ui_auto_shut_down_enable ();#endif / #if TCFG_PAY_ALIOS_ENABLE */ break ; default : break ;} return false;}
d、 支付
static int layout_alipay_onchange(void *_ctrl , enum element_change_event event, void arg){
switch (event) {
case ON_CHANGE_INIT : //进入支付界面
printf ( "%s ,%d \n " , func , LINE ) ;#if TCFG_PAY_ALIOS_ENABLE alipay_check_cnt = 0 ; alipay_check_status = 0 ; alipay_show_barcode = 0 ; ui_auto_shut_down_disable ();
upay_ble_mode_enable (1 ) ; //使能支付宝ble
u32 msg_len = sizeof (alipay_QRcode_mess) ;
upay_get_paycode (alipay_QRcode_mess, &msg_len) ; //获取支付码
/ strcpy(alipay_QRcode_mess , "1234567890123456789 " ) ; /
alipay_time_id = sys_timer_add(NULL , upay_check_pay_time , ALIPAY_CHECK_TIME_MS) ;#endif / #if TCFG_PAY_ALIOS_ENABLE /
break ; case ON_CHANGE_RELEASE : //退出支付界面
printf ( "%s ,%d \n " , func , LINE ) ;#if TCFG_PAY_ALIOS_ENABLE if (alipay_time_id) { sys_timer_del (alipay_time_id); alipay_time_id = 0 ;}
upay_ble_mode_enable (0 ) ; //关闭支付宝ble
ui_auto_shut_down_enable ();#endif / #if TCFG_PAY_ALIOS_ENABLE */ break ; default : break ;} return false;}
获取支付二维码
static int layout_alipay_bind_qrcode_onchange(void *_ctrl , enum element_change_event event, void *arg){ struct element *elm = (struct element * )_ctrl ; struct draw_context *dc = (struct draw_context * )arg; struct rect rect = {0 } ;
switch (event) {
case ON_CHANGE_INIT : //获取支付二维码
jl_qr_code_process(alipay_QRcode_mess, strlen(alipay_QRcode_mess) , &alipay_qr_code ) ;
break ;
获取支付条形码
static int alipay_barcode_number_onchange(void *_ctrl, enum element_change_event event, void *arg){
struct ui_number *number = (struct ui_number * )_ctrl ;
struct unumber param = {0 } ;
switch (event) {
case ON_CHANGE_INIT : //获取条形码
printf ( "%s ,%d \n " , func , LINE ) ;
printf ( " str:%s \n " , alipay_QRcode_mess) ;
param .type = TYPE_STRING;
param .num_str = alipay_QRcode_mess;
ui_number_update(number, ¶m) ;
break ; default : break ;} return false;}
e、 解绑

4、 移植详细介绍
701n_watch_release_v2 .0.1 版本移植参考 《新版支付宝移植说明_v1 .2.pdf》,
v2 .0.1 以下版本,请参考《新版支付宝移植说明_v1 .2.pdf》 自行修改。
5、 量产MAC地址烧录
支付宝量产白名单需要提供ble 的mac 地址列表。一拖八烧写器支持经
典蓝牙(不是BLE)地址自增功能,详见链接文档。 https://doc.zh-jieli.com/Tools/zh-cn/mass_prod_tools/burner_1tuo8/btname_addr.html
固件代码中通过lib_make_ble_address()函数把经典蓝牙地址转换为ble
地址。 用户可以搜索该函数,把用到的地方替换成自己的转换规则,方便
提供支付宝白名单。
例如IOS 一键连接功能,是把ble 转换成和经典蓝牙一样的地址。
6、 注意事项
a、upay_get_timestamp()函数获取到的是UTC,一般为当前手表显示时间减
去时区时间,例如国内时间换算成UTC 需要减去8 小时。
b、 其他接口需求以支付宝给的接口文档说明为准。
c、 需要先判断状态再确定跑绑定还是支付流程。
d、upay_env_init()和upay_env_deinit()仅在绑定流程中使用。
e、 显示效果与交互逻辑以支付宝的文档说明为准。
(四)APP移植
1、 Android端SDK移植说明
请参考《HealthAide_ALi_IOT_V0.6.3.1(Android)补丁.zip》文件夹中资料。
# 开发前阅读
## 开发资料文件结构 apk --- 测试APK
|-app --- 宜动健康测试APK, 建议在应用商店下载|-tool--- 手表测试工具,用于测试手表功能
code --- 参考Demo源码存放|-app --- 宜动健康开放源码 doc --- 开发文档
- ReadMe--- 现在改为在线文档,请详细阅读 libs --- 相关库
|-ALi-IOT
|-AliAgent-release-3.3.7.aar --- 支付宝安
全认证相关
|-org.eclipse.paho.android.service_V1.1.1-release.aar--- 支持Android 12+的 MQTT库
|-JL
|-BmpConvert_V1 .1.0-release --- 图像转换相关
|-jldecryption_v0 .2-release --- 加密相关
|-jl_bluetooth_connect_V1 .2.1-release--- 蓝牙连接相关
|-jl_health_[http_V1.2.0-release ---](http_V1.2.0-release ---) 杰理健康服务器相关
|-jl_rcsp_V0 .4.1-release --- 基础协议相关
|-JL_Watch_V1 .8.2-release --- 杰理健康相关
|-jl_bt_ota_V1 .8.0-release --- 杰理OTA相关
## 更新内容说明
### AliAgent-release-3.3.7更新内容
| 1.增加数字证书功能 2.调整兼容版本 支持Android SDK 范围: [ 19, 32]### jl_rcsp库更新内容 1.调整大数据传输命令### Jl_Watch库更新 1.调整大数据传输功能 WatchOpImpl#sendLargeData --- 发送大数据 WatchOpImpl#OnWatchCallback#onReceiveBigData | --- 获取大数据回调 |
|---|---|
| WatchOpImpl#OnWatchCallback#onBigDataError | --- 大数据处理错误回 |
| 调 |
## 更新注意事项
1.若是新用户,请按照开发文档接入
2.若是已在V0 .6.2版本开发的客户
- 若是自定义大数据传输流程,更新ALi-IOT 的SDK 即可
- 若是依赖杰理大数据传输功能实现,请参考Demo#BtDataProcessor类实现。
## 功能实现参考### 宜动健康
1. 蓝 牙 连 接 实 现 , 可 以 参 考
com.jieli.healthaide.tool.bluetooth.BluetoothHelper
2.健康SDK实现,可以参考com.jieli.healthaide.tool.watch.WatchManager
[3. OTA](3. OTA)功能实现,可以参考com.jieli.healthaide.tool.upgrade.OTAManager 4.支付宝安全认证实现,可以参考com.jieli.healthaide.tool.iot.ALiIOTKit 4.1 支付宝安全认证流程实现,参考com.jieli.healthaide.tool.iot.ALiIOTKit
4.2 蓝牙数据处理,参考com.jieli.healthaide.tool.iot.BtDataProcessor 测试功能可以参考test 包的单元测试示例
## 打印文件输出
1.打开JL_Log 的文件输出
JL_Log.setTagPrefix("health") ; //设置log 的标识//log配置
//context --- 上下文,建议是getApplicationContext()
//islog --- 是否输出打印,建议是开发时打开,发布时关闭
//isSaveFile--- 是否保存log文件,建议是开发时打开,发布时关闭 JL_Log.configureLog(context, true, true);
2.打印文件
2.1 打印文件格式
格式:[tag_prefix]log [timestamp] .txt
例如:health_log_20220113093020.432.txt ==> 健康SDK打印文件,创建时间:2022/01/13 09:30:20
2.2 文件存储路径
位置: 手机根目录/Android/data/[包名]/files/logcat/
- 宜动健康
举例:Android/data/com.jieli.healthaide/files/logcat/ - 手表测试工具
举例:Android/data/com.jieli.watchtesttool/files/logcat/
3.出现异常时的正确处理步骤
3.1 简单描述问题现象(必要)
3.2 提供最接近时间戳的log文件(必要)
3.3 提供现象的截图或者视频
2、 IOS端SDK移植说明
请参考《HealthAide_ALi_IOT_V0 .1.3(iOS) .zip》文件夹中资料。 SDK 内容:
1、 增加大数据传输功能;
2、 已接入AliCloudlotKit 的SDK;
3、 三元组数据收发;
4、 Lp 飞鸽数据收发;
# 开发前阅读
## 开发资料文件结构
code --- 测试ALi_SDKDemo doc --- 开发文档
- 杰理SDK接入文档说明(简) .md—SDK接入文档简化版 lib --- 相关库
-JL_BLEKit.framework_v.1.7.0 — 杰理蓝牙SDK
-DFUnits.framework — 用于UI提示等(选用)
-AliCloudIotKitAdvance.framework- 阿里支付SDK
1.打开JL_Log 的文件输出: JL_Tools.openLogTextFile()
2.打印文件,打印文件格式如下:
格式:JL_LOG_xxxxxxxx.txt
0
http://www.zh-jieli.com/

四、支付页面显示流程
四、支付页面显示流程
注:显示效果与交互逻辑以支付宝的文档说明为准。
五、常见问题
(一)支付宝APP绑定失败(软件加密)
(1)查看upay_env_init()和upay_get_binding_status()的返回值,若返回值错误则说明设备没有激活成功;
(2)确认当前时间戳是否为实时时间;(3)Mac地址已经被其他设备使用;(4)阿里云存储数据被修改;
(二)支付宝提示设备未上线
需要跟支付宝端沟通,将设备加入支付宝后台。
(三)使用Android12 编译的apk激活会奔溃(软件加密)
引用org.eclipse.paho.android.service_V1.1.1-release.aar 库文件,不要引用下面的lib。

五、常见问题
(四)获取绑定码过程中手表系统崩溃(软件加密)
目前解决方式,注释掉阿里云的打印。
(五)激活过程中断网、ble 断开连接导致激活失败(软件加密)
先完成fgs没有完成fnd,会导致设备永久失效。
存在凭证信息没有存储完成阿里云也默认设备已注册的风险。
(六)每一次连接app都需要跟阿里云通信(软件加密)
固件获取不到支付宝激活开始和完成的状态。
(七)阿里云第一次连接app 会有大量的数据交互,建议跟厂商私有数据分时复用(软件加密)
(八)阿里云新加数字证书调试阶段需要重新将mac地址加入白名单(软件加密)
(九)优化防止丢包(软件加密)
如果是客户使用自己协议,要注意这里,支付宝的send里面成功判断的,所以要客户保证好数据成功,这里的我们提供了一种方式做参考,客户可以跟进自己实际实现防止丢包
(十)主控与安全芯片通道IIC通信异常?(硬件加密)
查看是否IIC端口复用情况,驱动中映射的iic通道是否正确,用逻辑分析仪抓取波形排查。
(十一)芯片IIC通信正常,手机支付宝绑定总是失败(硬件加密)
a.手表端没有对时,在绑定前应该先连接app 自动对时。
b.支付宝使用profile 与当前使用通道(抖音或者自定义服务)冲突。
六、 附件
http://www.zh-jieli.com/
c.卡在某个数据交换环节,log 排查。
六、 附件
(一)安全存储
(1)系统存储分区说明
系统分区图:
(2)支付宝存储分区说明
支付宝存储分区图和大小如下图(位于系统预留区域):
(二)安全加密说明
采用 AES 加密算法,即高级标准(AES ,Advanced Encryption Standard)。具体加密流程:
AES 的基本结构:
AES 为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在 AES 标准规范中,分组长度只能是 128 位,也就
是说,每个分组为 16 个字节(每个字节 8 位)。密钥的长度可以使用 128 位、192 位或
256 位。密钥的长度不同,推荐加密轮数也不同,如下表所示:
我们实现的是 AES-128,也就是密钥的长度为 128 位,加密轮数为 10 轮。
AES 的整体结构如下图所示,其中的 W [0,3 ]是指 W [0 ]、W [ 1 ]、W [2 ]和 W [3 ]串联组成的
128 位密钥。加密的第 1 轮到第 9 轮的轮函数一样,包括 4 个操作:字节代换、行位移、列混合和轮密钥加。最后一轮迭代不执行列混合。另外,在第一轮迭代之前,先将明文和原始密钥进行一次异或加密操作。
加密流程如下图:
解密和上图类似,做的是上图的逆变化。解密过程仍为 10 轮,每一轮的操作是加密操作的逆操作。 由于 AES 的 4 个轮操作都是可逆的,因此,解密操作的一轮就是顺序执
行逆行移位、逆字节代换、轮密钥加和逆列混合。 同加密操作类似,最后一轮不执行逆列混合,在第 1 轮解密之前,要执行 1 次密钥加操作。
(三)芯片信息及编译参数
- 此处以AC7012A6 为例:芯片:AC7012A6
CPU 架构:PI32V2
CPU 主频:192MHZ
RAM(KB):640KB
ROM(KB):2048KB
是否有SE:有
是否支持硬件AES:硬件AES 编码,软件AES 解码
操作系统:UCOS
操作系统版本:V100
编译器:杰理编译器(基于clang 4.0. 1)
编译器版本:2.4.6
IDE:CodebBlocks/VS/命令行
编译参数:
-target pi32v2 \
-mcpu=r3 \
-integrated-as \
-fno-common \
-integrated-as \
-Oz \
-g \
-flto \
-fallow-pointer-null \
-fprefer-gnu-section \
-fms-extensions \
-fdiscrete-bitfield-abi \ - 编译参数AC7012N 系列芯片通用。
- 可用 ram 和可用rom 根据实际情况填写。 可用ram 在程序中调用 mem_stats()和
mem_vlt_stats()查看剩余的ram,可用rom 约等于flash 大小减去jl_isd.bin 再减去VM 等。
701N WATCH 支付宝开发说明 v1.2