小程序 获取union_微信小程序获取 form_id

参考文档:
1. https:// developers.weixin.qq.com /miniprogram/dev/api-backend/open-api/template-message/templateMessage.send.html
2. https:// developers.weixin.qq.com /miniprogram/dev/component/form.html

一、需求

其实我已经实现过,通过 prepay_id 给用户发送模板消息。

也就是用户在支付之后,我们会获得一个 prepay_id,然后我们就可以通过这个 prepay_id 给用户发送三次模板消息。

但是现在出现了一个需求:小程序中有他人代付的功能,故最终收到发货通知的不是收货人。

二、解决方案

收集 form_id 也可以给用户发送模板消息。

(详见参考文档 2)

如何收集 form_id

首先是 表单组件 form 的使用,我们可以看下视图层(WXML)代码:

<form bindsubmit="formSubmit" report-submit>
  <button formType="submit">Submit</button>
</form>

逻辑层(JS)代码:

Page({
  formSubmit: function (e) {
    console.log('formId:', e.detail.formId)
  }
})

UI 界面:

ae7c94a7b692ae9ec4c717683198ed23.png

获取 form_id:

70fd272808ad80a16b6ae67e883ef381.png
模拟器会是:the formId is a mock one

f7b2f9536c63164433593379283ddc60.png
实体机:可以正常获取

三、如何设计一个可以一直给用户发消息的程序架构

form_id 的使用限制:

  • form_id 七天有效
  • form_id 只能使用一次
  • form_id 只能被小程序已登录用户使用

根据上述需求,得出下面的设计:

1、找到用户最高频次使用的按钮,将其改造成可以获取到 form_id 的形式

2、将 form_id 上传到后端数据库,下列是数据表设计:

FormId 表:
objectId - String //主键
user - Pointer : _User // 指向用户表
formId - String // 用户上传的 form_id
createdAt - Date // 创建时间
isUsed - 是否被使用 // 是否已被使用

3、当后台需要使用 form_id 时,建立查询条件

function getFormId(userId){
  return new Promise(async (resolve,reject)=>{
    // 查询 FromId 表
    // 查询条件1:user 为传入的用户 Id
    // 查询条件2:isUsed 为 false
    // 查询条件3:createdAt 与 现在相差7天以内
    // 排序条件:按 createdAt 升序排列
    // 返回值:列表的第一个,这样可以保证一直用的是时间最久远的那个
  })  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值