APP 根据虚拟物品计费点创建订单。创建订单时需要提交不同的表单。 例如 A 付费点需要提交姓名及生日,B 续费点需要提交姓名及邮箱。
创建订单表 orders
, 计费点表 products
表单表 forms
,
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| app_id | int(10) unsigned | NO | MUL | NULL | |
| product_id | int(10) unsigned | NO | | NULL | |
| version_id | int(10) unsigned | NO | | NULL | |
+------------+------------------+------+-----+---------+----------------+
表单字段配置表 form_fields
,
+------------+--------------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------------------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| form_id | int(10) unsigned | NO | MUL | NULL | |
| name | varchar(30) | NO | | NULL | |
+------------+--------------------------------------------+------+-----+---------+----------------+
订单表单表 form_values
+------------+--------------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------------------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| order_id | varchar(22) | NO | | NULL | |
| name | varchar(30) | NO | | NULL | |
| value | varchar(255) | NO | | NULL | |
+------------+--------------------------------------------+------+-----+---------+----------------+
创建订单时,传入计费点 ID,并将表单内容通过 json 提交
POST /orders
product_id=1&attributes=%7B%22username%22%3A%22testing%22%7D
通过付费点获取到表单及表单字段配置进行表单校验后入库。
当返回订单信息时,表单的值应该怎么下发? 目前我使用的是
{
"id":1,
"attributes":[
{
"name":"username",
"value":"testing"
},
{
"name":"birthday",
"value":"2017-07-10"
}
]
}
这样当不同计费点的表单不同时,attributes 内的结构时固定的。
但也有朋友说应该直接这样
{
"id":1,
"attributes":{
"username":"testing",
"birthday":"2017-07-10"
}
}
或者是将上面这种 attributes
的形式直接转为 json 字符串。
各位能否指点一下?