当前位置: 首页 > news >正文

微信银行组件接口


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.gsyq.cn/news/42775.html

相关文章:

  • 2025 年 11 月聚氨酯冷库板厂家推荐排行榜,聚氨酯冷库板,冷库保温板,阻燃冷库板,装配式冷库板公司推荐,高效保温与耐用品质口碑之选
  • 2025 年 11 月冷库集成工厂推荐排行榜,速冻冷库,冷藏冷库,保鲜冷库,工业冷库集成厂家精选推荐
  • 2025年11月固定资产管理系统评价榜:政企校医行业选型参考
  • 2025 年酒店一次性用品最新推荐榜,聚焦企业技术实力与市场口碑深度解析杯套/外卖筷子/印刷/房卡套/信封用品公司推荐
  • 2025年11月打包机品牌推荐:口碑榜观察五强服务网络与实绩
  • 教育行业AI赋能一键部署智能化的API安全解决方案实践
  • 2025年蓄冷冰盒服务商哪个靠谱?蓄冷冰盒加工厂哪家技术强?
  • 布隆过滤器的完整最佳实践案例
  • AI-API-搭建
  • 北京河北全屋定制公司口碑排名:木木宅配全屋定制口碑怎么样?
  • ClkLog埋点分析系统:快速实现用户行为数据采集与分析
  • 564
  • 实用指南:Web 开发 27
  • 2025年11月床垫品牌评价榜:60天试睡与可拆设计大排行
  • 鸿蒙实现滴滴出行项目之线路规划图 - 详解
  • Gitee PPM:引领软件工厂智能化转型,打造协同操作系统新标杆
  • 问题记录,unity shaderlab 模版写入问题
  • Linux-> TCP 编程2 - 指南
  • 【URP】Unity[后处理]镜头畸变LensDistortion
  • 2025年中频熔炼炉厂家推荐:浙江湘达机电,铜中频熔炼炉/铝中频熔炼炉/金中频熔炼炉/银中频熔炼炉/覆盖多金属加工场景
  • 2025 年 11 月尼龙板厂家推荐排行榜,防静电尼龙板,透明尼龙板,白色尼龙板,优质尼龙板公司推荐
  • docker 修改默认IP段
  • 2025年比较好的不锈钢阀厂家推荐及选择指南
  • 2025年11月中国抗衰老设备技术排行榜TOP10:科技抗衰新趋势解析
  • 爱思益 联系方式: 验证师资与口碑后再付费
  • 2025年诚信的净化材料净化板厂家推荐及采购参考
  • ubuntu系统字体太小调整方法,亲测有效,2分钟解决!
  • MySQL8总被扫出漏洞,不想升级该怎么办呢?看我如何应对的
  • 损失函数之焦点损失函数
  • 2025年优质的酒店工程墙布厂家最新用户好评榜