TP5 微信付款支付调用微信接口

官方文档

https://pay.weixin.qq.com/wiki/doc/api/index.html

 

 

//请求微信的预支付
                // 微信 id
                $appid= '';
                // 商家的key
                $key = '';
                $mch_id= '';// 商户号 mch_id 是 String(32) 1230000109 微信支付分配的商户号
                $device_info= '';
                $body='';
                // 随机码
                $nonce_str=rand(100000,999999);
                
                $out_trade_no="订单编号";
                // 标价金额
                $total_fee='80.00';
                // 终端IP    
                $spbill_create_ip="127.0.0.1";
                // 路由地址  前面要加项目地址
                $notify_url = "api/order/wxhd";
                
                // 交易类型
                $trade_type = 'JSAPI';
                $stringA="appid=".$appid."&body=".$body."&device_info=".$device_info."&mch_id=".$mch_id."&nonce_str=".$nonce_str;
                // MD5加密
                $strSignTmp=$stringA."".$key; //注:key为商户平台设置的密钥key
                $sign=strtoupper(MD5($strSignTmp));//注:MD5签名方式
                
                $post_data = "<xml> 
                      <appid>".$appid."</appid> 
                      <body>".$body."</body> 
                      <mch_id>".$mch_id."</mch_id> 
                      <nonce_str>".$nonce_str."</nonce_str> 
                      <notify_url>".$notify_url."</notify_url> 
                      <out_trade_no>".$out_trade_no."</out_trade_no> 
                      <spbill_create_ip>".$spbill_create_ip."</spbill_create_ip> 
                      <total_fee>".$total_fee."</total_fee> 
                      <trade_type>".$trade_type."</trade_type> 
                      <sign>".$sign."</sign> 
                     </xml>";//拼接成XML 格式 
                
                // <scene_info>$scene_info</scene_info> 
                // 微信地址
                $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
                $dataxml=$this->posturl($url,$post_data);
                $reruxml = (array)simplexml_load_string($dataxml, 'SimpleXMLElement', LIBXML_NOCDATA); 
                
                if($reruxml['return_code']=='SUCCESS'&&$reruxml['result_code']=='SUCCESS' ){
                    //下面是前台需要的数据-----
                        $data["time"]=time();
                        $data["nonceStr"]=$nonce_str;
                        $data["package"]=$reruxml['prepay_id']; 
                        $data["signType"]='MD5';
                        $data["paySign"]=$sign;
                        return json(["data"=>$data]);
                }else{
                    $json['info'] ='参数错误';
                    $json['msg'] ='0';
                }
                

上面是主要的发送代码 里面用到了一个方法curl 会话 就是普通的post会话

    // post请求的数据
    function posturl($url,$data){
            $data  = json_encode($data);    
            $headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($curl);
            curl_close($curl);
            return json_decode($output,true);
    }

当代码请求成功后 会进入到我们的回调方法里面

    //回调信息
    public function wxhd(){
        
        //允许从外部加载XML实体(防止XML注入攻击)
        libxml_disable_entity_loader(true);  
        // 用于接收所有的数据
        $data=file_get_contents("php://input");
        
        $postObj = (array)simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);  
        //此处 用于变更订单的支付状态 或者其他操作
        
        // 下面更新成功的变量(更新数据表) 最后一个 更新字段后
        //此处用于返回给微信支付通知,我们也做出相应的修改
        if(){
            echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
        }    
        
    }
     

 

上一篇:PHP对接语音验证码接口代码示例


下一篇:SMT贴片加工防静电基础知识