微信支付+服务器+php代码,php 微信支付企业付款(示例代码)

/**

* 格式化参数格式化成url参数*/

public function ToUrl($arr)

{$buff = "";foreach ($arr as $k => $v)

{if($k != "sign" && $v != "" && !is_array($v)){$buff .= $k . "=" . $v . "&";

}

}$buff = trim($buff, "&");return $buff;

}//将乱序的数组

public function ToSign($arr,$key)

{//签名步骤一:按字典序排序参数

ksort($arr);$string = ToUrl($arr);//签名步骤二:在string后加入KEY

$string = $string . "&key=".$key;//签名步骤三:MD5加密

$string = md5($string);//签名步骤四:所有字符转为大写

// $result1 = strtoupper($string);

return $string;

}/**

* 输出xml字符

* @throws WxPayException

**/

public static function ToXml($arr)

{if(!is_array($arr) || count($arr) <= 0)

{echo ‘数据异常‘;

}$xml = "";foreach ($arr as $key=>$val)

{if (is_numeric($val)){$xml.="".$val."".$key.">";

}else{$xml.="".$key.">";

}

}$xml.="";return $xml;

}/**

* zll 生成唯一订单号*/

public functionorder_sn(){$str = "qyfk".uniqid();return $str;

}/**

* zll 将信息提交到微信服务器,发起企业付款*/

public function qyzf_post($url,$xml,$config,$second=30){$ch =curl_init();

curl_setopt($ch,CURLOPT_TIMEOUT,$second);

curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//curl_setopt($ch,CURLOPT_SSLCERT,"/home/lizi/addons/grow/template/mobile/cash/apiclient_cert.pem");

// curl_setopt($ch,CURLOPT_SSLKEY,"/home/lizi/addons/grow/template/mobile/cash/apiclient_key.pem");

$str = ‘D:/www/‘;//证书必须使用绝对路径,否则报错,错误貌似是52什么的

curl_setopt($ch,CURLOPT_SSLCERTTYPE,‘PEM‘);

curl_setopt($ch,CURLOPT_SSLCERT,$str.trim($config[‘apiclient_cert‘],‘.‘));

curl_setopt($ch,CURLOPT_SSLKEYTYPE,‘PEM‘);

curl_setopt($ch,CURLOPT_SSLKEY,$str.trim($config[‘apiclient_key‘],‘.‘));

curl_setopt($ch,CURLOPT_POST, 1);

curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);$data = curl_exec($ch);if($data){

curl_close($ch);return $data;

}else{$error = curl_errno($ch);echo "call faild, errorCode:$error\n";

curl_close($ch);return false;

}

}/**

* zll 企业付款*/

public function qiyezhifu($data){//解释amount为付款金额,单位分,貌似最低1元,desc为付款的描述(必填),ip就是服务器ip必填

//$data = array(‘wxappid‘=>14,‘openid‘=>‘oRyzq0LrtuqKqQdH-FubBqcMuTi8-‘,‘amount‘=>100,‘desc‘=>‘提现奖励‘,‘ip‘=>‘123.207.19.254‘);

//获取数据库的支付配置信息

$config = get_pay_conf($data[‘wxappid‘]);if($config){//对必备参数进行有效性判断

if(empty($config[‘appid‘]) || empty($config[‘shh‘]) || empty($config[‘partnerkey‘]) || empty($data[‘amount‘]) || empty($config[‘apiclient_cert‘]) || empty($config[‘apiclient_key‘])){throw new Exception("支付配置中的appid或商户号或支付秘钥不能为空,或支付金额不能为空");

}else{$da[‘mch_appid‘] = $config[‘appid‘]; //appid

$da[‘mchid‘] = $config[‘shh‘]; //商户号

$da[‘nonce_str‘] = $this->getStr(32); //随机字符串

$da[‘partner_trade_no‘] = $this->order_sn(); //订单号,保持唯一性即可

$da[‘openid‘] = $data[‘openid‘]; //粉丝的openid

$da[‘check_name‘] = "NO_CHECK"; //NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账) OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)

//$da[‘re_user_name‘] = ""; //收款用户真实姓名。 如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名

$da[‘amount‘] = $data[‘amount‘]; //付款金额,单位分

$da[‘desc‘] = $data[‘desc‘] ? $data[‘desc‘]:"提现奖励"; //企业付款描述信息

$da[‘spbill_create_ip‘] = $data[‘ip‘] ? $data[‘ip‘] : "123.207.19.254"; //服务器ip

$da[‘sign‘] = $this->ToSign($da, $config[‘partnerkey‘]);//生成签名

//$da[‘key‘] = $config[‘partnerkey‘]; //支付秘钥

//将数组转为xml

$xml = $this->ToXml($da);$url = ‘https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers‘;$this->qyzf_post($url,$xml,$config);

}

}else{return false;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值