一、官方api
部分微信支付业务指定商户需要使用图片上传 API来上报图片信息,从而获得必传参数的值:图片MediaID 。
#接口说明
支持商户:
【普通服务商】
请求方式:
【POST】/v3/merchant/media/upload
请求域名:【主域名】
https://api.mch.weixin.qq.com
使用该域名将访问就近的接入点【备域名】
https://api2.mch.weixin.qq.com
使用该域名将访问异地的接入点 ,指引点击查看
请求主体类型: multipart/form-data
二、官方SDK包
编程语言 | 源代码 | 软件包仓库 |
---|---|---|
Java | wechatpay-java(opens new window) | Maven Central(opens new window) |
PHP | wechatpay-php(opens new window) | Packagist(opens new window) |
Go | wechatpay-go(opens new window) | pkg.go.dev |
三、简化版
简化版的出现通常基于以下几个重要原因:
1. 提高用户体验
- 官方版本可能因为功能过多、操作复杂而让用户感到困扰。简化版聚焦核心功能,使操作更加让普通用户能够迅速上手
2. 降低资源占用
- 官方版本可能由于功能丰富而占用较多的系统资源,如内存、存储空间和处理器性能。简化版可以减少这些资源的消耗,使软件在配置较低的设备上也能流畅运行。
3. 提高软件的兼容性
- 复杂的官方版本可能在某些特定环境或较旧的设备上出现兼容性问题。简化版减少了复杂的功能和组件,从而降低了出现兼容性问题的可能性。
简化代码
function wx_applyment_uplaod($applay_sn,$key,$imgurl){
$记录数据库
$condition_authen_appl['applay_sn']=$applay_sn;
判断上传记录
if($count_merchant[$key]){
echo "<br>".$key."=已经上传!";
return $count_merchant['business_code_wlzc'];
}
define("WxPay_SSLCERT_PATH","/数字证书.pem");
define("WxPay_SSLKEY_PATH","/数字证书.pem");
define("WxPay_CURL_PROXY_PORT",0);
define("WxPay_CURL_PROXY_HOST","0.0.0.0");
echo "<br>文件上传".$key;
$uplaod_url="https://api.mch.weixin.qq.com/secapi/mch/uploadmedia";
$cachepath="D:/cache_upload_pay_file/".md5($path).time().".jpg";
//2023-12-31 修正
//2024-8-10
$照片缓存路径=$applay_sn.'_'.$key.'_'.date("Y_m_d").".jpg";
$cachepath="//cache_upload_pay_file/".$照片缓存路径;
if(is_file($cachepath)){//存在
echo "<br>".date("Y-m-d H:i:s")."文件已经存在";
}else{
//2024-8-10 不存在下载
ob_start(); //打开输出
readfile($imgurl); //输出图片文件
$img = ob_get_contents(); //得到浏览器输出
ob_end_clean(); //清除输出并关闭
file_put_contents($cachepath, $img);
}
$post_img_1['mch_id']='1507462791';
$post_img_1['media_hash']= hash_file("md5", $cachepath);
$post_img_1['sign_type']="MD5";
$sign2=cwpd_MakeSign($post_img_1,"秘钥");
$post_img_1['sign']=$sign2;
$filename =$cachepath;
$minetype = 'image/jpeg';
$curl_file = cwpd_curl_file_create($filename,$minetype,"media");
$post_img_1['media']=new CURLFile($filename);
$header = [
"content-type:multipart/form-data",
];
//
$post_img_1_str=http_build_query($post_img_1);
$ret_img1=cwpd_postXmlCurl($post_img_1,$uplaod_url,true,100,$header);
$result_images= cwpd_xml_to_array($ret_img1);
$key_merhash= $result_images['media_id'];
if(!$count_merchant){
}else{
$data_add[$key]=$key_merhash;
保存数据库
}
}
四、关键解释
define("WxPay_SSLCERT_PATH","/数字证书.pem");
define("WxPay_SSLKEY_PATH","/数字证书.pem");
必须带证书,服务商证书
文件大小不能超过2M
文件上传license_copyarray(1) { [0]=> string(32) "content-type:multipart/form-data" } string(9) "" array(2) { ["return_code"]=> string(4) "FAIL" ["return_msg"]=> string(53) "图片大小不能超过2M,请检查后重新提交" }
五、更多支付问题
扫码,可学习更多。