温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用PHP怎么实现一个微信提现功能

发布时间:2021-02-04 17:25:00 来源:亿速云 阅读:217 作者:Leah 栏目:开发技术

使用PHP怎么实现一个微信提现功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

PHP实现

//封装提现方法  function tixian($money){     $appid = "################";//商户账号appid     $secret = "##########";//api密码     $mch_id = "#######";//商户号     $mch_no = "#######";     $openid="123456789";//授权用户openid             $arr = array();     $arr['mch_appid'] = $appid;     $arr['mchid'] = $mch_id;     $arr['nonce_str'] = ugv::randomid(20);//随机字符串,不长于32位     $arr['partner_trade_no'] = '1298016501' . date("Ymd") . rand(10000, 90000) . rand(10000, 90000);//商户订单号     $arr['openid'] = $openid;     $arr['check_name'] = 'NO_CHECK';//是否验证用户真实姓名,这里不验证     $arr['amount'] = $money;//付款金额,单位为分     $desc = "###提现";     $arr['desc'] = $desc;//描述信息     $arr['spbill_create_ip'] = '192.168.0.1';//获取服务器的ip     //封装的关于签名的算法     $notify = new Notify_pub();     $notify->weixin_app_config = array();     $notify->weixin_app_config['KEY'] = $mch_no;     $arr['sign'] = $notify->getSign($arr);//签名     $var = $notify->arrayToXml($arr);     $xml = $this->curl_post_ssl('https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers', $var, 30, array(), 1);     $rdata = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);     $return_code = (string)$rdata->return_code;     $result_code = (string)$rdata->result_code;     $return_code = trim(strtoupper($return_code));     $result_code = trim(strtoupper($result_code));     if ($return_code == 'SUCCESS' && $result_code == 'SUCCESS') {       $isrr = array(         'con'=>'ok',         'error' => 0,       );     } else {       $returnmsg = (string)$rdata->return_msg;       $isrr = array(         'error' => 1,         'errmsg' => $returnmsg,       );     }     return json_encode($isrr); }
//上个方法中用到的curl_post_ssl() function curl_post_ssl($url, $vars, $second = 30, $aHeader = array())   {     $isdir = "/cert/";//证书位置     $ch = curl_init();//初始化curl     curl_setopt($ch, CURLOPT_TIMEOUT, $second);//设置执行最长秒数     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上     curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 终止从服务端进行验证     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//     curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');//证书类型     curl_setopt($ch, CURLOPT_SSLCERT, $isdir . 'apiclient_cert.pem');//证书位置     curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');//CURLOPT_SSLKEY中规定的私钥的加密类型     curl_setopt($ch, CURLOPT_SSLKEY, $isdir . 'apiclient_key.pem');//证书位置     curl_setopt($ch, CURLOPT_CAINFO, 'PEM');     curl_setopt($ch, CURLOPT_CAINFO, $isdir . 'rootca.pem');     if (count($aHeader) >= 1) {       curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);//设置头部     }     curl_setopt($ch, CURLOPT_POST, 1);//post提交方式     curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);//全部数据使用HTTP协议中的"POST"操作来发送     $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;     } }

三、补充

关于具体签名算法,可参考微信官方文档;

简单示范签名算法:

//将要发送的数据整理为$data ksort($data);//排序 //使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串 $str=''; foreach($data as $k=>$v) {   $str.=$k.'='.$v.'&'; } //拼接API密钥 $str.='key='.$secrect; $data['sign']=md5($str);//加密

将数组转换成xml格式(简单方法):

//遍历数组方法 function arraytoxml($data){   $str='<xml>';   foreach($data as $k=>$v) {     $str.='<'.$k.'>'.$v.'</'.$k.'>';   }   $str.='</xml>';   return $str; }

将xml格式转换为数组:

function xmltoarray($xml) {     //禁止引用外部xml实体    libxml_disable_entity_loader(true);    $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);    $val = json_decode(json_encode($xmlstring),true);    return $val; }

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI