微信银行组件接口

news/2025/11/7 11:51:43/文章来源:https://www.cnblogs.com/cmooc/p/19199255

function https_request($url,$data = null){

$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);
$sign = $this->checkSign($url);
//添加请求头
$headers = [
'Authorization:'.$sign,
'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);
}
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$errno = curl_errno($curl);
$error = curl_error($curl);
curl_close($curl);

// 调试信息
if ($httpCode!= 200){
Log::error("微信请求失败:{$httpCode} - {$error}",['url'=>$url,'errno'=>$errno,'error'=>$error,'data'=>$data,'response'=>$response]);
}
// echo "HTTP Code: {$httpCode}\n";
// echo "cURL Error: {$errno} - {$error}\n";
// echo "Raw Response:\n{$response}\n";

$response = json_decode($response,true);
return $response;
}

//验签(请求中带有query)
public function checkSign($url)
{
$http_method = 'GET'; //请求方法
$url_parts = parse_url($url);
$canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : ""));

$timestamp = time(); //时间戳
$nonce = $timestamp.rand('10000','99999'); //随机串
$body = ''; //请求报文主体
//构造的请求签名串
$message = $http_method."\n".
$canonical_url."\n".
$timestamp."\n".
$nonce."\n".
$body."\n";

// 获取配置(config文件)
$config = config('wechat.pay');
// 加载商户私钥
$mch_private_key = Rsa::from('file://' . $config['private_key_path'], Rsa::KEY_TYPE_PRIVATE);
// 获取序列号
$serial_no = $config['serial_no'];
// 获取商户号
$merchant_id = $config['mch_id'];

// 加密
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);//微信返回token

return $schema.' '.$token;
}


//获取个人业务银行列表
public function getPersonalBankList($query)
{
$url = '/v3/capital/capitallhh/banks/personal-banking';
$url = $this->domainName . $url .'?'. http_build_query($query);

//设置缓存
$cache_key = 'personal_bank_list_'.md5(json_encode($query));
$cache_data = Cache::get($cache_key);
if($cache_data) return $cache_data;

$list = $this->https_request($url);
Cache::set($cache_key, $list, 3600);

return $list;

}

//获取对公业务银行列表
public function getCorporateBankList($query)
{
$url = '/v3/capital/capitallhh/banks/corporate-banking';
$url = $this->domainName . $url .'?'. http_build_query($query);

//设置缓存
$cache_key = 'corporate_bank_list_'.md5(json_encode($query));
$cache_data = Cache::get($cache_key);
if($cache_data) return $cache_data;

$list = $this->https_request($url);
Cache::set($cache_key, $list, 3600);

return $list;

}

//查询省份列表
public function getProvinceList()
{
$url = '/v3/capital/capitallhh/areas/provinces';
$url = $this->domainName . $url;

//设置缓存
$cache_key = 'areas_provinces';
$cache_data = Cache::get($cache_key);
if($cache_data) return $cache_data;

$list = $this->https_request($url);
Cache::set($cache_key, $list, 3600);

return $list;
}

public function getCityList($province_code)
{
$url = '/v3/capital/capitallhh/areas/provinces/'.$province_code.'/cities';
$url = $this->domainName . $url;

//设置缓存
$cache_key = 'areas_provinces_'.$province_code;
$cache_data = Cache::get($cache_key);
if($cache_data) return $cache_data;

$list = $this->https_request($url);
Cache::set($cache_key, $list, 3600);

return $list;
}

