美文网首页@IT·互联网@产品
商城类项目中遇到的一些问题

商城类项目中遇到的一些问题

作者: TmallBoss | 来源:发表于2020-03-23 16:09 被阅读0次

    1. 前言

      最近负责了一个优点类似美团的商城类微信小程序项目。小程序主要功能为用户能够在小程序中购买商品(门票、餐饮、住宿等),成功购买后能够得到对应商品的消费码,然后在线下实体门店中能够通过消费码来兑换实体商品或实体权利。
      此次项目的体量级本身并不大,只是一个简单的商城类的小程序。基本上所有的产品功能架构都是根据业务方实际中的需要来构建的。所以对于小程序本身就不再赘述。因为是第一次做商城类项目,还是遇到了一些意料之外的问题。本文主要针对项目中遇到的问题以及认为需要着重注意的点进行总结。希望能对首次负责类似产品的同学有所帮助~

    2. 目录

    1. 微信支付流程简述
    2. 支付异常的订单处理
    3. 常见锁定库存的2种方式
    4. 退款期间订单状态的处理
    5. 商品的日库存、总库存、日价格、固定价格
    6. 消费码的核销和过期
    7. 提现失败的异常情况
    8. 登录的时效性

    2.1 微信支付流程简述

    在微信小程序中的支付流程为:用户支付->调用微信支付接口->生成支付订单->鉴权并返回支付结果->更新支付状态(如图)。



    图为微信官方文档,相关的链接在文末,感兴趣的同学可以去自己研究一下。

    2.2 支付异常的订单处理

      在实际测试中,存在用户下单并成功支付后,管理后台有一定概率无法收到微信的回调。此时会造成用户侧会显示已经支付成功,然后商户侧(管理后台)则会显示订单一直处于支付中的情况。
      内部沟通后我们决定针对用户侧支付成功,而商户侧未获取到微信回调的订单,在限制次数(或规定时间)内通过定时任务的形式重复申请获取回调。因为此类情况是小概率事件,若超过上述条件后仍未收到微信回调,则该笔订单进入异常订单列表并通过站内信进行提醒。通过人工进行处理。

    2.3 常见锁定库存的2种方式

      常见的锁定库存的方式一般是2种。①生成订单后即锁定对应库存,若在对应时间内未成功支付即重新释放库存②生成订单时不进行库存锁定,只有成功支付后才会锁定库存。
      由于此次小程序体量较小,业务方担心被友商恶意锁单,故采用了第②种“支付成功后才锁定库存”的方式。但是第②种方式对于销售量较好的商品容易产生支付失败的场景。
      例如当某商品库存为“1”,此时多名用户同时下单进行支付,可能有多个用户都能支付成功,但只有最先收到微信支付回调的用户账号能够锁定剩余库存。而其他用户成功支付的订单将会因为库存不足而自动进入退款流程。
      在这种情况下,系统需要针对此类情况造成的退款,在退款短信提醒中通过文字的形式进行解释说明。

    2.4 退款期间订单状态的处理

      用户侧申请退款后,订单将变为“退款中”状态。此时该笔订单对应的消费码无法正常使用(核销)。若用户在退款期间需要使用消费码,点击订单详情页的“取消退款”按钮即可正常使用。
      当申请退款的订单在管理后台审核时选择拒绝退款,需要对应操作人填写(选填)拒绝原因。退款失败后订单会变为“待使用”状态,用户能够继续使用或再次退款。
      在这边需要注意的是,如果用户“退款失败”后,需要在小程序端展示用户的退款记录。

    2.5 商品的日库存、总库存、日价格、固定价格

      在商城中商品分为2大类。①商品每一天的库存、价格都是独立存在的,互不影响(如酒店房间、旅游线路等)②一段时间内的库存都是一起的总库存(例如礼品、门票等),但是价格能够针对每日进行分别设置。对于这两种不同的商品,在库存和价格的设置上也会有一点区别。
      为了能够更好的管理商品每日的价格、每日的库存(如需要),我们通过日历视图的形式对商品价格、库存、取消规则等进行管理。下述简称为“日序表”。

    2.5.1 日库存商品处理方式
      对于需要设置每日库存的商品,我们在创建商品时需要设置一个标准库存标准价格默认取消规则,用于初始化日序表中的相关字段。
      需要注意的是,考虑到商品创建完成后,商品的每日的库存信息、每日的价格、每日的取消规则会在日序表中进行修改。因此在商品创建完成后在商品详情页中对应字段将变为不可修改状态。管理员只能在日序表中对相关信息进行修改/批量修改。

    2.5.2 总库存商品处理方式
      对于不需要设置每日库存的商品,在创建商品时设置的库存即为商品的总库存,并支持在商品详情页中进行修改。标准价格、默认取消规则字段在商品创建成功不允许从商品详情页中进行修改。只能从日序表中对价格、取消规则等信息进行修改/批量修改。

    2.6 消费码的核销和过期

    2.6.1 消费码的核销
      消费码是用户在小程序端购买商品后获得的相关使用凭证。用户持消费码至线下使用场所使用时需要对消费码进行核销后方能正常使用。
      在核销时遇到的主要问题是核销后自动进行的一系列操作。
      比如核销后给自动给推广员发放奖励金、优惠券等权益。因为考虑到实际操作中可能会存在错误核销、恶意核销、核销后用户要求退票等场景,所以在消费码核销后需要能够在当日24点前对订单进行撤销核销的操作。
      出于用户体验考虑,为了避免出现订单撤销核销后系统发放的奖励金、优惠券等权益失效的情况,我们通过将发放相关权益的时间调整至核销当日的24点之后进行发放的形式来规避上述因为撤销核销操作产生的一系列问题。(24点后无法撤销当日核销的订单)

    2.6.2 消费码的过期
      在系统中每种商品的订单是有时效性的,当超过指定时间后对应订单的消费码即会变为“已过期”状态。为了商户的实际利益和用户体验,在商户允许的情况下,已过期状态下的订单在后台仍然能够正常核销,但是在核销时会通过状态强标识和二次确认的形式来提醒操作人员该笔订单是已过期的订单,是否要继续核销。
      关于过期订单核销后相关权益(优惠券、奖励金等)是否正常发放给该笔订单的推广员,需要根据业务部门实际情况来规划。由于本次做的小程序线下门店处于推广阶段,所以过期订单核销后相关权益仍然会正常发给推广员。

    2.7 提现失败的异常情况

      在商城中会通过一些活动来给用户发放奖励金。当用户满足一定条件后能够对奖励金进行提现。在微信小程序中我们通过微信商户的转账来实现提现相关的功能。但是在实际操作中偶尔会出现提现失败的情况,主要有以下2种情况:

    2.7.1 平台账户金额不足
      如果商户微信商户账号中资金提现后留存资金不足,当用户提现时就会出现提现失败的情况。出于用户体验和企业形象考虑,“平台账户金额不足”造成的提现失败状态不会同步至用户端,而是在管理后台通过站内信或负责人手机短信提醒的形式进行通知。管理员在异常订单模块中能够查看到“提现失败订单”,能够针对金额不足的订单进行“再次提现”操作。
      需要注意的是,管理员在后台进行的“再次提现”操作,用户端都是无感知的。

    2.7.2 提现接口报错
      当提现(转账)接口报错时,最直观的展示形式即为支付中心中的转账订单状态一直显示为“转账中/未确认”,从订单创建日期算起,每天都会有定时器去执行5次提现(转账)功能。当订单超过72小时(3天)仍处于“转账中/未确认”的状态,对应订单将会进入异常订单列表。并通过站内信或负责人手机短信提醒的形式进行通知。管理员在异常订单列表中能够对此订单进行手动操作。

    2.8 登录的时效性

      用户登录后多久失效,需要重新登录?这个其实是很容易被忽略的小问题,需要根据每个产品自身的具体情况来具体分析。在这边只是提一下,在设计功能时如果有特殊需要的话可以单独提出来~

    3. 总结

      以上就是在商城项目中遇到的一些问题,这些问题可能比较基础,但是都是我在实际情况中遇到的没有考虑全面,或者是在进入开发过程中后仍有改动的点。希望对大家有用~

    相关资料:微信小程序支付业务流程图:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3

    相关文章

      网友评论

        本文标题:商城类项目中遇到的一些问题

        本文链接:https://www.haomeiwen.com/subject/gemwyhtx.html