表单数据推送设置
[增值服务]—[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,确保数据来源的安全