function
Home_index() {
date_default_timezone_set(
"Asia/Shanghai"
);
$date
=
date
(
"YmdHis"
);
$appid
=
""
;
$mch_id
=
""
;
$out_trade_no
=
"14487658021497944120"
;
$op_user_id
=
""
;
$out_refund_no
=
$date
;
$total_fee
=
"500"
;
$refund_fee
=
"500"
;
$key
=
""
;
$nonce_str
= nonceStr();
$ref
=
strtoupper
(md5(
"appid=$appid&mch_id=$mch_id&nonce_str=$nonce_str&op_user_id=$op_user_id"
.
"&out_refund_no=$out_refund_no&out_trade_no=$out_trade_no&refund_fee=$refund_fee&total_fee=$total_fee"
.
"&key=$key"
));
$refund
=
array
(
'appid' =>
$appid
,
'mch_id' =>
$mch_id
,
'nonce_str' =>
$nonce_str
,
'op_user_id' =>
$op_user_id
,
'out_refund_no' =>
$out_refund_no
,
'out_trade_no' =>
$out_trade_no
,
'refund_fee' =>
$refund_fee
,
'total_fee' =>
$total_fee
,
'sign' =>
$ref
);
$url
=
"https://api.mch.weixin.qq.com/secapi/pay/refund"
;
;
$xml
= arrayToXml(
$refund
);
$ch
= curl_init();
curl_setopt(
$ch
, CURLOPT_URL,
$url
);
curl_setopt(
$ch
, CURLOPT_HEADER, 1);
curl_setopt(
$ch
, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(
$ch
, CURLOPT_SSL_VERIFYPEER, 1);
if
(
$useCert
== true) {
curl_setopt(
$ch
, CURLOPT_SSLCERTTYPE, 'pem');
curl_setopt(
$ch
, CURLOPT_SSLCERT, dirname(
__FILE__
) . '/WxPay/cert/apiclient_cert.pem');
curl_setopt(
$ch
, CURLOPT_SSLCERTTYPE, 'pem');
curl_setopt(
$ch
, CURLOPT_SSLKEY, dirname(
__FILE__
) . '/WxPay/cert/apiclient_key.pem');
curl_setopt(
$ch
, CURLOPT_SSLCERTTYPE, 'pem');
curl_setopt(
$ch
, CURLOPT_CAINFO, dirname(
__FILE__
) . '/WxPay/cert/rootca.pem');
}
curl_setopt(
$ch
, CURLOPT_POST, 1);
curl_setopt(
$ch
, CURLOPT_POSTFIELDS,
$xml
);
$xml
= curl_exec(
$ch
);
if
(
$xml
) {
curl_close(
$ch
);
libxml_disable_entity_loader(true);
$xmlstring
= simplexml_load_string(
$xml
, 'SimpleXMLElement', LIBXML_NOCDATA);
$result
['errNum'] = 0;
$result
['info'] = object_to_array(
$xmlstring
);
return
$result
;
}
else
{
$error
= curl_errno(
$ch
);
curl_close(
$ch
);
$result
['errNum'] =
$error
;
return
$result
;
}
}
function
arrayToXml(
$arr
) {
$xml
=
"<root>"
;
foreach
(
$arr
as
$key
=>
$val
) {
if
(
is_array
(
$val
)) {
$xml
.=
"<"
.
$key
.
">"
. arrayToXml(
$val
) .
"</"
.
$key
.
">"
;
}
else
{
$xml
.=
"<"
.
$key
.
">"
.
$val
.
"</"
.
$key
.
">"
;
}
}
$xml
.=
"</root>"
;
return
$xml
;
}
function
object_to_array(
$obj
) {
$obj
= (
array
)
$obj
;
foreach
(
$obj
as
$k
=>
$v
) {
if
(
gettype
(
$v
) == 'resource') {
return
;
}
if
(
gettype
(
$v
) == 'object' ||
gettype
(
$v
) == '
array
') {
$obj
[
$k
] = (
array
) object_to_array(
$v
);
}
}
return
$obj
;
}
function
nonceStr() {
$chars
=
"abcdefghijklmnopqrstuvwxyz0123456789"
;
$str
=
""
;
$length
= 32;
for
(
$i
= 0;
$i
<
$length
;
$i
++) {
$str
.=
substr
(
$chars
, mt_rand(0,
strlen
(
$chars
) - 1), 1);
}
return
$str
;
}
Home_index();