本人是在支付成功后的nofity.php进行操作的:public下的notify.php中
require_once "cash.php";
$obj = array();
$obj['openid'] = “”; //奖励人的openid
$obj['amount'] = $goods_data['xia_dan_money'] * 100;
$obj['desc'] = "分享奖励";
$obj['mch_appid'] = “”;
$obj['mchid'] = “”;
$obj['partner_trade_no'] = $setting_data['mchid'] . date('YmdHis') . rand(1000, 9999);
$obj['spbill_create_ip'] = $_SERVER['REMOTE_ADDR'];
$obj['check_name'] = "NO_CHECK";
$obj['re_user_name'] = "123456";
$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
$cash = new cash();
$res = $cash->payToUser($obj['openid'], $obj['desc'], $obj['amount'],$setting_data['appid'],$setting_data['mchid']);
libxml_disable_entity_loader(true);
$result = json_decode(json_encode(simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') {
echo success;
}
}
在引入的cash.php中:
<?php
/*
微信企业 支付到个人
*/
class cash
{
/**
* array转xml
*/
public function arrayToXml($arr)
{
$xml = "<xml>";
foreach ($arr as $key => $val) {
if (is_numeric($val)) {
$xml .= "<" . $key . ">" . $val . "</" . $key . ">";
} else
$xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";
}
$xml .= "</xml>";
return $xml;
}
//使用证书,以post方式提交xml到对应的接口url
/**
* 作用:使用证书,以post方式提交xml到对应的接口url
*/
function curl_post_ssl($url, $vars, $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,'./cert/apiclient_cert.pem'); //这个是证书的位置
curl_setopt($ch,CURLOPT_SSLKEY,'./cert/apiclient_key.pem'); //这个也是证书的位置
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
$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;
}
}
//企业向个人付款
public function payToUser($openid,$desc='申请提现',$amount,$setopenod,$setmch)
{
//微信付款到个人的接口
$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
$params["mch_appid"] = $setopenod ; //公众账号appid
$params["mchid"] = $setmch; //商户号 微信支付平台账号
$params["nonce_str"] = 'htds'.mt_rand(100,999); //随机字符串
$params["partner_trade_no"] = mt_rand(10000000,99999999); //商户订单号
$params["amount"] = $amount; //金额
$params["desc"] = $desc; //企业付款描述
$params["openid"] = $openid; //用户openid
$params["check_name"] = 'NO_CHECK'; //不检验用户姓名
$params['spbill_create_ip'] = $_SERVER['REMOTE_ADDR']; //获取IP
$params['key'] = config('wechat.mch.key'); //商户号的key
//生成签名(签名算法后面详细介绍)
$str = 'amount='.$params["amount"].'&check_name='.$params["check_name"].'&desc='.$params["desc"].'&mch_appid='.$params["mch_appid"].'&mchid='.$params["mchid"].'&nonce_str='.$params["nonce_str"].'&openid='.$params["openid"].'&partner_trade_no='.$params["partner_trade_no"].'&spbill_create_ip='.$params['spbill_create_ip'].'&key='.$params['key'];
//md5加密 转换成大写
$sign = strtoupper(md5($str));
$params["sign"] = $sign;//签名
$xml = $this->arrayToXml($params);
$result = $this->curl_post_ssl($url, $xml);
return $result;
}
}