溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

微信公眾號(hào)發(fā)紅包和企業(yè)付款的實(shí)現(xiàn)方法

發(fā)布時(shí)間:2021-03-06 14:50:16 來(lái)源:億速云 閱讀:352 作者:小新 欄目:移動(dòng)開(kāi)發(fā)

小編給大家分享一下微信公眾號(hào)發(fā)紅包和企業(yè)付款的實(shí)現(xiàn)方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

微信現(xiàn)金紅包,是微信支付商戶平臺(tái)提供的營(yíng)銷工具之一,上線以來(lái)深受廣大商戶與用戶的喜愛(ài)。商戶可以通過(guò)本平臺(tái)向微信支付用戶發(fā)放現(xiàn)金紅包。用戶領(lǐng)取紅包后,資金到達(dá)用戶微信支付零錢賬戶,在日常運(yùn)營(yíng)中為商戶的營(yíng)銷活動(dòng)帶來(lái)熱烈的反響。
1.發(fā)紅包不需要支付授權(quán)目錄,但是需要在商戶后臺(tái)調(diào)用紅包Api的IP地址,也就是你的發(fā)起紅包請(qǐng)求的服務(wù)器的IP,操作路徑::【登錄商戶平臺(tái)——>產(chǎn)品中心——>現(xiàn)金紅包——>產(chǎn)品設(shè)置】(注:“產(chǎn)品設(shè)置”操作按鈕僅當(dāng)你開(kāi)通現(xiàn)金紅包功能之后才會(huì)出現(xiàn))。
2.發(fā)紅包需要Api證書(shū)。
3.在發(fā)放現(xiàn)金紅包之前,請(qǐng)確保你的資金充足。別人通過(guò)在你的平臺(tái)買東西微信支付付給你的錢和你發(fā)紅包需要支出的錢不在一起,這里的錢需要單獨(dú)充值的,操作路徑:【登錄商戶平臺(tái)——>賬戶中心——>資金管理——>充值】。
4.發(fā)紅包可以借權(quán)的,比如公眾號(hào)A是開(kāi)通了微信支付的認(rèn)證服務(wù)號(hào),你的活動(dòng)在公眾號(hào)B(訂閱號(hào)服務(wù)號(hào)均可)中舉辦,公眾號(hào)B可以使用A的微信支付發(fā)紅包,但是發(fā)紅包需要知道用戶的openid,獲取這個(gè)openid的時(shí)候也需要借用公眾號(hào)A來(lái)獲取,也就是通過(guò)A發(fā)紅包的這個(gè)openid就必須是該用戶對(duì)應(yīng)于A的openid。

操作前期準(zhǔn)備,也就是微信支付商戶平臺(tái)的一些配置,請(qǐng)參看文檔:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_3&index=2

其實(shí)微信公眾號(hào)發(fā)紅包和微信公眾號(hào)企業(yè)付款差不多,我也就順帶把企業(yè)付款再整理一下,好了話不多說(shuō),直接上代碼:

/**
 * 公眾號(hào)發(fā)紅包
 * @param string $openid 	用戶openID
 * @param string $money 	金額
 * @param string $trade_no  訂單編號(hào)
 * @param string $act_name  活動(dòng)名稱
 * @return multitype 		支付結(jié)果
 */
public function sendredpack($openid,$money,$trade_no,$act_name){
	$config = $this->config;
	
	$data = array(
		'nonce_str' 		=> self::getNonceStr(),
		'mch_billno'     	=> $trade_no,
		'mch_id' 			=> $config['mch_id'],
		'wxappid' 			=> $config['wxappid'],
		'send_name' 		=> '江南極客',
		're_openid'    		=> $openid,
		'total_amount'    	=> $money * 100, //付款金額單位為分
		'total_num'    		=> 1,
		'wishing'      		=> '祝您天天開(kāi)心!',
		'client_ip' 		=> self::getip(),
		'act_name' 			=> $act_name,
		'remark' 			=> 'From 江南極客'
	);
	
	$data['sign'] = self::makeSign($data);
	
	//構(gòu)造XML數(shù)據(jù)
	$xmldata = self::array2xml($data);
	
	$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';
	//發(fā)送post請(qǐng)求
	$res = self::curl_post_ssl($url, $xmldata);
	
	if(!$res){
		return array('status'=>0, 'msg'=>"Can't connect the server" );
	}
	
	// 這句file_put_contents是用來(lái)查看服務(wù)器返回的結(jié)果 測(cè)試完可以刪除了
	//file_put_contents('./log.txt',$res,FILE_APPEND);
	
	$content = self::xml2array($res);
	if(strval($content['return_code']) == 'FAIL'){
		return array('status'=>0, 'msg'=>strval($content['return_msg']));
	}
	if(strval($content['result_code']) == 'FAIL'){
		return array('status'=>0, 'msg'=>strval($content['err_code']).':'.strval($content['err_code_des']));
	}
	return $content;
}
	
/**
 * 公眾號(hào)企業(yè)支付
 * @param string $openid 	用戶openID
 * @param string $money 	金額
 * @param string $trade_no  訂單編號(hào)
 * @param string $desc  	付款操作說(shuō)明信息(比如:提現(xiàn))
 * @return string 	支付結(jié)果
 */
public function mchpay($openid,$money,$trade_no,$desc){
	$config = $this->config;
	$data = array(
		'mch_appid' => $config['wxappid'],
		'mchid'     => $config['mch_id'],
		'nonce_str' => self::getNonceStr(),
		'partner_trade_no' => $trade_no, 
		'openid'    => $openid,
		'check_name'=> 'NO_CHECK', 			//OPTION_CHECK不強(qiáng)制校驗(yàn)真實(shí)姓名, FORCE_CHECK:強(qiáng)制 NO_CHECK:
		'amount'    => $money * 100, 		//付款金額單位為分
		'desc'      => $desc,
		'spbill_create_ip' => self::getip()
	);
	
	//生成簽名
	$data['sign'] = self::makeSign($data);
	
	//return $config;
	
	//構(gòu)造XML數(shù)據(jù)
	$xmldata = self::array2xml($data);
	$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
	//發(fā)送post請(qǐng)求
	$res = self::curl_post_ssl($url, $xmldata);
	if(!$res){
		return array('status'=>0, 'msg'=>"Can't connect the server" );
	}
	// 這句file_put_contents是用來(lái)查看服務(wù)器返回的結(jié)果 測(cè)試完可以刪除了
	//file_put_contents('./log1.txt',$res,FILE_APPEND);
	
	//付款結(jié)果分析
	$content = self::xml2array($res);
	if(strval($content['return_code']) == 'FAIL'){
		return array('status'=>0, 'msg'=>strval($content['return_msg']));
	}
	if(strval($content['result_code']) == 'FAIL'){
		return array('status'=>0, 'msg'=>strval($content['err_code']).':'.strval($content['err_code_des']));
	}
   
	return $content;
}

這是封裝好的類,調(diào)用方法也超級(jí)簡(jiǎn)單:

include 'wxmerpay.class.php';		//引入類文件
$config = array(
	'wxappid'		=> 'wx123456789',
	'mch_id'	 	=> '1123456781',
	'pay_apikey' 	=> '1234567898765432123456789',
	'api_cert'		=> $cert_path . '/apiclient_cert.pem',	
	'api_key'		=> $cert_path . '/apiclient_key.pem',
	'rootca'		=> $cert_path . '/rootca.pem'
);
$redpack = new WxRedpack($config);	//初始化
$redpack->sendredpack($openid,$money,$trade_no,$act_name);  //發(fā)紅包

以上是“微信公眾號(hào)發(fā)紅包和企業(yè)付款的實(shí)現(xiàn)方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI