本文实例为大家分享了php微信企业付款到个人零钱的具体代码,供大家参考,具体内容如下
1.基本配置
//公众账号appid $data["mch_appid"] = "appid";//商户号 $data["mchid"] = "";//随机字符串 $data["nonce_str"] = "suiji".mt_rand(100,999); //商户订单号 $data["partner_trade_no"]=date("YmdHis").mt_rand(1000,9999); //金额 用户输入的提现金额需要乘以100 $data["amount"] = $money; //企业付款描述 $data["desc"] = "企业付款到个人零钱"; //用户openid $data["openid"] = $openid; //不检验用户姓名 $data["check_name"] = "NO_CHECK"; //获取IP $data["spbill_create_ip"]=$_SERVER["SERVER_ADDR"]; //商户密钥 $data["key"]="";//商户证书 商户平台的API安全证书下载 $data["apiclient_cert.pem"] $data["apiclient_key.pem"]
2.PHP代码
/****开始支付/ public function userpay(){ $money = ‘用户输入提现金额"; $info["money"] = ‘用户余额"; if ($this->openid && $money){ if ($money>$info["money"] ){ echo json_encode([ "status" => 1, "message" => "余额不足,不能提现!", "code"=>"余额不足,不能提现!" ]); }elseif ($money<1){ echo json_encode([ "status" => 2, "message" => "提现金额不能小于1元", "code"=>"提现金额太低" ]); }else{ $openid = $this->openid; $trade_no = date("YmdHis").mt_rand(1000,9999); $res = $this->pay($openid,$trade_no,$money*100,"微信提现"); //结果打印 if($res["result_code"]=="SUCCESS"){ echo json_encode([ "status" => 3, "message" => "提现成功!", ]); }elseif ($res["err_code"]=="SENDNUM_LIMIT"){ echo json_encode([ "status" => 4, "message" => "提现失败!", "code"=>"每日仅能提现一次", ]); }else{ echo json_encode([ "status" => 5, "message" => "提现失败!", "code"=>$res["err_code"], ]); } } }else{ echo json_encode([ "status" => 5, "message" => "未检测到您当前微信账号~", ]); } }
/***支付方法/public function pay($openid,$trade_no,$money,$desc){ $params["mch_appid"]=""; $params["mchid"] = ""; $params["nonce_str"]= "suiji".mt_rand(100,999); $params["partner_trade_no"] = $trade_no; $params["amount"]= $money; $params["desc"]= $desc; $params["openid"]= $openid; $params["check_name"]= "NO_CHECK"; $params["spbill_create_ip"] = $_SERVER["SERVER_ADDR"]; //生成签名 $str = "amount=".$params["amount"]."&check_name=".$params["check_name"]."&desc=".$params["desc"]."&mch_appid=".$params["mch_appid"]."&mchid=".$params["mchid"]."&nonce_str=".$params["nonce_str"]."&openid=".$params["openid"]."&partner_trade_no=".$params["partner_trade_no"]."&spbill_create_ip=".$params["spbill_create_ip"]."&key=商户密钥"; //md5加密 转换成大写 $sign = strtoupper(md5($str)); //生成签名 $params["sign"] = $sign; //构造XML数据 $xmldata = $this->array_to_xml($params); //数组转XML $url="https://api.mch.weixin.qq.com/mmpaymkttransfers/prom otion/transfers"; //发送post请求 $res = $this->curl_post_ssl($url, $xmldata); //curl请求 if(!$res){ return array("status"=>1, "msg"=>"服务器连接失败" ); } //付款结果分析 $content = $this->xml_to_array($res); //xml转数组 return $content; }
/*** curl请求/public function curl_post_ssl($url, $xmldata, $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); //默认格式为PEM,可以注释 curl_setopt($ch,CURLOPT_SSLCERTTYPE,"PEM");//绝对地址可使用 dirname(__DIR__)打印,如果不是绝对地址会报 58 错误 curl_setopt($ch,CURLOPT_SSLCERT," 绝对地址/apiclient_cert.pem"); curl_setopt($ch,CURLOPT_SSLKEYTYPE,"PEM"); curl_setopt($ch,CURLOPT_SSLKEY,"绝对地址/apiclient_key.pem"); if( count($aHeader) >= 1 ){ curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader); } curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFIELDS,$xmldata); $data = curl_exec($ch); if($data){ curl_close($ch); return $data; } else { $error = curl_errno($ch); echo "call faild, errorCode:$error"; die(); curl_close($ch); return false; } }
/** * array 转 xml * 用于生成签名*/public function array_to_xml($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 xml_to_array($xml){ //禁止引用外部xml实体 libxml_disable_entity_loader(true); $values = json_decode(json_encode(simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOCDATA)), true); return $values; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持网页设计。