php如何调用 basic auth接口 验证方式
//国航发送给第三方 basic auth 验证方式
public function send_to_ameco()
{
$out_trade_no = "2023081416181400037";
$flag = 1;
$payinfo = Db::table("client_order_pay_record")->where(" out_trade_no='$out_trade_no' ")->find();
$mid = $payinfo['mid'];
//获取员工信息
$member_info = Db::table('client_merchant_member')->where('id', $mid)->find();
//取出订单表
$order_keynum = $payinfo['order_keynum'];
$orderinfo = Db::table("client_order_info")->where(" keynum='$order_keynum' ")->find();
$send_data = array();
$send_data['supplier_code'] = $member_info['remark1'];
$send_data['staff_no'] = $member_info["out_code"];
$send_data['order_time'] = date("Y-m-d H:i:s");
$send_data['order_no'] = $orderinfo["order_sn"];
//$send_data['order_name'] = $orderinfo['goodsinfo'];
$send_data['order_name'] = mb_substr_with_ellipsis($orderinfo['goodsinfo'], 0, 30, "等");
$send_data['points'] = (float)$payinfo["member_money"];
$send_data['price'] = (string)$orderinfo["order_total_money"];
$item = array();
$orderdetail_list = Db::table("client_order_orderdetail")->where(" order_keynum='$order_keynum' ")->select();
//print_r($orderdetail_list);die;
foreach ($orderdetail_list as $k => $v) {
$row = array();
$row['mat_code'] = $v["goodssku"];
$row['mat_name'] = $v["goodsname"];
$row['qty'] = (string)$v["number"];
$row['unit_price'] = (string)$v["goodsintegral"];
$row['total_price'] = (string)bcmul($v["goodsintegral"], $v["number"], 2);
$row['type'] = "百货";
$item[] = $row;
}
$send_data['items'] = $item;
print_r($send_data);
//接口地址
$api_url = "https://www.host.com:80/ESB/OPEN/API/OUS009/SYS0277/SVC20300047";
$json_data = json_encode($send_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$username = 'xxxxx';
$password = 'yyyyyy';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); //basic auth
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); //basic auth
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt(
$ch,
CURLOPT_HTTPHEADER,
array(
'Content-Type: application/json',
'Content-Length: ' . strlen($json_data)
)
);
$tmpInfo = curl_exec($ch);
$errorno = curl_errno($ch);
//curl错误或者服务端的返回头不是200都是错误
if ($errorno || curl_getinfo($ch, CURLINFO_HTTP_CODE) != '200') {
//请求发送失败
$flag = 0;
$error_msg = "curl错误:$errorno" . ",接口返回状态码" . curl_getinfo($ch, CURLINFO_HTTP_CODE);
} else {
list($header, $body) = explode("\r\n\r\n", $tmpInfo, 2);
$rt_json = $body;
$rt_arr = json_decode($rt_json, 1);
if ($rt_arr["success"] != 'true') {
//业务失败
$flag = 0;
$error_msg = $rt_arr["message"];
}
}
echo $error_msg;
die;
}
版权声明:若无特殊注明,本文皆为《菜鸟站长》原创,转载请保留文章出处。
本文链接:php如何调用 basic auth接口 验证方式 - http://www.wlphp.com/?post=411