大家都知道,微信支付商戶平臺(tái)如果給企業(yè)賬戶轉(zhuǎn)賬的話,是肯定可以的,但是如果給個(gè)人的話,就比較的難了,這需要去開(kāi)發(fā)出接口哦。微信支付商戶平臺(tái)轉(zhuǎn)賬到個(gè)人怎么實(shí)現(xiàn)?以下是開(kāi)發(fā)的方法了。
微信支付商戶平臺(tái)轉(zhuǎn)賬到個(gè)人怎么實(shí)現(xiàn)?
主要包含以下幾個(gè)步驟(充值、網(wǎng)頁(yè)授權(quán)獲取openid、獲取企業(yè)付款需要的信息、發(fā)出企業(yè)付款請(qǐng)求)。
1、充值
在微信商戶平臺(tái)中:資金管理->充值(由于企業(yè)付款將使用商戶的可用余額進(jìn)行支付,需確保可用余額充足。查看可用余額、充值、提現(xiàn)請(qǐng)登錄商戶平臺(tái)“資金管理”進(jìn)行操作。https://pay.weixin.qq.com/ 注意:商戶的可用余額與商戶微信支付收款資金并非同一賬戶,需要單獨(dú)充值。)
2、網(wǎng)頁(yè)授權(quán)
通過(guò)網(wǎng)頁(yè)授權(quán)獲取用戶的openid(企業(yè)向微信用戶個(gè)人付款 目前支持向指定微信用戶的openid付款。),具體獲取方法可查官方api或http://blog.csdn.net/u010533511/article/details/48085585 。
3、獲取企業(yè)付款需要的信息
$mch_appid=$appid;//公眾賬號(hào)appid
$mchid='10000005';//商戶號(hào)
$nonce_str='qyzf'.rand(100000, 999999);//隨機(jī)數(shù)
$partner_trade_no='xx'.time().rand(10000, 99999);//商戶訂單號(hào)
$openid=$openids;//用戶唯一標(biāo)識(shí),上一步授權(quán)中獲取
$check_name='NO_CHECK';//校驗(yàn)用戶姓名選項(xiàng),NO_CHECK:不校驗(yàn)真實(shí)姓名, FORCE_CHECK:強(qiáng)校驗(yàn)真實(shí)姓名(未實(shí)名認(rèn)證的用戶會(huì)校驗(yàn)失敗,無(wú)法轉(zhuǎn)賬),OPTION_CHECK:針對(duì)已實(shí)名認(rèn)證的用戶才校驗(yàn)真實(shí)姓名(未實(shí)名認(rèn)證用戶不校驗(yàn),可以轉(zhuǎn)賬成功)
$re_user_name='測(cè)試';//用戶姓名
$amount=100;//企業(yè)金額,這里是以分為單位(必須大于100分)
$desc='測(cè)試數(shù)據(jù)呀!!!';//描述
$spbill_create_ip='192.168.0.1';//請(qǐng)求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);見(jiàn)結(jié)尾
echo "-----
簽名:".$sign."
*****";//die;
//拼寫(xiě)正確的xml參數(shù)
$data="";
4、發(fā)出企業(yè)付款請(qǐng)求
$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 );
//兩個(gè)證書(shū)(必填,請(qǐng)求需要雙向證書(shū)。)
$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 "-----
請(qǐng)求返回值:";
var_dump($info);
echo "
*****";die;
更具返回值,做具體處理。
------------------------getSign()方法如下----------------------
/**
* 作用:生成簽名
*/
function getSign($Obj)
{
var_dump($Obj);//die;
foreach ($Obj as $k => $v)
{
$Parameters[$k] = $v;
}
//簽名步驟一:按字典序排序參數(shù)
ksort($Parameters);
$String = formatBizQueryParaMap($Parameters, false);//方法如下
//echo '【string1】'.$String.'
';
//簽名步驟二:在string后加入KEY
$String = $String."&key=6cd1c9cab639cb399cb371cbd893e15e";
//echo "【string2】".$String."
";
//簽名步驟三:MD5加密
$String = md5($String);
//echo "【string3】 ".$String."
";
//簽名步驟四:所有字符轉(zhuǎn)為大寫(xiě)
$result_ = strtoupper($String);
//echo "【result】 ".$result_."
";
return $result_;
}
/**
* 作用:格式化參數(shù),簽名過(guò)程需要使用
*/
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;
}
很多的微信商戶想知道微信支付商戶平臺(tái)轉(zhuǎn)賬到個(gè)人怎么實(shí)現(xiàn),所以小編去了解了下,然后整理了以上的開(kāi)發(fā)方法,相信以上的內(nèi)容可以幫您解決問(wèn)題哦。欲知更多相關(guān)的內(nèi)容,可以來(lái)開(kāi)淘網(wǎng)看看哦。
推薦閱讀:
微信支付商戶平臺(tái)登錄超時(shí)是什么原因?如何解決?
查看更多相似文章