php教程微信支付技术(php微信扫码支付 php公众号支付)
类别:编程学习 浏览量:862
时间:2022-04-03 11:40:32 php教程微信支付技术
php微信扫码支付 php公众号支付本文实例为大家分享了php微信扫码支付,公众号支付的具体代码,供大家参考,具体内容如下
|
<?php # 微信统一下单接口 $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder' ; $param = [ 'appid' => '公众号id' , 'mch_id' => '商户id' , 'nonce_str' =>uniqid(), 'sign_type' => 'MD5' , 'body' => 'test' , 'detail' => 'test detail' , 'out_trade_no' => date ( 'Ymd' ).rand(10000,99999), 'total_fee' => 1, 'notify_url' => 'http://www.test.top/testpay/pay.php' , 'trade_type' => 'JSAPI' , ]; ksort( $param ); $sign_str = urldecode(http_build_query( $param )); $sign_str .= '&key=商户密钥' ; //echo $sign_str;exit; $sign_str = md5( $sign_str ); $param [ 'sign' ] = strtoupper ( $sign_str ); function CurlPost( $url , $param = [], $is_post = 1, $timeout = 5 ) { //初始化curl $curl = curl_init(); // 设置请求的路径 curl_setopt( $curl , CURLOPT_URL, $url ); if ( $is_post == 1) { //设置POST提交 curl_setopt( $curl , CURLOPT_POST, 0); } //显示输出结果 1代表 把接口返回的结果当作一个字符串处理 curl_setopt( $curl , CURLOPT_RETURNTRANSFER, 1); // 设置请求超时时间 curl_setopt( $curl , CURLOPT_TIMEOUT, $timeout ); curl_setopt( $curl , CURLOPT_SSL_VERIFYHOST, false); curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, false); if ( $is_post == 1) { //提交数据 -- 设置post提交的数据 if ( is_array ( $param )) { //http_build_query curl_setopt( $curl , CURLOPT_POSTFIELDS, http_build_query( $param )); } else { curl_setopt( $curl , CURLOPT_POSTFIELDS, $param ); } } //执行请求 $data = $data_str = curl_exec( $curl ); //处理错误 if ( $error = curl_error( $curl )) { $log_data = array ( 'url' => $url , 'param' => $param , 'error' => '<span style="color:red;font-weight: bold">' . $error . '</span>' , ); var_dump( $log_data ); exit ; } # 关闭CURL curl_close( $curl ); //json数据转换为数组 $data = json_decode( $data , true); if (! is_array ( $data )) { $data = $data_str ; } #调用玩接口之后写一个日志 $log = [ 'url' => $url , 'param' => $param , 'response' => $data_str ]; file_put_contents (__DIR__ . '/wechat.log' , print_r( $log , true), 8); return $data ; } function arr2Xml( $arr ){ $xml = '<xml version="1.0" encoding="UTF-8"> ' ; foreach ( $arr as $key => $value ){ if ( is_numeric ( $value )){ $xml .= "<" . $key . ">" . $value . "</" . $key . ">" ; } else { $xml .= "<" . $key . "><![CDATA[" . $value . "]]></" . $key . ">" ; } } $xml .= '</xml>' ; return $xml ; } $xml = arr2Xml( $param ); $result = CurlPost( $url , arr2Xml( $param ) ); $api_arr = json_decode( json_encode(simplexml_load_string( $result , 'SimpleXMLElement' , LIBXML_NOCDATA) ), true ); if ( $api_arr [ 'return_code' ] == 'SUCCESS' ){ include __DIR__ . '/phpqrcode.php' ; header( 'content-type:image/png' ); echo Qrcode::png( $api_arr [ 'code_url' ] , false , 'H' , 6 ,2 ); } |
|
<?php #微信统一下单接口 $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder' ; $param =[ #公众账号ID 'appid' => '****' , 'mch_id' => '***' , 'nonce_str' =>uniqid(), 'sign_type' => 'MD5' , 'body' => 'test' , 'detail' => 'detail' , 'out_trade_no' => date ( 'Ymd' ).rand(10000,99999), 'total_fee' =>1, 'spbill_create_ip' => $_SERVER [ 'SERVER_ADDR' ], 'notify_url' => 'http://****/test.php' , 'trade_type' => 'NATIVE' , ]; ksort( $param ); $sign_str =urldecode(http_build_query( $param )); $sign_str .= '&key=8934e7d15453e97507ef794cf7b0519d' ; $sign_str =md5( $sign_str ); $param [ 'sign' ]= strtoupper ( $sign_str ); //print_r($param);exit; function CurlPost( $url , $param = [], $is_post = 1, $timeout = 5 ) { //初始化curl $curl = curl_init(); // 设置请求的路径 curl_setopt( $curl , CURLOPT_URL, $url ); if ( $is_post == 1) { //设置POST提交 curl_setopt( $curl , CURLOPT_POST, 0); } //显示输出结果 1代表 把接口返回的结果当作一个字符串处理 curl_setopt( $curl , CURLOPT_RETURNTRANSFER, 1); // 设置请求超时时间 curl_setopt( $curl , CURLOPT_TIMEOUT, $timeout ); curl_setopt( $curl , CURLOPT_SSL_VERIFYHOST, false); curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, false); if ( $is_post == 1) { //提交数据 -- 设置post提交的数据 if ( is_array ( $param )) { //http_build_query curl_setopt( $curl , CURLOPT_POSTFIELDS, http_build_query( $param )); } else { curl_setopt( $curl , CURLOPT_POSTFIELDS, $param ); } } //执行请求 $data = $data_str = curl_exec( $curl ); //处理错误 if ( $error = curl_error( $curl )) { $log_data = array ( 'url' => $url , 'param' => $param , 'error' => '<span style="color:red;font-weight: bold">' . $error . '</span>' , ); var_dump( $log_data ); exit ; } # 关闭CURL curl_close( $curl ); //json数据转换为数组 $data = json_decode( $data , true); if (! is_array ( $data )) { $data = $data_str ; } #调用玩接口之后写一个日志 $log = [ 'url' => $url , 'param' => $param , 'response' => $data_str ]; file_put_contents (__DIR__ . '/wechat.log' , print_r( $log , true), 8); return $data ; } function arrzxml( $arr ){ $xml = '<xml version="1.0" encoding="UTF-8">' ; foreach ( $arr as $key => $value ){ if ( is_numeric ( $value )){ $xml .= "<" . $key . ">" . $value . "</" . $key . ">" ; } else { $xml .= "<" . $key . "><![CDATA[" . $value . "]]></" . $key . ">" ; } } $xml .= '</xml>' ; // var_dump($xml);exit; return $xml ; } $xml =arrzxml( $param ); $result =CurlPost( $url ,arrzxml( $param )); //echo '<pre/>'; var_dump( $result ); exit ; $api_arr =json_decode(simplexml_load_string( $result , 'SimpleXMLElement' ,LIBXML_NOCDATA),true); if ( $result [ 'return_code' ]== 'SUCCESS' ){ include __DIR__. '/phpqrcode.php' ; header( 'content-type:image/png' ); echo Qrcode::png( $api_arr [ 'code_url' ],false, 'H' ,6,2); } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
您可能感兴趣
- 微信公众号怎么申请支付接口(微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解)
- docker部署php本地开发环境(CentOS7环境下使用Docker搭建PHP运行环境的过程详解)
- thinkphp3.2.3 接口开发(ThinkPHP3.2.3框架Memcache缓存使用方法实例总结)
- php生成md5(php进行md5加密简单实例方法)
- phpredis高级用法(PHP Redis扩展无法加载的问题解决方法)
- php微信支付流程(PHP实现微信退款的方法示例)
- php考试复习题(php+mysql开发的最简单在线题库在线做题系统完整案例)
- 阿里云服务器怎么搭建环境(阿里云服务器快速配置php环境的方法)
- thinkphp源码上传(ThinkPHP框架实现FTP图片上传功能示例)
- php开发pdo事务处理(Cpanel下Cron Jobs定时执行PHP的方法)
- python与php比较(浅谈php调用python文件)
- lnmp安装php(LNMP系列教程之二 删除站点及域名绑定)
- 如何解决php跨域问题(php简单检测404页面的方法示例)
- thinkphp5开发小程序后台(PHP小程序支付功能完整版基于thinkPHP)
- phpstudy服务器怎么设置(phpstudy本地环境开启.htaccess伪静态方法)
- thinkphp返回json(thinkphp5框架实现数据库读取的数据转换成json格式示例)
- 缅甸旅游攻略(缅甸旅游攻略必去景点推荐)
- 《庆余年2》新消息,原班人马,肖战特别出演,这才是最好的安排(庆余年2新消息原班人马)
- 宁夏灵武恐龙化石发现始末(宁夏灵武恐龙化石发现始末)
- 到了岁末 临门一脚 节点,天台综合督评会目标直指 全年红(到了岁末临门一脚)
- 寒假余额不满24小时,不如来一场说走就走的亲子阅读之旅(寒假余额不满24小时)
- 省委书记出席的交流会,十位县委书记同场发言,代表公文材料的高水平(省委书记出席的交流会)
热门推荐
- 织梦栏目怎么管理(织梦“模块管理”里面的“模块列表”显示空白的解决方法)
- 配置ftp服务器基本步骤(搭建FTP服务器的简单实例)
- vue前端打包发布教程(Vue项目打包、合并及压缩优化网页响应速度)
- python端口扫描脚本测试(Python实现的IP端口扫描工具类示例)
- canvas俄罗斯方块(JavaScript canvas实现俄罗斯方块游戏)
- php教程微信支付技术(php微信扫码支付 php公众号支付)
- jquery的each的用法
- asp.net把word文档转换成pdf
- 云服务器租用还是托管好(租用云服务器我们需要知道的几点内容)
- laravel框架配置(Laravel框架实现多数据库连接操作详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9