关注公众号:青山有路

微擎小程序企业付款到微信零钱demo

php admin 6年前 (2018-06-08) 1918次浏览 已收录 扫描二维码

微擎小程序企业付款到微信零钱

public function sendapplymoney($order,$openid){

global $_GPC, $_W;

$apply = pdo_fetch(“SELECT * FROM ” . tablename(‘exphelp_applylist’).” where  applynum = ‘”.$order[‘applynum’].”‘ and status=0 limit 1″);

if(empty($apply)){

return false;

}

if(empty($openid)){

$openid = $order[‘openid’];

}

$data = pdo_fetch(“SELECT * FROM ” . tablename(‘account_wxapp’).” where uniacid=”.$_W[‘uniacid’].” limit 1″);

$config[‘appid’] = $data[‘key’];

$paypar = pdo_fetch(“SELECT * FROM ” . tablename(‘uni_settings’).” where uniacid=”.$_W[‘uniacid’].” limit 1″);

$payment = unserialize($paypar[‘payment’]);

$config[‘mch_id’] = $payment[‘wechat’][‘mchid’];

$config[‘key’] = $payment[‘wechat’][‘signkey’];

$certs = $payment[‘wechat_refund’];

 

if(empty($certs[‘switch’])){

return false;

}

// pt($config);die;

//

$time = time();

$data = array();

$data[‘mch_appid’] = $config[‘appid’];//商户的应用appid

$data[‘mchid’] = $config[‘mch_id’];//商户IDaccount_wxapp

$data[‘nonce_str’] = $this->random(8);//这个据说是唯一的字符串下面有方法

$data[‘partner_trade_no’] = $order[‘applynum’];//.time();//这个是订单号。

$data[‘openid’] = $openid;//这个是授权用户的openid。。这个必须得是用户授权才能用

$data[‘check_name’] = ‘NO_CHECK’;//这个是设置是否检测用户真实姓名的

//$data[‘re_user_name’]=”;//用户的真实名字

// $data[‘attach’] = $_W[‘uniacid’].’:kdapplymoney’;

$data[‘amount’] = $order[‘money’]*100;//提现金额

$data[‘desc’] = ‘提现’;//订单描述

$data[‘spbill_create_ip’] = $_SERVER[‘SERVER_ADDR’];//这个最烦了,,还得获取服务器的ip

$secrect_key = $config[‘key’];///这个就是个API密码。32位的。。随便MD5一下就可以了

$data = array_filter($data);

ksort($data);

$str = ”;

foreach ($data as $k => $v) {

$str .= $k . ‘=’ . $v . ‘&’;

}

$str .= ‘key=’ . $secrect_key;

$data[‘sign’] = md5($str);

 

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

$url = ‘https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers’;

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

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

return $return;

}

function curl($param=””,$url,$certs) {

$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_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

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);

$certfile = IA_ROOT . “/addons/wx_expresshelp/cert/” . random(128).”.pem”;

file_put_contents($certfile, $certs[‘cert’]);

$keyfile = IA_ROOT . “/addons/wx_expresshelp/cert/” . random(128).”.pem”;

file_put_contents($keyfile, $certs[‘key’]);

curl_setopt($ch,CURLOPT_SSLCERT,$certfile); //这个是证书的位置

curl_setopt($ch,CURLOPT_SSLKEY,$keyfile); //这个也是证书的位

$data = curl_exec($ch);

$errs = curl_error($ch);

 

curl_close($ch);

@unlink($certfile);

@unlink($keyfile);

return $data;

}

function arraytoxml($data){

$str='<xml>’;

foreach($data as $k=>$v) {

$str.='<‘.$k.’>’.$v.'</’.$k.’>’;

}

$str.='</xml>’;

return $str;

}

 

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;

}


版权所有丨如未注明 , 均为原创 , 转载请注明微擎小程序企业付款到微信零钱demo
喜欢 (2)