/**
* 公众号发红包
* @param string $openid 用户openID
* @param string $money 金额
* @param string $trade_no 订单编号
* @param string $act_name 活动名称
* @return multitype 支付结果
*/
public function sendredpack($openid,$money,$trade_no,$act_name){
$config = $this->config;
$data = array(
'nonce_str' => self::getNonceStr(),
'mch_billno' => $trade_no,
'mch_id' => $config['mch_id'],
'wxappid' => $config['wxappid'],
'send_name' => '江南极客',
're_openid' => $openid,
'total_amount' => $money * 100, //付款金额单位为分
'total_num' => 1,
'wishing' => '祝您天天开心!',
'client_ip' => self::getip(),
'act_name' => $act_name,
'remark' => 'From 江南极客'
);
$data['sign'] = self::makeSign($data);
//构造XML数据
$xmldata = self::array2xml($data);
$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';
//发送post请求
$res = self::curl_post_ssl($url, $xmldata);
if(!$res){
return array('status'=>0, 'msg'=>"Can't connect the server" );
}
// 这句file_put_contents是用来查看服务器返回的结果 测试完可以删除了
//file_put_contents('./log.txt',$res,FILE_APPEND);
$content = self::xml2array($res);
if(strval($content['return_code']) == 'FAIL'){
return array('status'=>0, 'msg'=>strval($content['return_msg']));
}
if(strval($content['result_code']) == 'FAIL'){
return array('status'=>0, 'msg'=>strval($content['err_code']).':'.strval($content['err_code_des']));
}
return $content;
}
/**
* 公众号企业支付
* @param string $openid 用户openID
* @param string $money 金额
* @param string $trade_no 订单编号
* @param string $desc 付款操作说明信息(比如:提现)
* @return string 支付结果
*/
public function mchpay($openid,$money,$trade_no,$desc){
$config = $this->config;
$data = array(
'mch_appid' => $config['wxappid'],
'mchid' => $config['mch_id'],
'nonce_str' => self::getNonceStr(),
'partner_trade_no' => $trade_no,
'openid' => $openid,
'check_name'=> 'NO_CHECK', //OPTION_CHECK不强制校验真实姓名, FORCE_CHECK:强制 NO_CHECK:
'amount' => $money * 100, //付款金额单位为分
'desc' => $desc,
'spbill_create_ip' => self::getip()
);
//生成签名
$data['sign'] = self::makeSign($data);
//return $config;
//构造XML数据
$xmldata = self::array2xml($data);
$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
//发送post请求
$res = self::curl_post_ssl($url, $xmldata);
if(!$res){
return array('status'=>0, 'msg'=>"Can't connect the server" );
}
// 这句file_put_contents是用来查看服务器返回的结果 测试完可以删除了
//file_put_contents('./log1.txt',$res,FILE_APPEND);
//付款结果分析
$content = self::xml2array($res);
if(strval($content['return_code']) == 'FAIL'){
return array('status'=>0, 'msg'=>strval($content['return_msg']));
}
if(strval($content['result_code']) == 'FAIL'){
return array('status'=>0, 'msg'=>strval($content['err_code']).':'.strval($content['err_code_des']));
}
return $content;
}这是封装好的类,调用方法也超级简单:
include 'wxmerpay.class.php'; //引入类文件 $config = array( 'wxappid' => 'wx123456789', 'mch_id' => '1123456781', 'pay_apikey' => '1234567898765432123456789', 'api_cert' => $cert_path . '/apiclient_cert.pem', 'api_key' => $cert_path . '/apiclient_key.pem', 'rootca' => $cert_path . '/rootca.pem' ); $redpack = new WxRedpack($config); //初始化 $redpack->sendredpack($openid,$money,$trade_no,$act_name); //发红包
就这么简单吗?对!就这么简单,然而这里边使用了很多自己封装的函数方法,源码下载:http://download.csdn.net/download/sinat_35861727/9956485
如果真的感觉好用,请点个赞留个好评,谢谢!有问题也可以评论区告诉我!
相关推荐:
以上就是微信公众号发红包和企业付款实现方法的详细内容,更多请关注php中文网其它相关文章!
……