php微信发红包接口,微信企业转账&发送红包接口封装PHP(可自定义传入微信密钥信息)...

class OtherWxApi{

private $str_secret_key = "商户API密钥";

private $str_mch_id = "商户ID";

private $str_apiclient_cert_file = "/lib/wx_jsapi/apiclient_cert.pem";//证书路径

private $str_apiclient_key_file = "/lib/wx_jsapi/apiclient_key.pem";//证书KEY

private $url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";

private $str_pay_to_user_url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; //企业向微信用户个人付款

private $str_get_order_url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/gettransferinfo";//查询企业支付

private $str_send_hongbao_url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";

private $str_get_hongbao_order_url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo";

//签名算法

function get_sign($arr_vars = array(),$str_secret_key = ""){

$arr_data = array();

ksort($arr_vars);

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

$arr_data[] = "{$k}={$v}";

}

$str_a = implode("&",$arr_data) ."&key=". $str_secret_key;

return strtoupper(md5($str_a));

}

//构建post参数

function get_fields_xml($arr_vars = array()){

$arr_vars["nonce_str"] = $this->get_nonce_str();//随机串

$arr_vars["mch_id"] = $this->str_mch_id;//商户ID

$arr_vars["mch_billno"] = $this->get_mch_billno($arr_vars["mch_id"]);//支付订单号

$arr_vars["wxappid"] = "公众号ID";

$arr_vars["send_name"] = "公众号名称";

$arr_vars["client_ip"] = "IP地址";

$str_sign = $this->get_sign($arr_vars);

$arr_vars["sign"] = $str_sign;

$str_xml = $this->array2xml($arr_vars);

return $str_xml;

}

//数组转xml;

function array2xml($arr_data){

$str_xml = "";

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

$str_xml .= "{$k}>

";

}

$str_xml .= "";

return $str_xml;

}

/*

*发送红包

*参数为数组 $arr_vars

*@re_openid = 接收红包的用户open_id

*@total_amount = 发送红包的金额

*@total_num = 红包数量

*@wishing = 祝福语

*@act_name = 活动名称

*@remark = 备注

*/

function send_redpark($arr_vars){

if(empty($arr_vars)){

return false;

}

$str_vars = $this->get_fields_xml($arr_vars);

$mix_result = $this->curl_post_ssl($this->url,$str_vars);

return $mix_result;

}

//获取一个随机32字符串

function get_nonce_str(){

return md5(rand(10,100000));

}

//获取一个订单号

function get_mch_billno($str_mch_id){

$str_microtime = microtime();

$str_microtime = substr($str_microtime,2,8);

$str_microtime .= rand(10,99);

return $str_mch_id.date("Ymd").$str_microtime;

}

//发送post请求

function curl_post_ssl($url, $vars, $cert_file = "", $key_file = "",$second=30,$aHeader=array()){

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

//cert 与 key 分别属于两个.pem文件

//默认格式为PEM,可以注释

//var_dump($this->str_apiclient_cert_file);

//var_dump($this->str_apiclient_key_file);

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

curl_setopt($ch,CURLOPT_SSLCERT,$cert_file);

//默认格式为PEM,可以注释

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

curl_setopt($ch,CURLOPT_SSLKEY,$key_file);

if( count($aHeader) >= 1 ){

curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);

}

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

return "call faild, errorCode:$error

";

curl_close($ch);

}

}

/**

* 作用:将xml转为array

*/

public function xmlToArray($xml) {

//将XML转为array

$array_data = json_decode(json_encode(simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOCDATA)), true);

return $array_data;

}

//(企业向微信用户个人付款 ) 构造xml

