微信支付商户平台,企业付款,企业向个人付款接口总结

article/2025/9/23 14:48:51

这几天做项目,有个需求,是微信用户需要把公众号中赚的钱提现,于是查资料找到了微信商户平台中的高级业务:企业付款。

官方文档:https://pay.weixin.qq.com/wiki/doc/api/mch_pay.php?chapter=14_1

为了以后方便看,我把自己测试的代码贴一下,大家如果有需要,可以参考一下,实际项目中 可根据个人需求自己去改,

主要包含以下几个步骤(充值、网页授权获取openid、获取企业付款需要的信息、发出企业付款请求)。

  1、充值

在微信商户平台中:资金管理->充值(由于企业付款将使用商户的可用余额进行支付,需确保可用余额充足。查看可用余额、充值、提现请登录商户平台“资金管理”进行操作。https://pay.weixin.qq.com/  注意:商户的可用余额与商户微信支付收款资金并非同一账户,需要单独充值。

  2、网页授权

通过网页授权获取用户的openid(企业向微信用户个人付款 目前支持向指定微信用户的openid付款。),具体获取方法可查官方api或http://blog.csdn.net/u010533511/article/details/48085585 。

  3、获取企业付款需要的信息

$mch_appid=$appid;//公众账号appid
$mchid='10000005';//商户号
$nonce_str='qyzf'.rand(100000, 999999);//随机数
$partner_trade_no='xx'.time().rand(10000, 99999);//商户订单号
$openid=$openids;//用户唯一标识,上一步授权中获取
$check_name='NO_CHECK';//校验用户姓名选项,NO_CHECK:不校验真实姓名, FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账),OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
$re_user_name='测试';//用户姓名
$amount=100;//企业金额,这里是以分为单位(必须大于100分)
$desc='测试数据呀!!!';//描述
$spbill_create_ip='192.168.0.1';//请求ip



$dataArr=array();
$dataArr['amount']=$amount;
$dataArr['check_name']=$check_name;
$dataArr['desc']=$desc;
$dataArr['mch_appid']=$mch_appid;
$dataArr['mchid']=$mchid;
$dataArr['nonce_str']=$nonce_str;
$dataArr['openid']=$openid;
$dataArr['partner_trade_no']=$partner_trade_no;
$dataArr['re_user_name']=$re_user_name;
$dataArr['spbill_create_ip']=$spbill_create_ip;

//生成签名

$sign=getSign($dataArr);//getSign($dataArr);见结尾

echo "-----<br/>签名:".$sign."<br/>*****";//die;

//拼写正确的xml参数

$data="<xml>
<mch_appid>".$mch_appid."</mch_appid>
<mchid>".$mchid."</mchid>
<nonce_str>".$nonce_str."</nonce_str>
<partner_trade_no>".$partner_trade_no."</partner_trade_no>
<openid>".$openid."</openid>
<check_name>".$check_name."</check_name>
<re_user_name>".$re_user_name."</re_user_name>
<amount>".$amount."</amount>
<desc>".$desc."</desc>
<spbill_create_ip>".$spbill_create_ip."</spbill_create_ip>
<sign>".$sign."</sign>
</xml>";
 

4、发出企业付款请求

$ch = curl_init ();
$MENU_URL="https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
curl_setopt ( $ch, CURLOPT_URL, $MENU_URL );
curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "POST" );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );

//两个证书(必填,请求需要双向证书。
$zs1="/apiclient_cert.pem";
$zs2="/apiclient_key.pem";
curl_setopt($ch,CURLOPT_SSLCERT,$zs1);
curl_setopt($ch,CURLOPT_SSLKEY,$zs2);
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt ( $ch, CURLOPT_AUTOREFERER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );

$info = curl_exec ( $ch );
if (curl_errno ( $ch )) {
echo 'Errno' . curl_error ( $ch );
}
curl_close ( $ch );
echo "-----<br/>请求返回值:";
var_dump($info);
echo "<br/>*****";die;

更具返回值,做具体处理。

------------------------getSign()方法如下----------------------



/**
 * 作用:生成签名
 */
