zoukankan      html  css  js  c++  java
  • 微信支付多次执行回调——php

    因为微信在后台通知交互时,如果微信收到商户的应答不符合规范或超时,微信会判定本次通知失败,重新发送通知,直到成功为止(在通知一直不成功的情况下,微信总共会发起10次通知,每次通知时间距离最近一次的间隔为15/15/30/180/1800/1800/1800/1800/3600,单位:秒),但微信不保证通知最终一定能成功。

    我是参考了这篇文章https://www.cnblogs.com/zmdComeOn/archive/2019/07/25/11244656.html后才发现需要返回的。

    之前直接用的是微信支付php版本的demo,因为业务需要改了一下代码,最后在测试的时候发现回调中数据总是会被多次写入数据库,后来发现是我没有给微信return支付成功的信息

    public function NotifyProcess($objData, $config, &$msg)
        {
            $data = $objData->GetValues();
            //TODO 1、进行参数校验
            if(!array_key_exists("return_code", $data) 
                ||(array_key_exists("return_code", $data) && $data['return_code'] != "SUCCESS")) {
                //TODO失败,不是支付成功的通知
                //如果有需要可以做失败时候的一些清理处理,并且做一些监控
                $msg = "异常异常";
                return false;
            }
            if(!array_key_exists("transaction_id", $data)){
                $msg = "输入参数不正确";
                return false;
            }
    
            //TODO 2、进行签名验证
            try {
                $checkResult = $objData->CheckSign($config);
                if($checkResult == false){
                    //签名错误
                    Log::ERROR("签名错误...");
                    return false;
                }
            } catch(Exception $e) {
                Log::ERROR(json_encode($e));
            }
    
            //TODO 3、处理业务逻辑
            Log::DEBUG("call back:" . json_encode($data));
    
            // 释放结果集
            mysqli_free_result($result);
            //查询订单,判断订单真实性
            if(!$this->Queryorder($data["transaction_id"])){
                $msg = "订单查询失败";
                return false;
            }
            return true;
        }

    最后的return true不能少。

    这是这次我遇上的问题,类似的问题应该也是可以看看上面的链接

  • 相关阅读:
    python中os模块和sys模块的常见用法
    Python 十进制转换为二进制 高位补零
    Invalid prop: custom validator check failed for prop "pagerCount"的报错
    Centos7 安装使用virtualenvwrapper
    如何使用CORS解决跨域问题
    内置模块
    文件操作的相关
    小数据池的概念
    set()集合的概念与一般操作
    有关于dict(字典)的特性与操作方法
  • 原文地址:https://www.cnblogs.com/zhangpooo/p/12525736.html
Copyright © 2011-2022 走看看