志汇点餐外卖小程序商家后台不能退款也无法拒绝退款的问题解决办法

有商家客户反映,在使用志汇点餐外卖小程序时,商家管理后台无法对用户发起的退款申请进行“通过退款”和“拒绝退款”操作,这个情况有点匪夷所思,毕竟我们用的是9.2版本,按道理不应该存在这么低级的BUG吧?

但是既然商家反映了,那就要找问题,根据过去的经验,我们知道,有关支付、退款等一系列操作的代码都在“wxapp.php”这个文件。

//通过退款
public function doPageTg() {
global $_W, $_GPC;
$id = $_GPC[‘order_id’];
include_once IA_ROOT . ‘/addons/zh_dianc/cert/WxPay.Api.php’;
load()->model(‘account’);
load()->func(‘communication’);
$WxPayApi = new WxPayApi();
$input = new WxPayRefund();
//$path_cert = IA_ROOT . ‘/addons/zh_dianc/cert/apiclient_cert.pem’;
// $path_key = IA_ROOT . ‘/addons/zh_dianc/cert/apiclient_key.pem’;
$path_cert = IA_ROOT . “/addons/zh_dianc/cert/” . ‘apiclient_cert_’ . $_W[‘uniacid’] . ‘.pem’;
$path_key = IA_ROOT . “/addons/zh_dianc/cert/” . ‘apiclient_key_’ . $_W[‘uniacid’] . ‘.pem’;
$account_info = $_W[‘account’];
$refund_order = pdo_get(‘wpdc_order’, array(‘id’ => $id));
$res = pdo_get(‘wpdc_system’, array(‘uniacid’ => $_W[‘uniacid’]));
$appid = $res[‘appid’];
$key = $res[‘wxkey’];
$mchid = $res[‘mchid’];
$out_trade_no = $refund_order[‘sh_ordernum’]; //商户订单号
$fee = $refund_order[‘money’] * 100;
//$refundid = $refund_order[‘transid’];
//$refundid=’4200000022201710178579320894′;
$input->SetAppid($appid);
$input->SetMch_id($mchid);
$input->SetOp_user_id($mchid);
$input->SetRefund_fee($fee);
$input->SetTotal_fee($fee);
// $input->SetTransaction_id($refundid);
$input->SetOut_refund_no($id);
$input->SetOut_trade_no($out_trade_no);
$result = $WxPayApi->refund($input, 6, $path_cert, $path_key, $key);
// var_dump($result);die;
if ($result[‘result_code’] == ‘SUCCESS’) { //退款成功
pdo_update(‘wpdc_order’, array(‘state’ => 8), array(‘id’ => $id));
echo ‘1’;
} else {
echo ‘2’;
}
}

OK,果然不错,找到代码,大致看一下,完全找不到什么问题,没办法,我们找到微信支付的官方API文档,对照找一下原因吧:

好像会返回错误提示,那么我们需要输出一下$result 看看具体微信提示的是什么?

咦,居然提示账户余额不足,不可能啊,这个订单也才是一个小时之前的订单,微信支付后台也不会这么快提现到账啊,没办法,去登录微信支付后台看看到底什么情况吧。

好吧,通过这么一看,我们明白什么原因了:

[reply]
客户支付了16元,但是微信支付商户后台实际到账只有15.9元,因为有0.1元是交易手续费被扣除掉了,但是用户前端申请退款的时候,还是要退给用户16元的,但是你账户只有15.9元,这不就是余额不足了吗!

由此可见,微信支付的产品经理要背锅,这个逻辑很明显不通嘛!没办法,只能手动给微信支付商户平台充值0.1元,然后再返到小程序商家后台那边给用户完成退款操作,这下就操作完成了,同时,微信也把之前扣掉的0.1元手续费退了回来。


[/reply]

退款这一环节,客户没问题,商家没问题,小程序公司没有问题,我们代码程序员也没有问题,微信支付的一个大坑,最终这个问题要算在谁头上呢?

好吧,跳过这个话题,再看下,商家客户还反应,小程序的拒绝退款这个功能也不能使用。

老规矩,我们还是先找代码:

//拒绝退款
public function doPageJj() {
global $_W, $_GPC;
$id = $_GPC[‘order_id’];
$res = pdo_update(‘wpdc_order’, array(‘state’ => 9), array(‘id’ => $_GPC[‘id’]));
if ($res) {
echo ‘1’;
} else {
echo ‘2’;
}
}

第一眼看上去,咦,代码没毛病啊,咋回事?

第二眼看上去,代码没毛病啊,咋回事?

第三眼看上去,咋回事?

???

找到问题了!吗的智障,我要杀了写这段代码的程序员。

End.

人已赞赏
二次开发雕技术

小程序支付没有回调:志汇、禾匠小程序微擎微赞通病

2018-6-23 2:34:23

二次开发雕技术

智慧餐饮(志汇点餐)小程序下单后商家收不到通知提醒的问题

2018-8-28 17:45:11

免责声明本文中提到的资源均来自于互联网,仅供个人学习交流,若您喜欢本文可附上原文链接随意转载。
版权人申诉:我要申诉
17 条回复 A文章作者 M管理员
  1. 厉害了,我正好照这个解决方案。

  2. 回复才能看一些内容

  3. 碰到这个问题,看看~

  4. 回复才能看一些内容

  5. 这个困惑我好久了

  6. 正有这个困惑

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索