php【微信支付】企业付款到零钱
浏览量:399
最近负责楚楚街各种活动,新作的瓜分红包功能,达到条件后直接把钱打到用户微信零钱里面。
微信文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1
自己写了一个小例子,实现方式:
<?php define("MCHAPPID","wx*************");//商户的应用appid define("MCHID","12***************");//商户ID define("NAMEOPENID","oi**************");//用户openid define("MD5KEY", "QL*******************"); //支付密钥签名 $data = array( "check_name"=>"FORCE_CHECK", "re_user_name"=>"梁慧菊", "openid" => NAMEOPENID, "amount" => 100, "desc" => "测试瓜分红包,企业站直接付款到余额", ); echo "<pre>"; $res = sendPacket_f($data); var_dump($res); die(); /** * 企业账户直接打钱到微信 * @return mixed * author :lianghuiju@chuchujie.com * function_name : sendPacket_f * datetime : 2018/7/19 * description : */ function sendPacket_f($data) { $check_name = $data['check_name']; $re_user_name = $data['re_user_name']; $openid = $data['openid']; $amount = $data['amount']; $desc = $data['desc']; if(empty($openid) || empty($amount) || empty($amount)){ $dataRes = array( "return_code"=> "SUCCESS", "return_msg"=> "参数错误:输入的商户号有误", "result_code"=> "FAIL", "err_msg"=> $data ); return $dataRes; } $data['check_name'] = $check_name;//NO_CHEC不用验证真实姓名,FORCE_CHECK验证真实姓名;这个是设置是否检测用户真实姓名的 $data['re_user_name'] = $re_user_name;//用户的真实名字 $time = time(); $partner_trade_no = 'FA' . $time . mt_rand(100, 10000); $data['mch_appid'] = MCHAPPID; $data['mchid'] = MCHID; $data['nonce_str'] = unicode();//字符串算法 $data['partner_trade_no'] = $partner_trade_no;//订单号。 $data['openid'] = $openid;//用户的openid $data['amount'] = $amount;//提现金额 分 $data['desc'] = $desc ? $desc : '楚楚街活动红包';//订单描述 $data['spbill_create_ip'] = $_SERVER['SERVER_ADDR'];//服务器的ip $data['sign'] = _encode($data);//这个就是个码API密。32位的MD5 $xml = arraytoxml($data); $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; $res = curl($xml, $url); $return = xmltoarray($res); return $return; } /** * 唯一的字符串算法 * @return string * author :lianghuiju@chuchujie.com * function_name : unicode * datetime : 2018/7/19 * description : */ function unicode() { $str = uniqid(mt_rand(), 1); $str = sha1($str); return md5($str); } /** * 数组传为xml字符串 * @param $data * @return string * author :lianghuiju@chuchujie.com * function_name : arraytoxml * datetime : 2018/7/19 * description : */ function arraytoxml($data) { $str = '<xml>'; foreach ($data as $k => $v) { $str .= '<' . $k . '>' . $v . '</' . $k . '>'; } $str .= '</xml>'; return $str; } /** * 字符串xml转化成数组 * @param $xml * @return mixed * author :lianghuiju@chuchujie.com * function_name : xmltoarray * datetime : 2018/7/19 * description : */ function xmltoarray($xml) { //禁止引用外部xml实体 libxml_disable_entity_loader(true); $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $val = json_decode(json_encode($xmlstring), true); return $val; } /** * curl请求 * @param string $param * @param $url * @return mixed * author :lianghuiju@chuchujie.com * function_name : curl * datetime : 2018/7/19 * description : */ function curl($param = "", $url) { $postUrl = $url; $curlPost = $param; $ch = curl_init(); //初始化curl curl_setopt($ch, CURLOPT_URL, $postUrl); //抓取指定网页 curl_setopt($ch, CURLOPT_HEADER, 0); //设置header curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上 curl_setopt($ch, CURLOPT_POST, 1); //post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); // 增加 HTTP Header(头)里的字段 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 终止从服务端进行验证 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSLCERT, getcwd() . '/cert/apiclient_cert.pem'); //这个是证书的位置 curl_setopt($ch, CURLOPT_SSLKEY, getcwd() . '/cert/apiclient_key.pem'); //这个也是证书的位置 $data = curl_exec($ch); //运行curl curl_close($ch); return $data; } /** * 加密函数 * @param 请求的参数 * @return string 加密串 */ function _encode($data) { //签名步骤一:按字典序排序参数 ksort($data); $buff = ""; foreach ($data as $k => $v) { if ($k != "sign" && $v != "" && !is_array($v)) { $buff .= $k . "=" . $v . "&"; } } $string = trim($buff, "&"); //签名步骤二:在string后加入KEY $string = $string . "&key=".MD5KEY; //签名步骤三:MD5加密 $string = md5($string); //签名步骤四:所有字符转为大写 $result = strtoupper($string); return $result; }
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。