php 微信商户发红包,退款,订单查询,企业付款到零钱

来源:互联网 发布:浙江大学网上缴网络费 编辑:程序博客网 时间:2024/05/01 11:37
//注意 需要修改 商户的openid 商户号 商户的支付密钥第222行 商户证书第326到330行 证书需要登陆微信商户后台下载然后放到对应的目录下面header("Content-type: text/html; charset=utf-8"); //引用根目录的连接数据库文件$filename = dirname($_SERVER['DOCUMENT_ROOT']);require_once $filename."/fun/config.php";//链接数据库文件$db = new PDO($dsn, $user, $pwd);$db->exec("SET CHARACTER SET UTF8");     /**    * 现金红包接口    * 2015-11-23    *作者博客 http://blog.csdn.net/yao978318542    *     * @return    */ $type=$_GET['type'];if($type==1){//红包$arr['openid']='888888888888';            $arr['hbname']="提现申请";            $arr['body']="您的提现申请已经成功";            $arr['fee']=1;$comm = new Common_util_pub();          $re = $comm->sendhongbaoto($arr);var_dump($re);}if($type==4){//企业付款到零钱$arr['mch_id']=$py['mchid'];        $arr['wxappid']=$py['appid'];        $arr['openid']=$user['openid'];        $arr['partner_trade_no']=get_order();//订单号        $arr['fee']=1;$comm = new Common_util_pub();          $re = $comm->sendhongbaoto($arr);var_dump($re);}if($type==2){//退款//查询用户的OPENID                $res = $db->query("SELECT * FROM ai9me_sq_order WHERE order_sn = '".$_GET['ordesid']."'");                $order = $res->fetchall();                //print_r($result_arr);;die();                if($order[0]['id']){                //查询订单金额                $arr["out_trade_no"]=$order[0]["order_sn"];                $arr["out_refund_no"]=date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8)."22";                $arr['total_fee']=$order[0]['price'];                $arr['refund_fee']=$_GET['tuiprice'];                 $comm = new Common_util_pub();                          $re = $comm->tuikuan($arr);                if($re['result_code']=='SUCCESS'){                    mysql_query("UPDATE ai9me_sq_order SET tui_ordersid=".$arr["out_refund_no"].",tui_price=".$_GET['tuiprice']." ,tui_type ='2' WHERE  order_sn = '".$_GET['ordesid']."'");                    echo "退款成功";                    die();                }else{                    echo $re['err_code_des'];die();                    }                }else{                    echo "订单号错误";die();                    }    }if($type==3){  $comm = new Common_util_pub();          $re = $comm->duizhang();var_dump($re);     }class Common_util_pub{    /*** hbname 红包名称  fee 红包金额 /元  body 内容  openid 微信用户id* @param undefined $arr* * @return*/public function sendhongbaoto($arr){//$comm = new Common_util_pub();$data['mch_id'] = '88888888';$data['mch_billno'] = '88888888'.date("Ymd",time()).date("His",time()).rand(1111,9999);$data['nonce_str'] = self::createNoncestr();$data['re_openid'] = $arr['openid'];$data['wxappid'] = 'wxaf3aa765a46cf971';$data['nick_name'] = $arr['hbname'];$data['send_name'] = $arr['hbname'];$data['total_amount'] = $arr['fee']*100;$data['min_value'] = $arr['fee']*100;$data['max_value'] = $arr['fee']*100;$data['total_num'] = 1;$data['client_ip'] = '115.28.83.165';$data['act_name'] = '测试活动';$data['remark'] = '备注一下';$data['wishing'] = $arr['body'];if(!$data['re_openid']) {        $rearr['return_msg']='缺少用户openid';     return $rearr;}$data['sign'] = self::getSign($data);//签名$xml = self::arrayToXml($data);$url ="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";$re = self::wxHttpsRequestPem($xml,$url);$rearr = self::xmlToArray($re);return  $rearr;}public function qiye($arr){$comm = new Common_util_pub();$data['mch_appid'] = $arr['wxappid'];$data['mchid'] = $arr['mch_id'];$data['nonce_str'] = self::createNoncestr();$data["partner_trade_no"]=$arr['partner_trade_no'];$data['openid'] = $arr['openid'];$data['check_name'] ='NO_CHECK';$data['re_user_name']="暧昧永远都不是爱";$data['amount'] = $arr['fee']*100;$data['desc'] = '积分购买';$data['spbill_create_ip']='182.254.129.143';if(!$data['openid']) {        $rearr['return_msg']='缺少用户openid';     return $rearr;}$data['sign'] = self::getSign($data);//签名$xml = self::arrayToXml($data);$url ="https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";$re = self::wxHttpsRequestPem($xml,$url);$rearr = self::xmlToArray($re);//print_r($data);// print_r($rearr);return  $rearr;}public function tuikuan($arr){$data['mch_id'] = '88888888';//s商户号id$data['nonce_str'] = self::createNoncestr();//随机字符串$data['appid'] = 'wxaf3aa765a46cf971';//公众号id$data['out_trade_no']=$arr['out_trade_no'];//订单号$data['out_refund_no']=$arr['out_refund_no'];//退款订单号$data['total_fee'] = $arr['total_fee']*100;//总金额单位为分$data['refund_fee'] = $arr['refund_fee']*100;//退款金额单位为分$data['op_user_id'] = 1218828001;//操作员账号默认为商户号$data['sign'] = self::getSign($data);//签名$xml = self::arrayToXml($data);$url ="https://api.mch.weixin.qq.com/secapi/pay/refund";$re = self::wxHttpsRequestPem($xml,$url);$rearr = self::xmlToArray($re);return  $rearr;    }     public function duizhang(){$data['mch_id'] = '88888888';//s商户号id$data['nonce_str'] = self::createNoncestr();//随机字符串$data['appid'] = 'wx49b9da97a375b851';//公众号id$data['bill_type'] = "ALL";//账单类型ALL,返回当日所有订单信息,默认值$data['bill_date'] = 20151025;//打印那天的订单$data['sign'] = self::getSign($data);//签名$xml = self::arrayToXml($data);//print_r($xml);die();$url ="https://api.mch.weixin.qq.com/pay/downloadbill";$re = self::postXmlCurl($xml,$url);$rearr = self::xmlToArray($re);return  $rearr;    }          function trimString($value)    {        $ret = null;        if (null != $value)         {            $ret = $value;            if (strlen($ret) == 0)             {                $ret = null;            }        }        return $ret;    }    /**     *  作用:产生随机字符串,不长于32位     */    public function createNoncestr( $length = 32 )     {        $chars = "abcdefghijklmnopqrstuvwxyz0123456789";          $str ="";        for ( $i = 0; $i < $length; $i++ )  {              $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);          }          return $str;    }    /**     *  作用:格式化参数,签名过程需要使用     */    function formatBizQueryParaMap($paraMap, $urlencode)    {        $buff = "";        ksort($paraMap);        foreach ($paraMap as $k => $v)        {            if($urlencode)            {               $v = urlencode($v);            }            //$buff .= strtolower($k) . "=" . $v . "&";            $buff .= $k . "=" . $v . "&";        }        $reqPar;        if (strlen($buff) > 0)         {            $reqPar = substr($buff, 0, strlen($buff)-1);        }        return $reqPar;    }    /**     *  作用:生成签名     */    public function getSign($Obj)    {       foreach ($Obj as $k => $v)        {            $Parameters[$k] = $v;        }        //签名步骤一:按字典序排序参数        ksort($Parameters);        $String = $this->formatBizQueryParaMap($Parameters, false);        //echo '【string1】'.$String.'</br>';        //签名步骤二:在string后加入KEY        //$String = $String."&key=".WxPayConf_pub::KEY();        //同创蓝天        //$String = $String."&key=b9ed35e42a2f68a763eceea1a67a0f47";        //云微客        $String = $String."&key=hongzhoukeji20150408330681000294";        //echo "【string2】".$String."</br>";die();        //签名步骤三:MD5加密        $String = md5($String);        //echo "【string3】 ".$String."</br>";die();        //签名步骤四:所有字符转为大写        $result_ = strtoupper($String);        //echo "【result】 ".$result_."</br>";die();        return $result_;    }    /**     *  作用:array转xml     */public  function arrayToXml($arr)    {        $xml = "<xml>";        foreach ($arr as $key=>$val)        {             if (is_numeric($val))             {                $xml.="<".$key.">".$val."</".$key.">";              }             else                $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";          }        $xml.="</xml>";        return $xml;     }    /**     *  作用:将xml转为array     */    public function xmlToArray($xml)    {               //将XML转为array                $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);              return $array_data;    }     /**     *  作用:以post方式提交xml到对应的接口url     */    public function postXmlCurl($xml,$url,$second=30)    {               //初始化curl                $ch = curl_init();        //设置超时        curl_setopt($ch, CURLOP_TIMEOUT, $second);        //这里设置代理,如果有的话        //curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');        //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);        curl_setopt($ch,CURLOPT_URL, $url);        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);        //设置header        curl_setopt($ch, CURLOPT_HEADER, FALSE);        //要求结果为字符串且输出到屏幕上        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);        //post提交方式        curl_setopt($ch, CURLOPT_POST, TRUE);        curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);        //运行curl        $data = curl_exec($ch);        curl_close($ch);        //返回结果        if($data)        {            curl_close($ch);            return $data;        }        else         {             $error = curl_errno($ch);            echo "curl出错,错误码:$error"."<br>";             echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>";            curl_close($ch);            return false;        }    }     public function wxHttpsRequestPem( $vars,$url, $second=30,$aHeader=array()){                $ch = curl_init();                //超时时间                curl_setopt($ch,CURLOPT_TIMEOUT,$second);                curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);                //这里设置代理,如果有的话                //curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98');                //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);                curl_setopt($ch,CURLOPT_URL,$url);                curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);                curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);                //以下两种方式需选择一种                //第一种方法,cert 与 key 分别属于两个.pem文件                //默认格式为PEM,可以注释                 curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');        curl_setopt($ch,CURLOPT_SSLCERT, getcwd().'/zhuji/apiclient_cert.pem');        //默认格式为PEM,可以注释        curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');        curl_setopt($ch,CURLOPT_SSLKEY, getcwd().'/zhuji/apiclient_key.pem');        curl_setopt($ch,CURLOPT_CAINFO, getcwd().'/zhuji/rootca.pem');                 //第二种方式,两个文件合成一个.pem文件                //curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');                if( count($aHeader) >= 1 ){                        curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);                }                curl_setopt($ch,CURLOPT_POST, 1);                curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);                $data = curl_exec($ch);                if($data){                        curl_close($ch);                        return $data;                }                else {                         $error = curl_errno($ch);                        echo "call faild, errorCode:$error\n";                         curl_close($ch);                        return false;                }        }}?>
0 0
原创粉丝点击