微信企业支付到零钱

前几天做个微信企业付款到零钱,代码就贴出来了
class WXCompanyPay
{private $appId;private $appSecret;private $APPNO;private $APPKEY;public function __construct(){$this->appId = Tools::APPID;$this->appSecret = Tools::APPSECRET;$this->APPNO =Tools::APPNO;$this->APPKEY = "商户key";}/*** 微信企业付款到零钱** 商户账号appid         mch_appid* 商户号                mchid* 随机字符串            nonce_str* 签名                 sign* 商户订单号            partner_trade_no* 用户openid           openid* 校验用户姓名选项       check_name* 收款用户姓名(可选)     re_user_name* 金额                 amount* 企业付款描述信息       desc* Ip地址               spbill_create_ip*/public function weixin_pay_person(){//获取所需参数$data['mch_appid'] = $this->appId;$data['mchid'] = $this->APPNO;$data['nonce_str'] = Tools::getNonceStr();$data['partner_trade_no'] = Tools::getOrderNo();$data['openid'] = '用户openId';$data['check_name'] = 'NO_CHECK';$data['amount'] = '100';$data['desc'] = '恭喜您提现成功';$data['spbill_create_ip'] = Tools::get_client_ip();//签名$sign = self::sign($data,$this->APPKEY);$data['sign'] = $sign;//付款到零钱接口地址$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";//将请求数据由数组转换成xml$dataXml = Tools::arrayToXml($data);//进行请求操作$result = self::curl($url,$dataXml);//将请求结果由xml转换成数组$dataArray = Tools::xmlToArray($result);return $dataArray;}/*** @param $params* @return string* 签名 自动排序*/public function sign($params, $appsecret){ksort($params);$beSign = array_filter($params, 'strlen');$pairs = array();foreach ($beSign as $k => $v) {$pairs[] = "$k=$v";}$sign_data = implode('&', $pairs);$sign_data .= '&key=' . $appsecret;return strtoupper(md5($sign_data));}/*** @param $url* @param $data* @param $headers* @return mixed*/private function curl($url,$data,$second = 30,$headers){$curl = curl_init();//超时时间curl_setopt($curl,CURLOPT_TIMEOUT,$second);if (count($headers) >= 1) {curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);}curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);if (!empty($data)) {curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);}curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//证书位置curl_setopt($curl,CURLOPT_SSLCERTTYPE,'PEM');curl_setopt($curl,CURLOPT_SSLCERT,'商户平台证书位置');     注:证书路径一定要为项目绝对路径curl_setopt($curl,CURLOPT_SSLKEYTYPE,'PEM');curl_setopt($curl,CURLOPT_SSLKEY, '商户平台证书位置');$output = curl_exec($curl);if($output){curl_close($curl);return $output;}else{$error = curl_errno($curl);echo "call faild, errorCode:$error\n";die();curl_close($ch);return false;}}

    代码就是这样了,但是在测试的过程中,结果一直返回为空,我打印了一下curl返回false, 因为是二开项目,我心里想是不是之前代码对curl请求做了什么限制,然而并没有,最后发现是我的证书位置写的是相对路径,证书一定要是绝对路径,切记

 

 

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部