微信小程序> 微信支付接口支付成功的回调超详细Demo

微信支付接口支付成功的回调超详细Demo

浏览量:629 时间: 来源:梦逸灵箭

如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人。谢谢大家!❤

如果解决不了,可以在文末进群交流。

写微信支付成功回调的代码,尤其要注意官方文档的一句话:

如果不注意这里,支付成功后微信会一直对这个地址进行调用,更新订单的对数据库进行操作,也会一直存在更新:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_7&index=7.

这其实不是坑的主要所在,问题是这个文档,我真的不知道该如何吐槽。一次偶然的意外才看到。这个文档说明。


好了,其他的没有什么需要特别注意的,直接上代码:

?php       //获取接口数据,如果$_REQUEST拿不到数据,则使用file_get_contents函数获取    $post = $_REQUEST;    if ($post == null) {        $post = file_get_contents("php://input");    }    if ($post == null) {        $post = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';    }    if (empty($post) || $post == null || $post == '') {        //阻止微信接口反复回调接口  文档地址 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_7&index=7,下面这句非常重要!!!        $str='xmlreturn_code![CDATA[SUCCESS]]/return_codereturn_msg![CDATA[OK]]/return_msg/xml';          echo $str;        exit('Notify 非法回调');    }    /*****************微信回调返回数据样例*******************     $post = 'xml        return_code![CDATA[SUCCESS]]/return_code        return_msg![CDATA[OK]]/return_msg        appid![CDATA[wx2421b1c4370ec43b]]/appid        mch_id![CDATA[10000100]]/mch_id        nonce_str![CDATA[IITRi8Iabbblz1Jc]]/nonce_str        sign![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]/sign        result_code![CDATA[SUCCESS]]/result_code        prepay_id![CDATA[wx201411101639507cbf6ffd8b0779950874]]/prepay_id        trade_type![CDATA[APP]]/trade_type        /xml';     *************************微信回调返回*****************/    libxml_disable_entity_loader(true); //禁止引用外部xml实体    $xml = simplexml_load_string($post, 'SimpleXMLElement', LIBXML_NOCDATA);//XML转数组        $post_data = (array)$xml;        /** 解析出来的数组        *Array        * (        * [appid] = wx1c870c0145984d30        * [bank_type] = CFT        * [cash_fee] = 100        * [fee_type] = CNY        * [is_subscribe] = N        * [mch_id] = 1297210301        * [nonce_str] = gkq1x5fxejqo5lz5eua50gg4c4la18vy        * [openid] = olSGW5BBvfep9UhlU40VFIQlcvZ0        * [out_trade_no] = fangchan_588796        * [result_code] = SUCCESS        * [return_code] = SUCCESS        * [sign] = F6890323B0A6A3765510D152D9420EAC        * [time_end] = 20180626170839        * [total_fee] = 100        * [trade_type] = JSAPI        * [transaction_id] = 4200000134201806265483331660        * )    **/    //订单号    $out_trade_no = isset($post_data['out_trade_no']) && !empty($post_data['out_trade_no']) ? $post_data['out_trade_no'] : 0;    //查询订单信息    $order_info = DB::fetch_first("SELECT * FROM order WHERE order_no = '" .$out_trade_no."'");    if(count($order_info)  0){        //查询平台信息        $platform_info = DB::fetch_first("SELECT * FROM pingtaiInfo WHERE `open_pid`= {$order_info['part1']}");        //平台支付key        $wxpay_key = $platform_info['zhifu_key'];        //接收到的签名        $post_sign = $post_data['sign'];        unset($post_data['sign']);        //重新生成签名        $newSign = MakeSign($post_data,$wxpay_key);        //签名统一,则更新数据库        if($post_sign == $newSign){            $updateData = array();              $updateData['pay_time'] = TIMESTAMP; //支付时间            $updateData['order_status'] = 2; //订单状态            //更新order数据库            //Do what you want...        }    }    //阻止微信接口反复回调接口  文档地址 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_7&index=7,下面这句非常重要!!!    $str='xmlreturn_code![CDATA[SUCCESS]]/return_codereturn_msg![CDATA[OK]]/return_msg/xml';      echo $str;    function MakeSign($params,$key){        //签名步骤一:按字典序排序数组参数        ksort($params);        $string = ToUrlParams($params);  //参数进行拼接key=value&k=v        //签名步骤二:在string后加入KEY        $string = $string . "&key=".$key;        //签名步骤三:MD5加密        $string = md5($string);        //签名步骤四:所有字符转为大写        $result = strtoupper($string);        return $result;    }    function ToUrlParams( $params ){        $string = '';        if( !empty($params) ){            $array = array();            foreach( $params as $key = $value ){                $array[] = $key.'='.$value;            }            $string = implode("&",$array);        }        return $string;    }

 

废话不多说了,直接上代码,不懂地方可留言,或者进微信群内交流。群二维码如果过期,请加我微信:mengyilingjian.

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