设为首页 收藏本站
查看: 1087|回复: 0

[经验分享] 微信现金红包开发 PHP

[复制链接]

尚未签到

发表于 2017-12-29 14:36:32 | 显示全部楼层 |阅读模式
<?php  

class wxPay {//配置参数信息  const SHANGHUHAO = "1430998xxx";//商户号
  const PARTNERKEY = "leFyTOXWzUEXxfp47WOu5d9xxxxxx";    //api,商户后台
  //核心支付函数,参数:请求地址和参数
  function pay($url,$obj) {
  $obj['nonce_str'] = $this->create_noncestr();    //创建随机字符串
  $stringA = $this->create_qianming($obj,false);    //创建签名
  $stringSignTemp = $stringA."&key=leFyTOXWzUEXxfp47WOu5xxxxxx";    //签名后加api
  $sign = (($stringSignTemp));    //签名加密并大写
  $obj['sign'] = $sign;    //将签名传入数组
  $postXml = $this->arrayToXml($obj);    //将参数转为xml格式
  ($postXml);
  $responseXml = $this->curl_post_ssl($url,$postXml);    //提交请求
  ($responseXml);
  return $responseXml;
  }
  //生成签名,参数:生成签名的参数和是否编码
  function create_qianming($arr,$urlencode) {
  $buff = "";
  ($arr); //对传进来的数组参数里面的内容按照字母顺序排序,a在前面,z在最后(字典序)
  foreach ($arr as $k=>$v) {
  if(null!=$v && "null" != $v && "sign" != $k) {    //签名不要转码
  if ($urlencode) {
  $v = ($v);
  }
  $buff.=$k."=".$v."&";
  }
  }
  if (($buff)>0) {
  $reqPar = ($buff,0,($buff)-1); //去掉末尾符号“&”
  
        }
  return $reqPar;
  }
  //生成随机字符串,默认32位
  function create_noncestr($length=32) {
  //创建随机字符
  $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  $str = "";
  for($i=0;$i<$length;$i++) {
  $str.=($chars, (0,($chars)-1),1);
  }
  return $str;
  }
  //数组转xml
  function arrayToXml($arr) {
  $xml = "<xml>";
  foreach ($arr as $key=>$val) {
  if (($val)) {
  $xml.="<".$key.">".$val."</".$key.">";
  } else {
  $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
  }
  }
  $xml.="</xml>";
  return $xml;
  }
  //post请求网站,需要证书
  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_URL,$url);
  curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
  curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
  //cert 与 key 分别属于两个.pem文件
  //请确保您的libcurl版本是否支持双向认证,版本高于7.20.1
  curl_setopt($ch,CURLOPT_SSLCERT,(__FILE__).DIRECTORY_SEPARATOR.
  'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');
  curl_setopt($ch,CURLOPT_SSLKEY,(__FILE__).DIRECTORY_SEPARATOR.
  'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_key.pem');
  curl_setopt($ch,CURLOPT_CAINFO,(__FILE__).DIRECTORY_SEPARATOR.
  'zhengshu'.DIRECTORY_SEPARATOR.'rootca.pem');
  if( ($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;
  }
  }
  
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429366-1-1.html 上篇帖子: PHP阿里大鱼短信验证 下篇帖子: PHP中MD5函数漏洞
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表