<?php
$openid
=
$_SESSION
[
"openid"
];
if
(
empty
(
$openid
))
{
header('location:https:
}
}
public
function
weixin_red_packet(){
$data
['nonce_str']=
$this
->get_unique_value();
$data
['mch_id']=
"XXXXXXX"
;
$data
['mch_billno']=
$data
['mch_id'].
date
(
"ymd"
).
"XXXXXX"
.rand(1000,9999);
$data
['wxappid']=
"XXXXXXX"
;
$data
['send_name']=
"XXXXX"
;
session_start();
$data
['re_openid']=
$_SESSION
[
"openid"
];
$data
['total_amount']=
"XXXX"
;
$data
['total_num']=
"XXXX"
;
$data
['wishing']=
"XXXX"
;
$data
['client_ip']=
$_SERVER
['LOCAL_ADDR'];
$data
['act_name']=
"XXXXX"
;
$data
['remark']=
"XXXXX"
;
$appsecret
=
"XXXXXXXXXXXXXX"
;
$data
=
array_filter
(
$data
);
ksort(
$data
);
$str
=
""
;
foreach
(
$data
as
$k
=>
$v
){
$str
.=
$k
.
"="
.
$v
.
"&"
;
}
$str
.=
"key="
.
$appsecret
;
$data
['sign']=
strtoupper
(MD5(
$str
));
$url
=
"https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"
;
$xml
=
$this
->arraytoxml(
$data
);
$res
=
$this
->curl(
$xml
,
$url
);
$arr
=
$this
->xmltoarray(
$res
);
}
private
function
get_unique_value(){
$str
=uniqid(mt_rand(),1);
$str
=sha1(
$str
);
return
md5(
$str
);
}
private
function
arraytoxml(
$arr
){
$xml
=
"<xml>"
;
foreach
(
$arr
as
$k
=>
$v
){
$xml
.=
"<"
.
$k
.
">"
.
$v
.
"</"
.
$k
.
">"
;
}
$xml
.=
"</xml>"
;
return
$xml
;
}
private
function
xmltoarray(
$xml
){
libxml_disable_entity_loader(true);
$xmlstring
=simplexml_load_string(
$xml
,
"SimpleXMLElement"
,LIBXML_NOCDATA);
$arr
=json_decode(json_encode(
$xmlstring
),true);
return
$arr
;
}
private
function
curl(
$param
=
""
,
$url
) {
$postUrl
=
$url
;
$curlPost
=
$param
;
$ch
= curl_init();
curl_setopt(
$ch
, CURLOPT_URL,
$postUrl
);
curl_setopt(
$ch
, CURLOPT_HEADER, 0);
curl_setopt(
$ch
, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(
$ch
, CURLOPT_POST, 1);
curl_setopt(
$ch
, CURLOPT_POSTFIELDS,
$curlPost
);
curl_setopt(
$ch
, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt(
$ch
, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt(
$ch
,CURLOPT_SSLCERT,dirname(
__FILE__
).DIRECTORY_SEPARATOR.
'cert'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');
curl_setopt(
$ch
,CURLOPT_SSLKEY,dirname(
__FILE__
).DIRECTORY_SEPARATOR.
'cert'.DIRECTORY_SEPARATOR.'apiient_key.pem');
curl_setopt(
$ch
,CURLOPT_CAINFO,dirname(
__FILE__
).DIRECTORY_SEPARATOR.
'cert'.DIRECTORY_SEPARATOR.'rootca.pem');
$data
= curl_exec(
$ch
);
curl_close(
$ch
);
return
$data
;
}
?>