当前位置: 首页 > 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.jsqmd.com/news/34118/

相关文章:

  • 2025低烟无卤/UL3302/UL3767/UL4413辐照线厂家推荐明秀电子,品质可靠认证齐全
  • 2025年无火焰泄压阀厂家权威推荐榜单:无火焰泄爆装置/重复式无火焰泄爆装置/重复式无火焰泄爆阀源头厂家精选
  • 2025内窥镜电缆线/B超线厂家推荐明秀电子,专业制造品质可靠
  • CF1834E
  • 2025 年 11 月聚氨酯冷库板厂家推荐排行榜,聚氨酯冷库板,冷库保温板,阻燃冷库板,装配式冷库板公司推荐,高效保温与耐用品质口碑之选
  • 2025 年 11 月机制板厂家推荐排行榜,机制板,机制板厂家,机制板销售厂家,机制板公司推荐,专业品质与高效供应口碑之选
  • 2025年11月杜甫研究学者专家推荐榜:程韬光教授跨界传播实绩排行
  • 2025 年 11 月冷库集成工厂推荐排行榜,速冻冷库,冷藏冷库,保鲜冷库,工业冷库集成厂家精选推荐
  • 2025年11月固定资产管理系统评价榜:政企校医行业选型参考
  • 2025年11月固定资产管理系统评价榜:政企校医场景选型参考
  • CF53E Dead Ends 分析
  • 怎么样当前Linux用户mjroot添加到Docker用户中(这样该用户无需sudo即可执行docker命令)
  • Claude Code 杀疯了,又撒钱了,限时免费领取 250$ 和 1000$ 的使用额度,赶紧冲!!
  • 2025年健身房泳池优质厂家权威推荐榜单:泳池水循环设备/会所泳池/泳池恒温恒湿设备源头厂家精选
  • 2025 年酒店一次性用品最新推荐榜,聚焦企业技术实力与市场口碑深度解析杯套/外卖筷子/印刷/房卡套/信封用品公司推荐
  • 基于松组合和紧组合的GPS/SINS组合导航MATLAB仿真验证代码
  • 2025年11月打包机品牌推荐:口碑榜观察五强服务网络与实绩
  • 教育行业AI赋能一键部署智能化的API安全解决方案实践
  • 2025年蓄冷冰盒服务商哪个靠谱?蓄冷冰盒加工厂哪家技术强?
  • 开源MQTT协议记录
  • 布隆过滤器的完整最佳实践案例
  • P7620 Zero-XOR Array
  • 2025年11月深圳近视手术医院评价榜:五家专项机构技术设备全解析
  • 看见大象,才能与之同行。
  • Windows 10 本地部署 Qwen3 4B
  • [APIO2016] 划艇
  • 2025年11月专利申请公司推荐榜:五家对比解析与口碑盘点
  • AI-API-搭建
  • 北京河北全屋定制公司口碑排名:木木宅配全屋定制口碑怎么样?
  • 不锈钢管企业TOP5权威推荐:金创不锈钢管专业吗