diff --git a/doc/2.md b/doc/2.md index 5ae65fa6..16e9d4b1 100644 --- a/doc/2.md +++ b/doc/2.md @@ -193,14 +193,7 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob 状态码402,用户已签收却不点击确认收货,超期7天以后,则系统自动确认收货。 用户不能再点击确认收货按钮,但是可以评价订单商品。 -* 501 - -* 502 - -* 503 - - -此外,当订单状态码是102、103、203、401、402和503时,订单可以执行删除操作。 +此外,当订单状态码是102、103、203、401和402时,订单可以执行删除操作。 目前的设计是不执行物理删除,而是逻辑删除,因此用户查看自己订单时将看不到这些“已删除”的订单。 注意: @@ -209,21 +202,109 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob > * 用户点击付款时,后台服务会生成预支付会话id,但是不会影响订单状态。 > * 而用户支付过程中,放弃支付,例如没有 +#### 2.1.4.2 状态变化所对应的流程 + +* -> 101 + +小商场用户在小商场点击`下单`按钮,此时小商城后台服务会生产商户订单。 + +所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.submit` + +* 101 -> 101 + +这里开发者可能会奇怪,这里存在101->101的变化,这里表明后台没有响应 +小程序端的请求,但是这里的响应没有导致订单状态实际的变化。这里所指的 +响应小程序端请求是指下单成功以后小程序端自动请求付款或者用户在订单页面中 +点击`付款`所导致的对后台服务的预支付请求。 + +关于微信支付流程,可以参看官方文档的[小程序支付业务流程](https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3) +也就是说这里小商城后台服务会返回付支付信息。 + +所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.prepay` + +小商城接收返回的预支付信息后,会在小程序端出现支付页面。 +如果用户放弃支付,则不会出现任何效果,不会向小商场后台服务发送任何信息。 +如果用户支付,则会导致微信支付平台向小商场后台服务推送支付结果。 + +* 101 -> 102 + +如果用户没有支付,那么此时用户可以点击`取消订单`按钮来放弃当前订单。 + +所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.cancel` + +* 101 -> 103 + +如果用户没有支付,也没有点击`取消订单`按钮,那么系统会定时查询数据库的订单信息。 +如果发现存在订单未支付状态超时半小时,此时系统会自动取消订单,来释放商品资源。 + +所对应的后台服务方法是litemall-admin-api模块的`AdminOrderController.checkOrderUnpaid` + +* 101 -> 201 + +如果用户支付,微信支付平台会向小商场后台服务推送支付结果。 +而响应结果表示支付成功,则订单状态信息设置201,表示支付成功。 + +所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.payNotify` + +* 201 -> 202 + +当用户支付以后,管理员未发货前,用户可以点击`退款`申请退款取消订单。 +通常用户点击退款以后系统可以基于微信支付平台的退款接口实现自动退款, +但是这里考虑到安全原因,不支持系统自动退款操作。 +相应地,这里小商场后台服务只是设置订单状态,表示退款申请中。 + +所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.refund` + +* 202 -> 203 + +这里退款操作是由管理员在微信支付平台手动退款,然后在本项目的 +管理平台里面点击`退款确认`按钮,此时订单状态会设置成203,表明 +退款已经成功,同时系统会自动恢复订单商品数量。 + +所对应的后台服务方法是litemall-admin-api模块的`AdminOrderController.refundConfirm` + +* 201 -> 301 + +当订单支付以后,管理员进行订单发货,然后在管理平台点击`发货`,填写快递信息, +设置订单状态是301,表示管理员已发货状态。 + +所对应的后台服务方法是litemall-admin-api模块的`AdminOrderController.ship` + +* 301 -> 401 + +当用户收到商品以后,用户点击`收货确认`按钮,设置订单状态401,表示用户成功收货。 + +所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.confirm` + +* 301 -> 402 + +当管理员发货以后,用户一直没有确认收货,系统定时检测订单状态,如果发现发货以后 +七天用户都没有收货,此时系统自动确认用户收货,设置订单状态402。 + +所对应的后台服务方法是litemall-admin-api模块的`AdminOrderController.checkOrderUnpaid` + + +注意: +> 上述订单状态变化中具体的逻辑处理可以参考相应模块文档和模块代码。 + #### 2.1.4.2 状态码所支持的用户操作 -状态码标识了订单的状态,但是对于用户而言,真正关心的只是他们能够进行的操作: - -* `支付`,即下单后,用户可以进行支付 -* `取消`,即用户未支付,可以取消当前订单 -* `退款`,即用户支付后,可以申请退款 -* `确认收货`,即用户收货以后,可以确认已收货 -* `申请退货`,即用户确认收货以后,可以申请退货 -* `评价`,即用户确认收货以后,可以对已购买商品评价 -* `再次购买`,即用户确认收货以后,可以快速购买已购买过的商品 -* `删除`,即用户可以想要删除自己的订单信息 - -这些操作其实就是订单页面中的相应按钮,如果当前用户操作可以执行,则按钮就会出现。 +状态码标识了订单的状态,但是对于用户而言,真正关心的只是他们能够进行的操作, +也就是在小商场的小程序端用户可以进行点击的按钮操作,目前支持: +* `支付`,如果下单后未立即支付,则订单详情页面会出现`支付`按钮; +* `取消`,如果用户未支付,则订单详情页面会出现`取消`按钮; +* `退款`,如果用户支付后但是管理员未发货,则订单详情页面会出现`退款`按钮; +* `确认收货`,如果管理员已发货,则订单详情页面会出现`确认收货`按钮; +* `申请退货`,如果用户已经确认收货同时未超过一段时间,则订单详情页面会出现`申请退货`按钮; + 注意,这里如果是系统超时自动确认收货,则不会出现; +* `去评价`,如果用户确认收货以后,则订单详情页面会出现`去评价`按钮; + 注意,这里如果是系统超时自动确认收货,则也会出现; +* `再次购买`,如果用户确认收货以后,则订单详情页面会出现`再次购买`按钮; + 注意,这里如果是系统超时自动确认收货,则也会出现; +* `删除`,如果当前订单状态码是102、103、203、401和402时,则订单详情页面会出现`删除订单`按钮; + 注意,这里的删除操作是逻辑删除,即设置订单的删除状态`deleted`。 + 因此订单状态码和小商场用户操作之间存在映射关系: * 101 @@ -248,18 +329,20 @@ litemall.sql数据库基于nideshop中的[nideshop.sql](https://github.com/tumob * 301 - 用户可以“确认收货” + 用户可以`确认收货` * 401 - 用户可以“订单删除”、“评价”、“再次购买” + 用户可以`退货`、`删除`、`去评价`、`再次购买` * 402 - 用户可以“订单删除”、“评价”、“再次购买” + 用户可以`删除`、`去评价`、`再次购买` + +开发者可以参考litemall-db模块的OrderUtil类。 #### 2.1.4.3 售后处理 -目前不支持售后或退货相关业务。 +虽然这里用户有`退款`操作,但是目前不支持退货相关业务。 #### 2.1.4.4 黑名单 diff --git a/doc/7.md b/doc/7.md index 41ae233a..aed61221 100644 --- a/doc/7.md +++ b/doc/7.md @@ -39,6 +39,44 @@ 2. 第三者手机小商场的**调试功能**开启 3. 在微信小程序平台设置第三者的微信账号是**体验者** -### 管理后台 +#### 7.1.4 小商场为什么不能支付,或者为什么点击支付总是报错? -### 基础平台 \ No newline at end of file +原因: + +开发者必须拥有商户支付权限,然后设置好以下信息: +``` +wx.app-id= +wx.app-secret= +wx.mch-id= +wx.mch-key= +wx.notify-url= +``` + +解决方案: + +参考`3.0 小商场环境`,设置好相应支付配置信息 + +#### 7.1.5 为什么小商城支付成功,但是返回以后商品订单? + +现象: + +在微信开发者工具中已经成功支付,但是返回订单页面时商品订单仍然显示`未付款`状态。 + +原因是: + +微信平台支付成功以后,会把支付结果推送到`wx.notify-url`所指定的地址。 +因此,开发者必须确定`wx.notify-url`所指向的访问链接是可以成功访问,同时 +能够返回正常的响应结果。 + +解决方案: + +1. 如果开发者是在微信开发者工具中测试支付,那么需要采用一些内网穿透工具, +把`WxOrderController.payNotify`所代表的本地地址,例如`http://localhots/wx/order/pay-notify`, +转换成外网可以访问的地址,例如`http://xxx.com/wx/order/pay-notify`,最后 +设置`wx.notify-url`指向该地址。 + +2. 如果开发者已经上线服务,请确认`wx.notify-url`所指向的访问链接可以正常工作。 + +## 7.2 管理后台 + +## 7.3 基础平台 \ No newline at end of file diff --git a/doc/pic2/2-1.png b/doc/pic2/2-1.png index 0e2e2203..3acc802e 100644 Binary files a/doc/pic2/2-1.png and b/doc/pic2/2-1.png differ