<?php
class
HttpClientUtil
{
public
function
sendRequest(
$type
= '',
$url
= '',
$data
= [],
$timeout
= 60)
{
try
{
$type
=
strtoupper
(
$type
);
$curl
= curl_init();
curl_setopt(
$curl
, CURLOPT_URL,
$url
);
curl_setopt(
$curl
, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(
$curl
, CURLOPT_HEADER, 0);
curl_setopt(
$curl
, CURLOPT_TIMEOUT,
$timeout
);
curl_setopt(
$curl
, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1');
if
(
substr
(
$url
, 0, 5) == 'https') {
curl_setopt(
$curl
, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt(
$curl
, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt(
$curl
, CURLOPT_HTTPHEADER, ['Content-Type:application/json']);
switch
(
$type
) {
case
"GET"
:
curl_setopt(
$curl
, CURLOPT_HTTPGET, true);
break
;
case
"POST"
:
curl_setopt(
$curl
, CURLOPT_POST, true);
curl_setopt(
$curl
, CURLOPT_POSTFIELDS, json_encode(
$data
));
break
;
case
"PUT"
:
curl_setopt(
$curl
, CURLOPT_CUSTOMREQUEST,
"PUT"
);
curl_setopt(
$curl
, CURLOPT_POSTFIELDS, json_encode(
$data
));
break
;
case
"DELETE"
:
curl_setopt(
$curl
, CURLOPT_CUSTOMREQUEST,
"DELETE"
);
curl_setopt(
$curl
, CURLOPT_POSTFIELDS, json_encode(
$data
));
break
;
}
$result
= curl_exec(
$curl
);
$err_code
= curl_errno(
$curl
);
$curlInfo
= curl_getinfo(
$curl
);
curl_close(
$curl
);
if
(
$err_code
) {
return
false;
}
if
(
$curlInfo
['http_code'] == 200) {
return
json_decode(
$result
, true);
}
return
false;
}
catch
(\Exception
$e
) {
throw
new
\Exception(
$e
->getMessage());
}
}
public
function
createSign(
$data
){
$dataStr
= '';
foreach
(
$data
as
$key
=>
$value
){
$dataStr
.=
"{$key}={$value}&"
;
}
$dataStr
.='access_token=***B8';
$sign
=
strtoupper
(MD5(
$dataStr
));
$data
['sign']=
$sign
;
return
$data
;
}
}
$api
=
new
HttpClientUtil();
$url
= 'http:
$data
=[
'userName'=>'test',
'version'=>'2.0',
'cardName'=>'张三',
'cardNum'=>'20932402940189310293',
'openBank'=>'招商银行',
'amount'=>'10.00',
'outOrderId'=>'JD123123123',
'returnUrl'=>'/',
];
$res
=
$api
->sendRequest('post',
$url
,
$api
->createSign(
$data
));
print_r(
$res
);