tp5微信提现

news/2024/12/30 1:50:58/
<?php
namespace app\common\controller;
use app\index\controller\Base;
use think\Db;
use think\facade\Env;
class Wxtuikuan extends Base
{/**** 商户号需注册满90天* 30天流水* 微信支付-产品中心-商家转账到零钱-开通*/private $SSLCERT_PATH;							// api证书路径private $SSLKEY_PATH;							// 密钥证书路径protected $mchid;protected $appid;// 调用方法public function __construct(){$config=Db::name('setting')->find(1);$this->SSLCERT_PATH = 'public'.$config['apiclient_cert'];$this->SSLKEY_PATH = 'public'.$config['apiclient_key'];$this->mchid = $config['MCHID']; //https://pay.weixin.qq.com 产品中心-开发配置-商户号$this->appid = $config['APPID']; //微信支付申请对应的公众号的APPID}public function myTixian(){$info['amount']=1;//金额$info['orderno']=generateOrderNumber(6);//订单号$info['openid']='o7nYL5QN7eaAYw1HyxCEBzWbwa_k';//openid$this->tixian($info);}//提现 企业付款到零钱public function tixian($info = []){if (empty($info)){return false;}$url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';$batch_name = '用户提现';$pars = [];$pars['appid'] = $this->appid;//直连商户的appid$pars['out_batch_no'] = 'sjzz'.date('Ymd').mt_rand(1000, 9999);//商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一$pars['batch_name']   = $batch_name;//该笔批量转账的名称$pars['batch_remark'] = $batch_name;//转账说明,UTF8编码,最多允许32个字符$pars['total_amount'] = intval(strval($info['amount'] * 100));//转账总金额 单位为“分”$pars['total_num']    = 1;//转账总笔数$pars['transfer_detail_list'][0]  = ['out_detail_no'=> $info['orderno'],'transfer_amount'=>intval(strval($info['amount'] * 100)),'transfer_remark'=>$batch_name,'openid'=>$info['openid'],];//转账明细列表// dump($pars);$token  = $this->getToken($pars,$this->mchid);//获取token$res    = $this->https_request($url,json_encode($pars),$token);//发送请求$resArr = json_decode($res,true);return $resArr;}public function getToken($pars,$merchant_id){$url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';$http_method = 'POST';//请求方法(GET,POST,PUT)$timestamp   = time();//请求时间戳$url_parts   = parse_url($url);//获取请求的绝对URL$nonce       = $timestamp.rand('10000','99999');//请求随机串$body        = json_encode((object)$pars);//请求报文主体$stream_opts = ["ssl" => ["verify_peer"=>false,"verify_peer_name"=>false,]];//证书$apiclient_cert_path = Env::get('root_path').$this->SSLCERT_PATH;$apiclient_key_path  = Env::get('root_path').$this->SSLKEY_PATH;$apiclient_cert_arr = openssl_x509_parse(file_get_contents($apiclient_cert_path,false, stream_context_create($stream_opts)));$serial_no          = $apiclient_cert_arr['serialNumberHex'];//证书序列号$mch_private_key    = file_get_contents($apiclient_key_path,false, stream_context_create($stream_opts));//密钥// $merchant_id = '';//商户id$canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : ""));$message = $http_method."\n".$canonical_url."\n".$timestamp."\n".$nonce."\n".$body."\n";openssl_sign($message, $raw_sign, $mch_private_key, 'sha256WithRSAEncryption');$sign = base64_encode($raw_sign);//签名$schema = 'WECHATPAY2-SHA256-RSA2048';$token = sprintf('mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s"',$merchant_id, $nonce, $timestamp, $serial_no, $sign);//微信返回tokenreturn $token;}function https_request($url,$data = null,$token){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, (string)$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);//添加请求头$headers = ['Authorization:WECHATPAY2-SHA256-RSA2048 '.$token,'Accept: application/json','Content-Type: application/json; charset=utf-8','User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',];if(!empty($headers)){curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);}$output = curl_exec($curl);curl_close($curl);return $output;}}

http://www.ppmy.cn/news/176744.html

相关文章

TP5模板篇

TP5模板篇 MVC 继承controller后可用fetch 列表输出 复杂模板 注意 &#xff1a;html注释符无法让标签失效 使用user的静态成员函数 分页输出 注意&#xff1a;单纯显示并不好看&#xff0c;可以直接引入bootstrap.css,会改善显示 公共模板 中括号的用法 如果模板的位置…

tp5日志

日志记录和跟踪调试。由于日志记录了所有的运行错误&#xff0c;因此养成经常查看日志文件的习惯&#xff0c;可以避免和及早发现很多的错误隐患。日志还有其他作用&#xff0c;用于输出一些不方便显示的调试的信息。 可以给多应用&#xff0c;或者前后端&#xff0c;分别配置…

Tp5 简单介绍

简单介绍下Tp5的MVC和数据库 MVC层 存放代码 数据库 访问路径 http://localhost 或 127.0.0.1 点击public 可以配域名

thinkphp5.1 使用gateway-worker

** 1. 安装workerman/gateway-worker ** composer require workerman/gateway-worker2.根目录创建server.php <?phpnamespace think; require __DIR__ . /thinkphp/base.php; Container::get(app)->bind(worker/server)->run()->send();3.创建启动文件app\wor…

tp5支付宝支付

ThinkPHP5 支付宝支付扩展库&#xff0c; 包括手机网站支付、电脑网站支付、支付查询、退款、退款查询、对账单等。 可以在GitHub下载&#xff1a; https://github.com/dream2023/ThinkPHP5-alipay 下载完成解压之后如下 打开application文件夹 把common复制到自己项目的app…

tp6/thinkphp6框架如何接入微信提现零钱功能

微信APP支付提现功能是我们常用的一个功能&#xff0c;接下来我们来对接APP的微信提现 业务范围 1.各类APP的提现功能为用户创造提现收益等 微信支付流程 1.选择接入模式 &#xff08;商户平台申请&#xff09;成为普通商户 2.参数申请 开放平台申请APPID &#xff0c;商户号…

TP5上传

说道上传&#xff0c;图片上传是最常见的了。比如商城的商品列表页&#xff0c;都有一堆商品提供大家看来让大家参考。有一些网站的新闻都会有缩略图让大家预览。所以为了方便需求&#xff0c;tp也专门做了一个上传相关的功能。 关于模板方面还是要啰嗦一下 <form action&…

tp5(thinkphp 5)后端开发

编译环境 php 7.3.29&#xff0c;windows可能需要找个教程安装一下&#xff0c; macOs系统自带apache&#xff0c;只需要把 /etc/apache2 路径下的 httpd.conf 关于php的配置的注释取消掉即可。 依赖包管理器&#xff1a;composer&#xff0c;安装教程,常用命令 创建工程命令&…