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); } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
您可能感兴趣
- webapp前端能用yii2开发吗(Yii Framework框架使用PHPExcel组件的方法示例)
- php模块使用方法(PHP操作XML中XPath的应用示例)
- php面向对象编程代码(php面向对象程序设计入门教程)
- apachephp环境搭建(apache集成php7.3.5的详细步骤)
- php入门基本笔记(PHP之认识二关于Traits的用法详解)
- phplaravel开发规范(Laravel解决nesting level错误和隐藏index.php的问题)
- php怎么实现动态配置(php实现映射操作实例详解)
- phpstudy怎么配置php环境(使用phpStudy搭建php环境及安装各种php程序实战教程)
- php单例设计方法(php设计模式之单例模式用法经典示例分析)
- php数组写法(php文件操作之文件写入字符串、数组的方法分析)
- php如何获取当前日期(php实现获取近几日、月时间示例)
- php实用工具(php常用的工具开发整理)
- php使用yield处理并发(Yii框架中使用PHPExcel的方法分析)
- php常见加密方法(PHP实现的AES 128位加密算法示例)
- php连接mysql需要数据源吗(php连接mysql数据库最简单的实现方法)
- php 获取证书列表(用PHP做了一个领取优惠券活动的示例代码)
- 菲律宾旅游攻略(菲律宾旅游攻略地图)
- 清华大学难考吗(清华大学考研录取分数线)
- 观花盆栽佛肚竹盆景制作及养护(观花盆栽佛肚竹盆景制作及养护)
- 春天养佛肚竹,做好这几件事,叶绿根壮寓意好 越养越旺家(春天养佛肚竹做好这几件事)
- 律界衣品最好,时尚圈学识数高,41岁的Amal堪称现实版的傲骨贤妻(时尚圈学识数高)
- 刘智泰确认出演《Good Wife》 担纲男一号(刘智泰确认出演Good)
热门推荐
- 微信html隐藏功能(使用Html5多媒体实现微信语音功能)
- idea如何运行tomcat项目(在IDEA 2020.3.1中部署Tomcat并且创建第一个web项目的过程详解)
- vue项目打包上线的方法(vue项目打包以及优化的实现步骤)
- 私有云需要企业自己买服务器吗(企业如何对私有云主机进行管理?)
- dockervolume文件权限(docker volumes 文件映射方式)
- css中id和类的区别(CSS新增的:where和:is伪类函数是什么)
- ASP.NET写文件的方法
- nginx反向代理性能(nginx作grpc的反向代理踩坑总结)
- ubuntu18.04更换软件源(ubuntu20.04 LTS系统默认源sources.list文件的修改)
- Linq中的TakeWhile和SkipWhile
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9