您好,登錄后才能下訂單哦!
小編給大家分享一下微信公眾號發紅包和企業付款的實現方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
微信現金紅包,是微信支付商戶平臺提供的營銷工具之一,上線以來深受廣大商戶與用戶的喜愛。商戶可以通過本平臺向微信支付用戶發放現金紅包。用戶領取紅包后,資金到達用戶微信支付零錢賬戶,在日常運營中為商戶的營銷活動帶來熱烈的反響。
1.發紅包不需要支付授權目錄,但是需要在商戶后臺調用紅包Api的IP地址,也就是你的發起紅包請求的服務器的IP,操作路徑::【登錄商戶平臺——>產品中心——>現金紅包——>產品設置】(注:“產品設置”操作按鈕僅當你開通現金紅包功能之后才會出現)。
2.發紅包需要Api證書。
3.在發放現金紅包之前,請確保你的資金充足。別人通過在你的平臺買東西微信支付付給你的錢和你發紅包需要支出的錢不在一起,這里的錢需要單獨充值的,操作路徑:【登錄商戶平臺——>賬戶中心——>資金管理——>充值】。
4.發紅包可以借權的,比如公眾號A是開通了微信支付的認證服務號,你的活動在公眾號B(訂閱號服務號均可)中舉辦,公眾號B可以使用A的微信支付發紅包,但是發紅包需要知道用戶的openid,獲取這個openid的時候也需要借用公眾號A來獲取,也就是通過A發紅包的這個openid就必須是該用戶對應于A的openid。
操作前期準備,也就是微信支付商戶平臺的一些配置,請參看文檔:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_3&index=2
其實微信公眾號發紅包和微信公眾號企業付款差不多,我也就順帶把企業付款再整理一下,好了話不多說,直接上代碼:
/** * 公眾號發紅包 * @param string $openid 用戶openID * @param string $money 金額 * @param string $trade_no 訂單編號 * @param string $act_name 活動名稱 * @return multitype 支付結果 */ 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' => '祝您天天開心!', 'client_ip' => self::getip(), 'act_name' => $act_name, 'remark' => 'From 江南極客' ); $data['sign'] = self::makeSign($data); //構造XML數據 $xmldata = self::array2xml($data); $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack'; //發送post請求 $res = self::curl_post_ssl($url, $xmldata); if(!$res){ return array('status'=>0, 'msg'=>"Can't connect the server" ); } // 這句file_put_contents是用來查看服務器返回的結果 測試完可以刪除了 //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; } /** * 公眾號企業支付 * @param string $openid 用戶openID * @param string $money 金額 * @param string $trade_no 訂單編號 * @param string $desc 付款操作說明信息(比如:提現) * @return string 支付結果 */ 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不強制校驗真實姓名, FORCE_CHECK:強制 NO_CHECK: 'amount' => $money * 100, //付款金額單位為分 'desc' => $desc, 'spbill_create_ip' => self::getip() ); //生成簽名 $data['sign'] = self::makeSign($data); //return $config; //構造XML數據 $xmldata = self::array2xml($data); $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; //發送post請求 $res = self::curl_post_ssl($url, $xmldata); if(!$res){ return array('status'=>0, 'msg'=>"Can't connect the server" ); } // 這句file_put_contents是用來查看服務器返回的結果 測試完可以刪除了 //file_put_contents('./log1.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; }
這是封裝好的類,調用方法也超級簡單:
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); //發紅包
以上是“微信公眾號發紅包和企業付款的實現方法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。