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

原创 2015年09月14日 22:58:42

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

官方文档: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

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

  • 2015年09月15日 00:09
  • 5KB
  • 下载

微信二维码支付接口

扫码支付可分为两种模式,商户根据支付场景选择相应模式。
  • paymm
  • paymm
  • 2017年06月20日 14:36
  • 598

完整微信支付接口

  • 2015年11月13日 10:52
  • 9KB
  • 下载

服务器微信支付接口笔记-(与app端对接)

最近几天在做app的微信支付和支付宝支付,主要负责服务器接口。记录一下服务器这边的工作。 参考微信的官方文档链接:(有用的几个) 1 - 首先,如果想让app可以使...
  • yybj
  • yybj
  • 2016年08月23日 16:44
  • 2036

APP提现之微信商户号企业付款

微信提供的体现API出了服务号红包之外,还有商户号的企业付款,详细的API文档参照https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_...
  • pxinm
  • pxinm
  • 2016年08月12日 17:32
  • 5319

微信企业付款接口API

API介绍 简介 企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,针对部分有开发能力的商户,提供通过API完成企业付款的功能。 ...
  • QDseashore
  • QDseashore
  • 2016年01月14日 14:52
  • 7622

微信支付后台接口开发(扫码版)

一:需求 满足公司在网页上达到直接微信扫码支付的需求 二:API官方文档 参考链接:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapt...
  • m0_37625860
  • m0_37625860
  • 2017年06月28日 16:30
  • 830

微信支付接口demo

  • 2014年04月03日 22:27
  • 3.07MB
  • 下载

微信api接口常用操作

微信接入指南 https://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html 目录 1 概述 2 第一步:填写服务器...
  • u010391342
  • u010391342
  • 2017年04月13日 14:18
  • 1707

微信api接口

  • 2014年04月26日 08:44
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微信支付商户平台,企业付款,企业向个人付款接口总结
举报原因:
原因补充:

(最多只允许输入30个字)