微信支付企业付款到零钱

64 阅读1分钟

public function createNoncestr($length =32)

{

$chars = "abcdefghijklmnopqrstuvwxyz0123456789";

$str ="";

for ( i=0;i = 0; i < length;length; i++ ) {

str.=substr(str.= substr(chars, mt_rand(0, strlen($chars)-1), 1);

}

return $str;

}

public function unicode() {

$str = uniqid(mt_rand(),1);

str=sha1(str=sha1(str);

return md5($str);

}

public function arraytoxml($data){

$str=' ';

foreach(dataasdata as k=>$v) {

str.=<.str.='<'.k.'>'.v.</.v.'</'.k.'>';

}

$str.='';

return $str;

}

public function xmltoarray($xml) {

//禁止引用外部xml实体

libxml_disable_entity_loader(true);

xmlstring=simplexmlloadstring(xmlstring = simplexml_load_string(xml, 'SimpleXMLElement', LIBXML_NOCDATA);

val=jsondecode(jsonencode(val = json_decode(json_encode(xmlstring),true);

return $val;

}

public function curl(param="",param="",url) {

postUrl=postUrl = url;

curlPost=curlPost = param;

$ch = curl_init(); //初始化curl

curl_setopt(ch,CURLOPTURL,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,CURLOPTPOSTFIELDS,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,'/apiclient_cert.pem'); //这个是证书的位置绝对路径

curl_setopt($ch,CURLOPT_SSLKEY,'/apiclient_key.pem'); //这个也是证书的位置绝对路径

data=curlexec(data = curl_exec(ch); //运行curl

curl_close($ch);

return $data;

}

/*

$amount 发送的金额(分)目前发送金额不能少于1元

$re_openid, 发送人的 openid

$desc // 企业付款描述信息 (必填)

$check_name 收款用户姓名 (选填)

*/

public function sendMoney(desc=返现金,desc='返现金额',check_name='',$arr){

$data['mch_appid'] = 'wx09c0b2d9e0ca80ce';

data[mchid]=data['mchid'] = this->wxMerchantId;

data[noncestr]=data['nonce_str'] = this->createNoncestr();

data[partnertradeno]=data['partner_trade_no'] = arr['out_trade_no'];

$data['check_name']='NO_CHECK';

data[amount]=data['amount'] = arr['amount'];

data[reusername]=data['re_user_name'] = arr['real_name'];

data[openid]=data['openid'] = arr['account_number'];

data[spbillcreateip]=data['spbill_create_ip'] = _SERVER["REMOTE_ADDR"];

$data['desc'] ='返现金额';

secrectkey=secrect_key=this->wxApiV2Key;///这个就是个API密码。MD5 32位。

data=arrayfilter(data=array_filter(data);

ksort($data);

$str='';

foreach(dataasdata as k=>$v) {

str.=str.=k.'='.$v.'&';

}

str.=key=.str.='key='.secrect_key;

data[sign]=md5(data['sign']=md5(str);

xml=xml=this->arraytoxml($data);

$url='api.mch.weixin.qq.com/mmpaymkttra… //调用接口

res=res=this->curl(xml,xml,url);

return=return=this->xmltoarray($res);

dump($return);die;

print_r($return);

//返回来的结果

// [return_code] => SUCCESS [return_msg] => Array ( ) [mch_appid] => wxd44b890e61f72c63 [mchid] => 1493475512 [nonce_str] => 616615516 [result_code] => SUCCESS [partner_trade_no] => 20186505080216815

// [payment_no] => 1000018361251805057502564679 [payment_time] => 2018-05-15 15:29:50

responseObj=simplexmlloadstring(responseObj = simplexml_load_string(res, 'SimpleXMLElement', LIBXML_NOCDATA);

echo res=res= responseObj->return_code; //SUCCESS 如果返回来SUCCESS,则发生成功,处理自己的逻辑

return $res

}