function getSign($Obj)
{
var_dump($Obj);//die;
foreach ($Obj as $k => $v)
{
$Parameters[$k] = $v;
}
//签名步骤一:按字典序排序参数
ksort($Parameters);
$String = formatBizQueryParaMap($Parameters, false);//方法如下
//echo '【string1】'.$String.'</br>';
//签名步骤二:在string后加入KEY
$String = $String."&key=6cd1c9cab639cb399cb371cbd893e15e";
//echo "【string2】".$String."</br>";
//签名步骤三:MD5加密
$String = md5($String);
//echo "【string3】 ".$String."</br>";
//签名步骤四:所有字符转为大写
$result_ = strtoupper($String);
//echo "【result】 ".$result_."</br>";
return $result_;
}


/**
 * 作用:格式化参数,签名过程需要使用
 */
function formatBizQueryParaMap($paraMap, $urlencode)
{
var_dump($paraMap);//die;
$buff = "";
ksort($paraMap);
foreach ($paraMap as $k => $v)
{
if($urlencode)
{
$v = urlencode($v);
}
//$buff .= strtolower($k) . "=" . $v . "&";
$buff .= $k . "=" . $v . "&";
}
$reqPar;
if (strlen($buff) > 0)
{
$reqPar = substr($buff, 0, strlen($buff)-1);
}
var_dump($reqPar);//die;
return $reqPar;
}

       

示例demo地址:http://download.csdn.net/detail/u010533511/9106723


http://chatgpt.dhexx.cn/article/DRMEHiZj.shtml

相关文章

微信支付常见错误和统一下单错误码详情

微信支付常见错误和统一下单错误码详情 微信支付常见问题描述及解决方法微信调用统一下单接口&#xff0c;当result_codeFAIL时&#xff0c;错误代码及错误描述参考链接&#xff1a; 微信支付常见问题描述及解决方法 序号问题错误描述解决方法1此公众号并没有这些scope的权限&…

微信支付 ---- (商户号该产品权限处罚中)

微信支付 ---- &#xff08;商户号该产品权限处罚中&#xff09; 一、分析问题 今天星期天不情愿的来上班&#xff0c;刚坐下来准备吃一下我的小包子&#xff0c;客户爸爸就很核蔼来电话了~ 电话里面说微信小程序怎么不能支付了啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我很淡…

小程序支付提示 商户号mch_id与appid不匹配 的解决

打开微信支付平台&#xff0c; 进入产品中心后&#xff0c; 点击关联更多Appid 之后填写小程序的appid即可。 appid 可以 从微信公众平台查看。 点开头像下拉即可看到appid填写完成后会提示 已成功发起APPID授权绑定申请 请提醒APPID管理员尽快确认申请请求 公众号(包括小程序…

小程序微信支付提示:商户订单号重复

最近在有用户反馈,点击订单结束无反应. 去后台看了看报错, 是这个样子的 <xml><return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[保密处理]]></appid>…

【支付】第三方支付收单机构

简要概述 现在&#xff0c;在银行卡收单市场里&#xff0c;第三方收单机构在全国范围类极速发展。 收单牌照的第三方支付机构&#xff0c;即通过线下布放POS&#xff0c;替商户收单&#xff0c;第三方支付机构一般是找一个合作的收单银行&#xff0c;对于收单银行自己的持卡人…

小程序支付报错:向微信请求统一下单失败:商户号该产品权限未开通,请前往商户平台>产品中心检查后重试

一.检查微信商户和小程序是否建立绑定关系,没有绑定的需要进行绑定 1.登录微信商户平台,产品中心-->AppId账号管理-->关联AppId 2.填写要绑定的小程序AppId和认证主体点提交(可在微信公众平台-->设置-->基本设置获取) 3.登录微信公众平台 -->功能-->微信支付…

jenkins下载插件失败的解决方案

最近自己搭建jenkins&#xff0c;想实现远程部署环境&#xff0c;下载插件时提示失败&#xff0c;需要说明的是jenkins安装插件失败的原因是多样的&#xff0c;这里查找原因应该是镜像库地址的问题&#xff0c;以下是解决方案。 1.报错提示&#xff1a; 2.解决步骤&#xff1a…

Jenkins下载插件,报java.net.SocketTimeoutException: Read timed out

使用Jenkins下载插件报错 解决办法&#xff1a; 系统管理->插件管理->Advanced 选择最后的update site,输入http://mirror.esuni.jp/jenkins/updates/update-center.json 记得点submit 重新下载插件&#xff0c;即可成功 转载至&#xff1a;https://blog.csdn.net/qq_…

K8S搭建自动化部署环境(三)Jenkins下载、安装和启动