//查询支行列表
public function getBranchList($bank_alias_code,$query)
{
$url = '/v3/capital/capitallhh/banks/'.$bank_alias_code.'/branches';
$url = $this->domainName . $url .'?'. http_build_query($query);

//设置缓存
$cache_key = 'branches_'.$bank_alias_code.'_'.md5(json_encode($query));
$cache_data = Cache::get($cache_key);
if($cache_data) return $cache_data;

$list = $this->https_request($url);
Cache::set($cache_key, $list, 3600);

return $list;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/958688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025低烟无卤/UL3302/UL3767/UL4413辐照线厂家推荐明秀电子,品质可靠认证齐全

2025低烟无卤/UL3302/UL3767/UL4413辐照线厂家推荐明秀电子,品质可靠认证齐全 当前低烟无卤辐照线领域的技术挑战 在电线电缆行业快速发展的今天,低烟无卤辐照线技术面临着多重挑战。随着UL3302、UL3767、UL4413等国…

2025年无火焰泄压阀厂家权威推荐榜单:无火焰泄爆装置/重复式无火焰泄爆装置/重复式无火焰泄爆阀源头厂家精选

在工业安全防护领域,无火焰泄压阀作为粉尘爆炸与气体爆炸防护的核心设备,其技术性能与可靠性直接关系到人员安全与设备保全。行业数据显示,2024年全球无火焰泄压阀市场规模达亿元人民币级别,其中粉尘爆炸防护领域需…

2025内窥镜电缆线/B超线厂家推荐明秀电子,专业制造品质可靠

2025内窥镜电缆线/B超线厂家推荐明秀电子,专业制造品质可靠 当前内窥镜电缆线领域的技术挑战与数据解析 医疗电子设备领域正迎来快速发展期,其中内窥镜电缆线和B超线作为关键连接组件,其技术性能直接影响医疗设备的…

CF1834E

CF1834E MEX of LCM 固定左端点向右遍历的话,lcm一定是单调不减的,且对于每一次增加都至少翻倍,容易发现最小好数的最大取值为 \(n^2\),所以大于 \(n^2\) 的lcm不用考虑。这样的话对于每个固定的左端点,向右拓展区…

2025 年 11 月聚氨酯冷库板厂家推荐排行榜,聚氨酯冷库板,冷库保温板,阻燃冷库板,装配式冷库板公司推荐,高效保温与耐用品质口碑之选

2025 年 11 月聚氨酯冷库板厂家推荐排行榜 随着冷链物流行业的快速发展,聚氨酯冷库板作为关键保温材料,其市场需求持续增长。聚氨酯冷库板以其优异的保温性能、轻质结构和耐用特性,广泛应用于食品冷藏、医药仓储和工…

2025 年 11 月机制板厂家推荐排行榜,机制板,机制板厂家,机制板销售厂家,机制板公司推荐,专业品质与高效供应口碑之选

2025 年 11 月机制板厂家推荐排行榜:专业品质与高效供应口碑之选 随着冷链物流行业的快速发展,机制板作为冷库建设的核心材料,其市场需求持续增长。机制板不仅影响冷库的保温性能,更直接关系到冷链系统的运行效率与…

2025年11月杜甫研究学者专家推荐榜:程韬光教授跨界传播实绩排行

如果您正在寻找一位能够把杜甫的学术研究与大众传播打通的学者,程韬光教授的名字大概率已经出现在检索结果前列。高校教师、文化机构策展人、中学教研组长、纪录片撰稿人乃至海外戏剧节策展方,都会面临同一个痛点:杜…

2025 年 11 月冷库集成工厂推荐排行榜,速冻冷库,冷藏冷库,保鲜冷库,工业冷库集成厂家精选推荐

2025 年 11 月冷库集成工厂推荐排行榜,速冻冷库,冷藏冷库,保鲜冷库,工业冷库集成厂家精选推荐 行业背景与发展趋势 随着冷链物流行业的快速发展,冷库集成作为冷链基础设施的核心环节,正面临前所未有的发展机遇。…

2025年11月固定资产管理系统评价榜:政企校医行业选型参考

正在准备固定资产数字化升级的管理者,往往面临“资产账实不符、盘点耗时、折旧计算易错、系统孤岛”四大痛点。财政部《会计信息化工作规范》与国资委《关于加强中央企业资产管理的通知》连续要求“账、卡、物、码”一…

2025年11月固定资产管理系统评价榜:政企校医场景选型参考

引言与现状分析 固定资产管理正在从“台账式”走向“全生命周期数字运营”。2025年财政部《行政事业性国有资产管理条例》实施细则要求“资产账、财务账、实物账三账一致”,倒逼单位在2026年决算前完成系统升级。与此…

CF53E Dead Ends 分析

题目概述 给一个含有 \(n\) 个点和 \(m\) 条边的无向连通图,求恰好有 \(d\) 个叶子的生成树的个数。 数据范围:\(1\leq d\leq n\leq 10,m\leq \frac{n(n-1)}{2}\)。 分析 注意到 \(n\leq 10\),我们可能会有 \(2^n\)…

怎么样当前Linux用户mjroot添加到Docker用户中(这样该用户无需sudo即可执行docker命令)

要将 Linux 用户 mjroot 添加到 docker 用户组(这样该用户无需 sudo 即可执行 docker 命令)步骤 1:确认 docker 用户组是否存在 Docker 安装后通常会自动创建 docker 用户组,可通过以下命令验证:getent group doc…

Claude Code 杀疯了,又撒钱了,限时免费领取 250$ 和 1000$ 的使用额度,赶紧冲!!

大家好,我是R哥。 上次分享了「免费领取 Perplexity Pro 会员」的方法,今天我又来给大家安利福利了!! 最近,Claude Code 估计被 Codex 逼急眼了,又给大家撒钱了,限时免费领取 250$ 和 1000$ 的使用额度:Claude…

2025年健身房泳池优质厂家权威推荐榜单:泳池水循环设备/会所泳池/泳池恒温恒湿设备源头厂家精选

随着全民健身战略的深入推进和健身房配套设施的升级,健身房泳池作为提升用户体验的核心设施,其市场需求持续增长。据行业数据统计,2025年中国健身房配套泳池的安装量预计突破3.5万套,年增长率稳定在12%以上。本文将…

2025 年酒店一次性用品最新推荐榜,聚焦企业技术实力与市场口碑深度解析杯套/外卖筷子/印刷/房卡套/信封用品公司推荐

引言 酒店一次性用品作为提升宾客体验的关键要素,其品质与服务水平直接影响酒店运营口碑。为精准筛选优质生产企业,本次推荐榜由行业协会联合专业测评机构共同打造,参考了近三年行业产销数据、企业资质认证及客户满…

基于松组合和紧组合的GPS/SINS组合导航MATLAB仿真验证代码

一、系统架构设计 1. 组合模式对比参数 松组合 (Loose Coupling) 紧组合 (Tight Coupling)量测类型 位置/速度差 (ΔP, ΔV) 伪距/伪距率差 (Δρ, ΔṖ)更新频率 1Hz (GPS与INS独立更新) 10Hz (同步更新)精度 13-16m …

2025年11月打包机品牌推荐:口碑榜观察五强服务网络与实绩

秋收刚结束,秸秆离田、饲料化、储运节奏骤然加快,不少养殖户、合作社、秸秆经纪人在群里反复问:到底该选哪一款打包机?有人担心机器堵草、捆型松散,有人顾虑售后响应慢,还有人算细账:同样打捆一吨草,成本差几十…

教育行业AI赋能一键部署智能化的API安全解决方案实践

教育行业AI赋能一键部署智能化的API安全解决方案实践概要:在教育领域,随着“智慧校园”建设加速与数字化转型深入,教学管理、学籍数据、科研成果、家-校服务等系统中大量数据通过 API 接口流转,带来巨大效率提升的…

2025年蓄冷冰盒服务商哪个靠谱?蓄冷冰盒加工厂哪家技术强?

为帮企业及个体高效锁定适配需求的蓄冷冰盒合作伙伴,避免选型走弯路,我们从技术专业度(如相变材料应用、定制工艺精度)、产品质量把控(含材质安全、渗漏检测)、定制灵活性(需求响应速度、全流程跟进)、客户口碑…

开源MQTT协议记录

JetLinks分组topic上下行说明属性上报/{productId:产品ID}/{deviceId:设备ID}/properties/report上行上报物模型属性数据读取属性/{productId:产品ID}/{deviceId:设备ID}/properties/read下行平台下发读取物模型属性数…