表单数据推送设置
[增值服务]—[API] 页勾选“启用数据推送”,并设置好推送的URL地址及使用该地址需要的token,当已开启推送通道的表单收到新数据时,番茄表单会将该条数据通过HTTP POST推送到指定的URL。
如何进行具体表单的数据推送
在需要进行数据推送的表单设置页,勾选“数据推送给现有系统”即可完成该表单推送通道的开启
推送API时body中的对象如下所示:
{
data: "表单数据",
time: "当前时间戳",
sign: "推送数据签名"
}
该接口需返回success字符串,如果用户的接口反馈给番茄表单的字符不是success这7个字符,番茄表单服务器会不断推送该数据(最多推送三次)
data的json格式如下, 但是是以字符串形式推送的:
参数 | 类型 | 说明 |
---|---|---|
_id | String | 该条数据的唯一标识符 |
form | String | 回复数据对应的表单id |
created | Date | 创建时间 |
lastUpdated | Date | 最后修改时间 |
isStar | Boolean | 是否为标记星号 |
totalAmount | Number | 支付表单的总金额 |
score | Number | 评分表单有效,值为该回复的分数 |
values | Array | 包含表单每个组件的回复,详情参见 |
remark | String | 备注 |
extendValues | Object | 拓展字段 { queryString: String, 提交时链接中对应的queryString } |
extendField | String | 扩展属性设置的取值 |
推送数据签名算法
番茄表单对本次推送数据的签名,建议用户验证该签名已确保数据来源安全。
推送的JSON数据为:
{
data: "表单数据",
time: "当前时间戳",
sign: "根据 ${data},${time}以及${token}拼接在一起使用sha1加密后的数据"
}
签名的数据为:data(JSON类型转换为String类型) + time(13位时间戳) + 用户设置推送api的token 进行加密。
示例代码:
const shasum = crypto.createHash('sha1')
shasum.update(data + time + app.pushToken)
const sign = shasum.digest('hex')
用户接收到推送数据后建议使用如下代码,验证推送数据中的token,确保数据来源的安全