各位大佬&#xff0c;前文如下: K8S搭建自动化部署环境&#xff08;一&#xff09;安装Kubernetes K8S搭建自动化部署环境&#xff08;二&#xff09;安装K8S管理工具Kuboard V3 一、jenkins 下载 jenkins下载地址&#xff1a;https://jenkins.io/zh/download/ 如下图&…

修改 jenkins 插件下载地址

Jenkins国外官方插件地址下载速度非常慢&#xff0c;可以修改为国内的地址。 如下步骤&#xff1a; 到jenkins主机 cd /var/lib/jenkins/ //这个是jenkins的开发目录 cat updates/default.json //这里记录的是刚才从官方网站下载的所有插件地址12 修改…

jenkins 下载插件失败处理办法

jenkins 下载插件失败处理办法 jenkins 下载插件失败,提示&#xff1a; java.io.IOException: Downloaded file /app/jenkins_home/plugins/jacoco.jpi.tmp does not match expected SHA-1, expected CtK02wHdFOxTutqhUQzmue6uvpg, actual YGO05utKyaaFzpGCgCE95GS0WsUat hud…

jenkins中配置git下载代码

**在jenkins中配置git下载代码需要具备以下三点&#xff1a;** 1、jenkins安装git插件 2、要有自己的git库地址&#xff0c;以及访问权限账号 3、执行git下载的任务的电脑&#xff0c;需要安装git客户端1、首先安装git插件&#xff0c;在插件管理中心搜索git安装 2、安装完成后…

Jenkins修改插件下载地址

Jenkins本身不提供很多功能&#xff0c;我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码&#xff0c;使用Maven构建项目等功能需要依靠插件完成。jenkins默认采用官网的插件下载地址&#xff0c;下载速度非常慢&#xff0c;这里把下载地址改为国内的插件下载地址。…

关于Jenkins下载代码失败,“Error cloning remote repo ‘origin‘“

最近配置jenkins任务的时候&#xff0c;出现标题错误 让人费解的是&#xff0c;在节点服务器已设置免密下载代码&#xff0c;而jenkins调用出现认证失败或远程仓库不存在的失败。翻了些帖子没找到解决方案&#xff0c;所以简单写下解决措施。 原因&#xff1a;调查到最后&#…

mac jenkins下载与安装

1.进入网站https://www.jenkins.io/zh/ &#xff0c;点击下载&#xff0c;进入下载页面&#xff0c;因我电脑上安装有tomcat&#xff0c;我下载了war包 下载完后把它部署到你的tomcat上运行&#xff1a;放到tomcat的webapps目录下&#xff0c;启动tomcat&#xff08;sudo sh st…

jenkins下载插件下载不了,解决办法

虚拟机运行下载更新jenkins插件失败 jenkins安装更新插件失败&#xff0c; java.io.IOException: Server returned HTTP response code: 503 for URL: https://get.jenkins.io/plugins/jquery/1.12.4-1/jquery.hpi at sun.net.www.protocol.http.HttpURLConnection.getInputSt…

持续集成之jenkins下载及安装

个人推荐rpm方式安装&#xff5e;&#xff5e; 一、yum方式安装&#xff1a; jenkins官方下载地址 https://www.jenkins.io/zh/download/https://www.jenkins.io/zh/download/ 依次执行官方网站命令即可 二、rpm方式安装&#xff1a; rpm安装包国内下载地址&#xff1a; I…

Jenkins下载,部署,基本使用(SVN版)

&#xff08;1&#xff09;下载 Jenkins download and deployment 建议是下载这个war 然后再tomcat里面运行&#xff0c;这样会比较方便些 &#xff08;2&#xff09;部署 在linux上搞一个tomcat,然后把war包丢到tomcat的webpp下&#xff0c;然后运行tomcat就可以了 访问地…

jenkins安装下载

安装之前&#xff0c;linux必须安装并且配置jdk,maven,docker这些软件 去官网下载jenkins war包 https://www.jenkins.io/download/ 上传或下载安装包 cd/usr/local/jenkins jenkins.war 启动 nohup java -jar /usr/local/jenkins/jenkins.war >/usr/local/jenkins/jenki…

Windows下 Jenkins 下载、安装

目录 一、Jenkins下载 1.下载 Jenkins download and deployment 二、Jenkins安装 第 1 步&#xff1a;设置向导 第 2 步&#xff1a;选择目标文件夹 步骤 3&#xff1a;服务登录凭据 第四步&#xff1a;端口选择 第 5 步&#xff1a;选择 Java 主目录 第 6 步&#xf…