6***@qq.com
6***@qq.com
  • 发布:2024-02-02 17:18
  • 更新:2024-02-20 10:12
  • 阅读:144

#插件讨论# 【 uni-pay - DCloud前端团队 】支付逻辑调整建议

分类:uni-app
关联插件: uni-pay

目前调用前端支付组件,在逻辑上感觉可以再调整下,希望在唤起支付窗口前加一个判断事件的函数。

  • 目前的逻辑是,调用this.$refs.pay.open方法,传递必要的信息后,就可以直接发起支付进行付款;
  • 但是有个问题,就是传递的付款金额是可能会被伪造的,目前调用这个组件的时候,只能在支付成功后的回调函数中去校验,付款的金额是否与数据库中业务订单金额一致;如果不一致,那么只能发起退款,再修改一些订单状态;
  • 这个支付的流程用起来很不方便,如果只能在支付后的回调函数中校验金额,发生异常后只能做退款操作和修改一系列信息的操作,不太友好;
  • 希望在唤起支付窗口前,增加一个额外的事件函数,用于校验支付的金额是否准确,如果这个时候校验就发现了问题,那就可以中止这次交易,不用唤起支付弹窗,直接拒绝发起支付;而不是在用户实际支付后再去退款操作;
  • 我尝试在create事件中去判断,但是会先弹出支付窗口,就算判断了金额不对,用户也可以在此时扫二维码等方式进行支付;无法在支付前就拦截;而且关闭支付弹窗的方法也不是通用,需要判断各端,传入字段;
  • 我也知道在使用this.$refs.pay.open方法前,通过查询数据库对传入的金额进行校验;但是我考虑的情况是,如果自己的校验方法被跳过,别人直接通过this.$refs.pay.open传参发起支付,那之前的校验也没用;如果在已经传入参数的情况下,发起实际支付前进行校验,各个方面都会比只在支付回调中校验更好;主要是参数校验后再传递进this.$refs.pay.open的过程中也有被篡改风险;
  • 就希望在传入金额后,支付弹窗前,可以有个事件对金额进行校验,搭配支付回调的二次校验,可以避免很多不必要的操作;
2024-02-02 17:18 负责人:无 分享
已邀请:
困难总比办法多

困难总比办法多

别人为什么可以直接通过this.$refs.pay.open传参发起支付??

  • 6***@qq.com (作者)

    拦截到你的请求,修改你的参数不是可以?

    2024-04-09 10:39

要回复问题请先登录注册