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
- php 微信商户发红包,退款,订单查询,企业付款到零钱
- php微信企业付款到个人零钱
- 微信支付之公众号发红包和企业付款
- 9. PHP接入微信支付订单、退款订单、转款订单的查询
- 微信商户平台企业付款到用户找不到没选项开通不了怎么开通
- 微信商户发红包和获取用户信息
- APP提现之微信商户号企业付款
- php微信企业付款
- 微信支付商户平台,企业付款,企业向个人付款接口总结
- PHP微信发红包简明教程
- PHP实现微信发红包程序
- 微信发红包 PHP 实现
- 微信提现(2)----企业付款到零钱
- 微信企业付款到个人
- 利用微信企业号实现发红包功能
- 微信企业付款
- 微信企业付款报appid不属于该商户号
- 微信用户提现不能到账,显示NO_AUTH | 产品权限验证失败,请查看您当前是否具有该产品的权限(企业付款到零钱)
- iOS-利用UIScrollView实现展示图片的无限滚动及自动滚动 - 郭晓
- 最简单的视音频播放示例6:OpenGL播放YUV420P(通过Texture,使用Shader)
- leofs 问题集合
- C# 异常
- ServletContext作用功能详解
- php 微信商户发红包,退款,订单查询,企业付款到零钱
- 时间问题
- xenserver增加新硬盘
- C++设计模式[十六]中介者模式
- js实现拖拽效果
- 深入理解Java:SimpleDateFormat安全的时间格式化
- laravel 文件上传
- 传输层流量控制方法,交换机与路由器的区别
- Android滑动展示图片(一页多图,带小圆点,类似小米市场APP详情页图片展示)