如果需要轉賬到用戶的零錢里,需要先獲取用戶的open_id,也就是在公眾號里登錄過并保存的open_id,然后就可以實現企業付款到零錢的功能了,以下是代碼詳解:
public function index(){
$transfer['payment_id'] = '201803221552123458';//訂單號,可以自定義,但不能重復使用
$transfer['open_id'] = session('login_weixin');//用戶的open_id
$transfer['real_name'] ='張三';//用戶的真實姓名
$transfer['amount'] = 0.3;//要付款的金額;
$this->dotransfer($transfer);//調用接口
}
/*
* 付款給用戶的接口(直接調用即可完成付款)
* */
public function dotransfer($transfer,&$msg=''){
$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
$parameters = array(
'mch_appid' => C('APPID'),//綁定支付的APPID
'mchid' => C('MCHID'),//商戶號
'nonce_str' => $this->create_noncestr(32), //生成32位的隨機字符串,見圖1
'partner_trade_no' => $transfer['payment_id'], //商戶訂單號,不能重復使用
'openid' => $transfer['open_id'],//用戶的open_id
'check_name' => 'OPTION_CHECK',//是否檢查姓名
're_user_name' => $transfer['real_name'], //真實姓名
'amount' => bcmul($transfer['amount'],100,0), //企業付款金額,單位為分 最低1元
'desc' => '分銷提現',//備注
'spbill_create_ip' => strval($_SERVER['SERVER_ADDR']),//服務器IP
);
$parameters['sign'] = $this->getSign($parameters, C('KEY'));//getSign函數見圖2,C('KEY'):商戶支付密鑰
$xml = $this->arrayToXml($parameters);//函數見圖3
$response = $this->postXmlCurl($xml, $url,true);//函數見圖4
$result = $this->xmlToArray($response);//函數見圖片5
if($result['return_code']=='SUCCESS'){
if($result['result_code']=='SUCCESS'){
$this->success($transfer['payment_id'].'=payment_id 付款成功');
return true;
}else{
$this->error($result['err_code_des'].' 付款失敗');
return false;
}
}else{
$this->error('付款失敗,微信接口出現異常');
return false;
}
}
圖1
圖2
圖3
圖4
圖5
圖6
作者:方維網絡陳應信
方維網絡致力于為客戶定制互聯網解決方案,可以根據客戶需求定制系統功能,包括網站、小程序、APP等。