【优化】订单金额为零时的支付流程

admin 发布于 BUG提交 2021-12-30 01:38:18

ShopWind多商户系统在支付订单时,如果订单金额为零,或使用积分、其他优惠方式抵扣货款后,使订单金额为零时,优化为以下支付流程:
1.不显示除余额支付外的其他在线支付方式
2.使用余额支付时不再要求输入支付密码,点“确认支付”后直接支付完成
3.后台不再验证支付密码

修改代码如下:

1、打开apiserver\controllers\CashierController.php 文件, 在public function actionPay()函数中增加判断条件 && $orderInfo['amount'] > 0

// 如果是余额支付,验证支付密码
if (in_array(strtolower($post->payment_code), array('deposit'))) {
  if (!DepositAccountModel::checkAccountPassword($post->password, Yii::$app->user->id)) {
    return $respond->output(Respond::PARAMS_INVALID, Language::get('password_error')),
  }
}

修改为

// 如果是余额支付,且支付金额大于零,验证支付密码
if (in_array(strtolower($post->payment_code), array('deposit')) && $orderInfo['amount'] > 0) {
  if (!DepositAccountModel::checkAccountPassword($post->password, Yii::$app->user->id)) {
    return $respond->output(Respond::PARAMS_INVALID, Language::get('password_error')),
  }
}

注意:修改好代码之后,将这段(if)代码块往上移动一个位置(以避免找不到$orderInfo变量的问题)

2、打开shopwind移动端\pages\cashier\pay.vue文件, 在submit: function()函数中增加判断条件 && this.orderInfo.amount > 0

submit: function() {
  if (this.payment_code == 'deposit') {
    return this.$refs.popup.open()
  }
  model.submit(this)
},

修改为

submit: function() {
  if (this.payment_code == 'deposit' && this.orderInfo.amount > 0) {
    return this.$refs.popup.open()
  }
  model.submit(this)
},
最后编辑于 2023-03-15 23:05:43
2 684

回复(2)

沙发
第一处的位置也需要修改到71行之后,否则没有$orderinfo
admin回复于 2022-01-07 16:13:40
是的,那2个if代码块顺序调换一下
发布于 2022-01-07 02:05:56
回复
板凳
dawnpeak 发布于 2022-01-07 02:05:56
第一处的位置也需要修改到71行之后,否则没有$orderinfo
是的,那2个if代码块顺序调换一下
发布于 2022-01-07 16:13:40
回复
Re :

admin 这家伙什么都没留下

  • 回答

    97
  • 发布

    86
  • 经验

    6430

内容精选

联系我们

  • 微信官网

    关注公众号

    系统更新,推送提醒
  • 开发交流群

    技术交流Q群

    安装使用,开发交流

垂询热线:18978189162