//注意 需要修改 商户的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;
}
}
}
?>
php 微信商户发红包,退款,订单查询,企业付款到零钱
最新推荐文章于 2021-03-29 12:45:26 发布