贴出核心接口代码至于数据自己填写,接口测试ok
wechat_packet.php
weixin_appid = c('wap_weixin_appid'); $this->mch_id = c('wechat_mch_id'); $this->send_name = c('wechat_send_name'); $this->wishing = c('wechat_wishing'); $this->act_name = c('wechat_act_name'); $this->client_ip = $_server['server_addr']; $this->remark = c('wechat_remark'); $this->nonce_str = $this->create_nonce_str(32); $this->api_password = c('wechat_api_password'); $inc_file = base_path.ds.'api'.ds.'wechat'.ds.'arraytoxml.php'; if(is_file($inc_file)) { require($inc_file); } $this->arraytoxml = new arraytoxml(); } public function send_post($mch_billno,$re_openid,$total_amount){ $sign = $this->create_sign($mch_billno,$re_openid,$total_amount); $send_array = array( 'nonce_str' => $this->nonce_str, 'mch_billno' => $mch_billno, 'mch_id' => $this->mch_id, 'wxappid' => $this->weixin_appid, 'send_name' => $this->send_name, 're_openid' => $re_openid, 'total_amount' => $total_amount, 'total_num' => $this->total_num, 'wishing' => $this->wishing, 'client_ip' => $this->client_ip, 'act_name' => $this->act_name, 'remark' => $this->remark, 'sign' => $sign, ); $send_xml = $this->arraytoxml->toxml($send_array,''); $data = $this->curl_post_ssl($this->url, $send_xml); $data = $this->xmltoarray($data); file_put_contents('adki',var_export($data,true),file_append); } /* 请确保您的libcurl版本是否支持双向认证,版本高于7.20.1 */ private function curl_post_ssl($url, $vars, $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().$this->public_key); //默认格式为pem,可以注释 curl_setopt($ch,curlopt_sslkeytype,'pem'); curl_setopt($ch,curlopt_sslkey,getcwd().$this->private_key); //ca证书 curl_setopt($ch,curlopt_cainfo,$this->rootca); //第二种方式,两个文件合成一个.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\n\n\n; curl_close($ch); return false; } } //生成签名 private function create_sign($mch_billno,$re_openid,$total_amount){ $string_array = array( 'act_name' => $this->act_name, 'client_ip' => $this->client_ip, 'mch_billno' => $mch_billno, 'mch_id' => $this->mch_id, 'nonce_str' => $this->nonce_str, 're_openid' => $re_openid, 'remark' => $this->remark, 'send_name' => $this->send_name, 'total_amount' => $total_amount, 'total_num' => $this->total_num, 'wishing' => $this->wishing, 'wxappid' => $this->weixin_appid, ); foreach ($string_array as $key => $value){ if(!empty($value)){ $stringa .= $key=$value; if($key != 'wxappid'){ $stringa .= '&'; } } } //转成utf-8 $stringa = $this->gbktoutf8($stringa); $stringsigntemp=$stringa&key=$this->api_password; $sign = md5($stringsigntemp); $sign = strtoupper($sign); return $sign; } //生成随机字符串 private function create_nonce_str($length){ $str = null; $strpol = abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz; $max = strlen($strpol)-1; for($i=0;$i $value){ if (is_numeric($value)){ $xml .= .$value.; }else{ $xml .= ; } } $xml .= ''; return $xml; }}
以上就是本文的全部内容,希望对大家学习php程序设计有所帮助,也希望大家多多支持脚本之家。
