各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

php实现微信以及小程序扫码支付的代码

管理员 2023-09-05
PHP
102

php实现微信以及小程序扫码支付的代码

内容导读

收集整理的这篇技术教程文章主要介绍了php实现微信以及小程序扫码支付的代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4235字,纯文字阅读大概需要7分钟

内容图文

本篇文章给大家带来的内容是关于php实现微信以及小程序扫码支付的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
<?php //微信支付/** * 适用于微信所有支付, 扫码支付 小程序支付   二维码的需要接入生成二维码的代码,这个可以共用*    xml 根据文档自行删改, 共用微信统一下单dome  */    class Payapi{        统一下单      public function Pay($orderid,$total_fee){   参数是订单号 加金额,  可以改动,           $fee = $total_fee;//举例充值0.01          $appid ='';//如果是公众号 就是公众号的appid          $body = '名字';          $mch_id ='商户号';          $nonce_str = $this->nonce_str();//随机字符串          $notify_url ='回调地址';          $out_trade_no = $orderid;//商户订单号          $spbill_create_ip = '主机ip';          $total_fee = $fee*100;//因为充值金额最小是1 而且单位为分 如果是充值1元所以这里需要*100          $trade_type = 'NATIVE';//交易类型 默认          //这里是按照顺序的 因为下面的签名是按照顺序 排序错误 肯定出错          $post['appid'] = $appid;          $post['body'] = $body;          $post['mch_id'] = $mch_id;          $post['nonce_str'] = $nonce_str;//随机字符串          $post['notify_url'] = $notify_url;        //  $post['openid'] = $openid;          $post['out_trade_no'] = $out_trade_no;          $post['spbill_create_ip'] = $spbill_create_ip;//终端的ip          $post['total_fee'] = $total_fee;//总金额 最低为一块钱 必须是整数          $post['trade_type'] = $trade_type;          $sign = $this->sign($post);//签名          $post_xml = '<xml>                 <appid>'.$appid.'</appid>                 <body>'.$body.'</body>                 <mch_id>'.$mch_id.'</mch_id>                 <nonce_str>'.$nonce_str.'</nonce_str>                 <notify_url>'.$notify_url.'</notify_url>                 <openid>'.$openid.'</openid>                 <out_trade_no>'.$out_trade_no.'</out_trade_no>                 <spbill_create_ip>'.$spbill_create_ip.'</spbill_create_ip>                 <total_fee>'.$total_fee.'</total_fee>                 <trade_type>'.$trade_type.'</trade_type>                 <sign>'.$sign.'</sign>              </xml> ';          //统一接口prepay_id          $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';          $xml = $this->http_request($url,$post_xml);          $array = $this->xml($xml);//全要大写          if($array['RETURN_CODE'] == 'SUCCESS' && $array['RESULT_CODE'] == 'SUCCESS'){              $time = time();              $tmp='';//临时数组用于签名              $tmp['appId'] = $appid;              $tmp['nonceStr'] = $nonce_str;              $tmp['package'] = 'prepay_id='.$array['PREPAY_ID'];              $tmp['signType'] = 'MD5';              $tmp['timeStamp'] = "$time";              $data['state'] = 1;              $data['timeStamp'] ="$time";//时间戳              $data['nonceStr'] = $nonce_str;//随机字符串              $data['signType'] = 'MD5';//签名算法,暂支持 MD5              $data['package'] = 'prepay_id='.$array['PREPAY_ID'];//统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*              $data['paySign'] = $this->sign($tmp);//签名,具体签名方案参见微信公众号支付帮助文档;              $data['out_trade_no'] = $out_trade_no;               $data['CODE_URL']  =$array['CODE_URL'];          }else{              $data['state'] = 0;              $data['text'] = "错误";              $data['RETURN_CODE'] = $array['RETURN_CODE'];              $data['RETURN_MSG'] = $array['RETURN_MSG'];          }        return  json_encode($data);      }private function nonce_str(){//随即字符串          $result = '';          $str = 'QWERTYUIOPASDFGHJKLZXVBNMqwertyuioplkjhgfdsamnbvcxz';          for ($i=0;$i<32;$i++){              $result .= $str[rand(0,48)];          }          return $result;      }      //生成订单号      private function order_number($openid){        // date('Ymd',time()).time().rand(10,99);//18位      return md5($openid.time().rand(10,99));//32位      }      //签名 $data要先排好顺序      private function sign($data){      ksort($data);          $stringA = '';          foreach ($data as $key=>$value){              if(!$value) continue;              if($stringA) $stringA .= '&'.$key."=".$value;              else $stringA = $key."=".$value;          }          $wx_key = '';//申请支付后有给予一个商户账号和密码,登陆后自己设置key      $stringSignTemp = $stringA.'&key='.$wx_key;//申请支付后有给予一个商户账号和密码,登陆后自己设置key      return strtoupper(md5($stringSignTemp));    }      //curl请求啊      function http_request($url,$data = null,$headers=array())      {          $curl = curl_init();          if( count($headers) >= 1 ){              curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);          }          curl_setopt($curl, CURLOPT_URL, $url);          curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);          curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);          if (!empty($data)){              curl_setopt($curl, CURLOPT_POST, 1);              curl_setopt($curl, CURLOPT_POSTFIELDS, $data);          }          curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);          $output = curl_exec($curl);          curl_close($curl);          return $output;      }      //获取xml      public function xml($xml){          $p = xml_parser_create();          xml_parse_into_struct($p, $xml, $vals, $index);          xml_parser_free($p);          $data = "";          foreach ($index as $key=>$value) {              if($key == 'xml' || $key == 'XML') continue;              $tag = $vals[$value[0]]['tag'];              $value = $vals[$value[0]]['value'];              $data[$tag] = $value;          }          return $data;      }}

相关推荐:

微信扫红码 微信支付扫码支付php版

PHP实现微信扫码支付功能

以上就是php实现微信以及小程序扫码支付的代码的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的php实现微信以及小程序扫码支付的代码全部内容,希望文章能够帮你解决php实现微信以及小程序扫码支付的代码所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

扫码关注

qrcode

QQ交谈

回顶部