微擎企业付款到用户
时间:2024-4-30 11:22 作者:杨佳乐 分类: PHP
public function sendMoney($openid, $money, $re_user_name = '', $desc = '', $trade_no = '')
{
global $_W;
$paysetting = uni_setting($_W['uniacid'], array('payment'));
$wechatpay = $paysetting['payment']['wechat'];
$account_info = $_W['account'];
$mchid = $wechatpay['mchid'];
$key = $wechatpay['apikey'];
$appid = $account_info['key'];
$desc = isset($desc) ? $desc : '余额提现';
$money = $money * 100;
$pars = array();
$pars['mch_appid'] = $appid;
$pars['mchid'] = $mchid;
$pars['nonce_str'] = random(32);
$pars['partner_trade_no'] = empty($trade_no) ? $mchid . date('Ymd') . rand(1000000000, 9999999999) : $trade_no;
$pars['openid'] = $openid;
if (empty($re_user_name)) {
$pars['check_name'] = 'NO_CHECK';
} else {
$pars['check_name'] = 'FORCE_CHECK';
$pars['re_user_name'] = $re_user_name;
}
// NO_CHECK:不校验真实姓名
// FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)
// OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
$pars['amount'] = $money;
$pars['desc'] = $desc;
// $pars['spbill_create_ip'] = isset($wechat['ip']) ? $wechat['ip'] : $_SERVER['SERVER_ADDR'];
$pars['spbill_create_ip'] = gethostbyname($_SERVER["SERVER_NAME"]);
// $pars['spbill_create_ip'] = $_SERVER['SERVER_ADDR'];
ksort($pars, SORT_STRING);
$string1 = '';
foreach ($pars as $k => $v) {
$string1 .= "{$k}={$v}&";
}
$string1 .= "key={$key}";
$pars['sign'] = strtoupper(md5($string1));
$xml = array2xml($pars);
$extras = array();
$path_cert = IA_ROOT . '/addons/weisrc_dish/cert/apiclient_cert_' . $_W['uniacid'] . '.pem';
$path_key = IA_ROOT . '/addons/weisrc_dish/cert/apiclient_key_' . $_W['uniacid'] . '.pem';
$path_rootca = IA_ROOT . '/addons/weisrc_dish/cert/rootca_' . $_W['uniacid'] . '.pem';
$extras['CURLOPT_CAINFO'] = $path_rootca;
$extras['CURLOPT_SSLCERT'] = $path_cert;
$extras['CURLOPT_SSLKEY'] = $path_key;
load()->func('communication');
$procResult = null;
$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
$response = ihttp_request($url, $xml, $extras);
if ($response['code'] == 200) {
$responseObj = simplexml_load_string($response['content'], 'SimpleXMLElement', LIBXML_NOCDATA);
$responseObj = (array)$responseObj;
$return['code'] = $responseObj['return_code'];
$return['result_code'] = $responseObj['result_code'];
$return['err_code'] = $responseObj['err_code'];
$return['msg'] = $responseObj['return_msg'];
$return['trade_no'] = $pars['partner_trade_no'];
$return['payment_no'] = $responseObj['payment_no'];
if ($responseObj['result_code'] != 'SUCCESS') {
print_r($responseObj);
exit;
}
return $return;
} else {
echo '证书错误:';
print_r($response);
exit;
}
}
//发放红包
public function sendRedPack($openid, $money, $send_name = '余额提现', $act_name = '余额提现', $wishing = '祝您生活愉快', $trade_no
= '')
{
global $_W;
$paysetting = uni_setting($_W['uniacid'], array('payment'));
$wechatpay = $paysetting['payment']['wechat'];
$account_info = $_W['account'];
$mchid = $wechatpay['mchid'];
$key = $wechatpay['apikey'];
$appid = $account_info['key'];
$money = $money * 100;
$num = 1;
$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
$pars = array();
$pars['wxappid'] = $appid;
$pars['mch_id'] = $mchid;
$pars['nonce_str'] = random(32);
$pars['mch_billno'] = empty($trade_no) ? $mchid . date('Ymd') . rand(1000000000, 9999999999) : $trade_no;
$pars['send_name'] = $send_name;
$pars['re_openid'] = $openid;
$pars['total_amount'] = $money;
$pars['total_num'] = $num;
$pars['wishing'] = $wishing;
// $pars['client_ip'] = isset($wechat['ip']) ? $wechat['ip'] : $_SERVER['SERVER_ADDR'];
$pars['client_ip'] = $_SERVER['SERVER_ADDR'];
$pars['act_name'] = $act_name;
$pars['remark'] = $act_name;
ksort($pars, SORT_STRING);
$string1 = '';
foreach ($pars as $k => $v) {
$string1 .= "{$k}={$v}&";
}
$string1 .= "key={$key}";
$pars['sign'] = strtoupper(md5($string1));
$xml = array2xml($pars);
$extras = array();
$path_cert = IA_ROOT . '/addons/weisrc_dish/cert/apiclient_cert_' . $_W['uniacid'] . '.pem';
$path_key = IA_ROOT . '/addons/weisrc_dish/cert/apiclient_key_' . $_W['uniacid'] . '.pem';
$path_rootca = IA_ROOT . '/addons/weisrc_dish/cert/rootca_' . $_W['uniacid'] . '.pem';
$extras['CURLOPT_CAINFO'] = $path_rootca;
$extras['CURLOPT_SSLCERT'] = $path_cert;
$extras['CURLOPT_SSLKEY'] = $path_key;
load()->func('communication');
$procResult = null;
$response = ihttp_request($url, $xml, $extras);
if ($response['code'] == 200) {
$responseObj = simplexml_load_string($response['content'], 'SimpleXMLElement', LIBXML_NOCDATA);
$responseObj = (array)$responseObj;
$return['code'] = $responseObj['return_code'];
$return['result_code'] = $responseObj['result_code'];
$return['err_code'] = $responseObj['err_code'];
$return['msg'] = $responseObj['return_msg'];
$return['trade_no'] = $pars['mch_billno']; //返回订单号 用于重试
return $return;
}
}