美文网首页微信小程序智能助手
小程序微信支付服务端(PHP)

小程序微信支付服务端(PHP)

作者: 无聊的电风扇 | 来源:发表于2019-04-18 10:56 被阅读0次

    值得注意的是,小程序支付在curl请求时会验证ssl,可手动设置配置中对应证书路径,或开发阶段先跳过验证

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    
    //小程序支付
     function SmallPay(){
             header("Content-type: text/html; charset=utf-8");
    
            
             $money ="0.01" ;  // 
    
            $orderCode = 'abcd1234';   //  订单号
    //        随机字符串
            $str=md5(time());
            $nonce = str_shuffle($str);
            $appid = '小程序appid';//注意是小程序的appid  
            $key = "123123";//商户平台-》API安全-》设置秘钥  
            $mch_id = $this->config["mch_id"];  
            $pay['appid'] = $appid;
            $pay['body'] = '酒店预订';               //商品描述
            $pay['mch_id'] = $this->config["mch_id"];            //商户号
            $pay['nonce_str'] = $nonce;        //随机字符串
            $pay['notify_url'] = 'https://www.github.com';//支付成功回调
            $pay['openid'] = $openid;
            $pay['out_trade_no'] = $orderCode;       //订单号
            $pay['spbill_create_ip'] = '服务端IP'; // 终端IP
            $pay['total_fee'] = 100*$money; //支付金额
            $pay['trade_type'] = 'JSAPI';    //交易类型
    
    //        组建签名
            $stringA="appid=".$pay['appid']."&body=".$pay['body']."&mch_id=".$pay['mch_id']."&nonce_str=".$pay['nonce_str']."&notify_url=".$pay['notify_url']."&openid=". $pay['openid']."&out_trade_no=".$pay['out_trade_no']."&spbill_create_ip=". $pay['spbill_create_ip']."&total_fee=".$pay['total_fee']."&trade_type=".$pay['trade_type'];
            $stringSignTemp=$stringA."&key=".$key; //注:key为商户平台设置的密钥key(这个还需要再确认一下)
            $sign= strtoupper(md5($stringSignTemp)); //注:MD5签名方式
            $pay['sign'] = $sign;            //签名
    //        统一下单请求
            $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
            $data = $this->arrayToXml($pay);
    //        return $data;
            $res = $this->wxpost($url,$data);
    //        return $res;  //返回统一下单结果
    //        对 统一下单返回得参数进行处理
            $pay_arr = $this->xmlstr_to_array($res);  //这里是数组
    
    //         if ($pay_arr['return_code'] == 'FAIL' || $pay_arr['result_code'] == 'FAIL')
    //         {
    //             echo  json_encode($res);exit;
    // //            return $res;
    //         }
    //        调起支付数据签名字段
            $timeStamp = time();
            $nonce_pay = str_shuffle($str);
            $package = $pay_arr['prepay_id'];
            $signType = "MD5";
            $stringPay = "appId=".$appid."&nonceStr=".$nonce_pay."&package=prepay_id=".$package."&signType=".$signType."&timeStamp=".$timeStamp."&key=".$key;
            $paySign = strtoupper(md5($stringPay));
            $rpay['timeStamp'] = (string)$timeStamp;
            $rpay['nonceStr'] = $nonce_pay;
            $rpay['package'] = "prepay_id=".$package;
            $rpay['signType'] = $signType;
            $rpay['paySign'] = $paySign;
            $rpay['orders'] =  $orderCode ;  //订单流水号id    $order
    
            echo   json_encode($rpay);
    
    
        }
    
    function wxpost($url,$post)
        {
            //初始化
            $curl = curl_init();
            $header[] = "Content-type: text/xml";//定义content-type为xml
            //设置抓取的url
            curl_setopt($curl, CURLOPT_URL, $url);
            //设置头文件的信息作为数据流输出
    //        curl_setopt($curl, CURLOPT_HEADER, 1);
            //定义请求类型
            curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
            //设置获取的信息以文件流的形式返回,而不是直接输出。
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            //设置post方式提交
            curl_setopt($curl, CURLOPT_POST, 1);
            //设置post数据
            $post_data = $post;
            curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
            //执行命令
            $data = curl_exec($curl);
            //关闭URL请求
            //显示获得的数据
            if ($data)
            {
                curl_close($curl);
                return $data;
            }else{
                $res = curl_error($curl);
                curl_close($curl);
                return $res;
            }
        }
    

    相关文章

      网友评论

        本文标题:小程序微信支付服务端(PHP)

        本文链接:https://www.haomeiwen.com/subject/nudzwqtx.html