function create_pay_to_user_params_xml($arr_params){

$arr_data = array();

$arr_data["mch_appid"] = $arr_params["appid"]; //公众账号appid

$arr_data["mchid"] = $arr_params["mch_id"]; //商户号

//$arr_data["device_info"] = ""; //设备号

$arr_data["nonce_str"] = $this->get_nonce_str(); //随机字符串

$arr_data["partner_trade_no"] = $arr_params["partner_trade_no"]; //商户订单号

$arr_data["openid"] = $arr_params["open_id"]; //用户openid

$arr_data["check_name"] = $arr_params["check_name"]; //校验用户姓名选项

if(@!empty($arr_params["re_user_name"])){

$arr_data["re_user_name"] = $arr_params["re_user_name"];//收款用户姓名

}

$arr_data["amount"] = $arr_params["amount"]; //金额

$arr_data["desc"] = $arr_params["desc"]; //企业付款描述信息

$arr_data["spbill_create_ip"] = $arr_params["spbill_create_ip"]; //Ip地址

$arr_data["sign"] = $this->get_sign($arr_data,$arr_params["api_key"]); //签名

return $this->array2xml($arr_data);

}

//发起企业付款请求

function mch_pay($xml_content,$cert_file,$key_file){

return $this->curl_post_ssl($this->str_pay_to_user_url, $xml_content, $cert_file, $key_file);

}

/*

* 获取企业支付转账流水

*/

function get_qiye_status($xml_content,$cert_file,$key_file){

return $this->curl_post_ssl($this->str_get_order_url, $xml_content, $cert_file, $key_file);

}

//(查询企业支付) 构造xml

function create_get_order_params_xml($arr_params){

$arr_data = array();

$arr_data["nonce_str"] = $this->get_nonce_str(); //随机字符串

$arr_data["partner_trade_no"] = $arr_params["partner_trade_no"]; //商户订单号

$arr_data["mch_id"] = $arr_params["mch_id"]; //商户号

$arr_data["appid"] = $arr_params["appid"]; //公众账号appid

$arr_data["sign"] = $this->get_sign($arr_data,$arr_params["api_key"]); //签名

return $this->array2xml($arr_data);

}

//(微信红包 ) 构造xml

function create_send_hongbao_params_xml($arr_params){

$arr_data = array();

$arr_data["nonce_str"] = $this->get_nonce_str(); //随机字符串

$arr_data["mch_billno"] = $arr_params["mch_billno"]; //商户订单号

$arr_data["mch_id"] = $arr_params["mch_id"]; //商户号

$arr_data["wxappid"] = $arr_params["wxappid"]; //公众账号appid

$arr_data["send_name"] = $arr_params["send_name"]; //商户名称

$arr_data["nick_name"] = $arr_params["nick_name"]; //商户名称

$arr_data["re_openid"] = $arr_params["re_openid"]; //用户openid

$arr_data["total_amount"] = $arr_params["total_amount"]; //金额

$arr_data["total_num"] = 1; //红包发放总人数

$arr_data["wishing"] = $arr_params["wishing"]; //企业付款描述信息

$arr_data["client_ip"] = $arr_params["client_ip"]; //Ip地址

$arr_data["act_name"] = $arr_params["act_name"]; //Ip地址

$arr_data["remark"] = $arr_params["remark"]; //Ip地址

// $arr_data["scene_id"] = $arr_params["scene_id"]; //校验用户姓名选项

$arr_data["sign"] = $this->get_sign($arr_data,$arr_params["api_key"]); //签名

return $this->array2xml($arr_data);

}

/*

* 微信现金红包

*/

function mch_pay_hongbao($xml_content,$cert_file,$key_file){

return $this->curl_post_ssl($this->str_send_hongbao_url, $xml_content, $cert_file, $key_file);

}

//(查询微信现金红包) 构造xml

function create_get_hongbao_order_params_xml($arr_params){

$arr_data = array();

$arr_data["nonce_str"] = $this->get_nonce_str(); //随机字符串

$arr_data["mch_billno"] = $arr_params["mch_billno"]; //商户订单号

$arr_data["mch_id"] = $arr_params["mch_id"]; //商户号

$arr_data["appid"] = $arr_params["appid"]; //公众账号appid

$arr_data["bill_type"] = $arr_params["bill_type"]; //商户名称

$arr_data["sign"] = $this->get_sign($arr_data,$arr_params["api_key"]); //签名

return $this->array2xml($arr_data);

}

/*

* 查询微信现金红包

*/

function get_hongbao_status($xml_content,$cert_file,$key_file){

return $this->curl_post_ssl($this->str_get_hongbao_order_url, $xml_content, $cert_file, $key_file);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值