$appKey,
"appSecret"=>$appSecret
);
// var_dump($send);exit;
$send = json_encode($send);
//echo $send;exit;
$headerArray =array("Content-Type: application/json");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $send);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data_json = curl_exec($curl);
curl_close($curl);
//var_dump($data_json);exit;
$res = json_decode($data_json);
$access_token = $res->access_token;
$expire_time = date('Y-m-d H:i:s',time() + $res->expires_in);
$update_sql="update dictionary set vtext='".$access_token."',vMono='".$expire_time."' where vtitle='EleCloud_access_token'";
$res = sqlsrv_query($conn,$update_sql);
}
return $access_token;
}
$access_token=postAccessToken();
//echo $access_token;exit;
switch ($method)
{
case "AllocateInvoices": //发票开具冲红
$InvoiceID = !empty($_REQUEST["InvoiceID"]) ? $_REQUEST["InvoiceID"] : ""; //发票申请ID
$InvoiceType = !empty($_REQUEST["InvoiceType"]) ? $_REQUEST["InvoiceType"] : "2"; //发票类型
$EleCloudArray = array(
"DDPCXX"=>array(
"DDQQPCH"=>date('YmdHis')."_".rand(10000000,99999999), //订单请求批次号
"NSRSBH"=>$NSRSBH, //纳税人识别号(测试)
//"KPZD" => "", // "开票终端",
"FPLXDM"=>"026",
//"CPYBS" => "", // "成品油标识",
//"CPYBS" => "", // "扩展字段",
"KPFS"=>"0"
),
"DDZXX"=>array()
);
//echo json_encode($EleCloudArray);exit;
//$InvoiceID = "225";
$ServiceOrdID="";
$sql = "select InvoiceID,InvoiceType,InvoiceName,InvoiceMakeout,InvoiceCompanyPhone,InvoiceCompanyID,InvoiceCompanyAdd,InvoiceCompanyBank,InvoiceCompanyBankNo,InvoiceZipCode,Invoice_strAdd,Invoice_strName,Invoice_strPhone,Invoice_strEmail,ApplicationTime=CONVERT(nvarchar(20),ApplicationTime,111),AuditTime=CONVERT(nvarchar(20),AuditTime,111),AuditStatus,AuditOAID,AuditMakeout,InvoiceMoney,InvoiceNo,InvoiceURL,ServiceOrdID,ServiceOrdType,ServiceOrdNo=ServiceOrdClass+convert(nvarchar(10),year(ServiceOrd_CC_Time))+right('0'+convert(nvarchar(10),month(ServiceOrd_CC_Time)),2)+right('0'+convert(nvarchar(10),day(ServiceOrd_CC_Time)),2)+'-'+right('00'+convert(nvarchar(10),ServiceOrdNo),3),OrdTraPrice=ServiceOrdTraTxnPrice from InvoiceData,ServiceOrder where ServiceOrderIDPK=ServiceOrdID and AuditStatus<>4 and InvoiceType=".$InvoiceType." and InvoiceID in (".$InvoiceID.") and EleCloud_ZTDM<>'010000'";
$data = sqlsrv_query($conn,$sql);
if($data == true){
while($rs = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) {
$InvoiceID = $rs['InvoiceID']; //发票ID
$ServiceOrdID = $rs['ServiceOrdID']; //服务单ID
$ServiceOrdNo = $rs['ServiceOrdNo']; //服务单号
$InvoiceID = $rs['InvoiceID']; //开票信息ID
$InvoiceType = $rs['InvoiceType']; //开票类型
$InvoiceName = $rs['InvoiceName']; //发票抬头
$InvoiceMakeout = $rs['InvoiceMakeout']; //发票备注
$InvoiceCompanyPhone= $rs['InvoiceCompanyPhone'];//企业电话
$InvoiceCompanyID = str_replace(array("\r\n", "\r", "\n"),'',$rs['InvoiceCompanyID']); //纳税识别号
$InvoiceCompanyAdd = $rs['InvoiceCompanyAdd']; //企业注册地址
$InvoiceCompanyBank = $rs['InvoiceCompanyBank'];//企业开户银行
$InvoiceCompanyBankNo=$rs['InvoiceCompanyBankNo'];//企业银行账号
$InvoiceZipCode = $rs['InvoiceZipCode']; //邮编
$Invoice_strAdd = $rs['Invoice_strAdd']; //邮寄地址
$Invoice_strName = $rs['Invoice_strName']; //联系人
$Invoice_strPhone = $rs['Invoice_strPhone']; //联系电话
$Invoice_strEmail = $rs['Invoice_strEmail']; //电子邮箱
$ApplicationTime = $rs['ApplicationTime']; //申请时间
$AuditTime = $rs['AuditTime']; //处理时间
$AuditStatus = $rs['AuditStatus']; //处理状态
$AuditOAID = $rs['AuditOAID']; //处理人
$AuditMakeout = $rs['AuditMakeout']; //处理备注
$InvoiceMoney = $rs['InvoiceMoney']; //发票金额
$InvoiceNo = $rs['InvoiceNo']; //发票编号
$InvoiceURL = $rs['InvoiceURL']; //发票链接
if ($InvoiceMoney==0) {$InvoiceMoney=$rs['OrdTraPrice'];}
if (empty($Invoice_strEmail)) {$Invoice_strEmail="vicgame@163.com";} //测试邮箱
if (!empty($InvoiceCompanyID)) {$GMFLX="01";}else{$GMFLX="03";} //购买方类型(01 企业,02 机关事业单位,03 个人,04 其他)
array_push($EleCloudArray["DDZXX"],array(
"DDTXX"=>array(
"DDQQLSH"=>$InvoiceID, //"订单请求流水号"
"NSRSBH"=> $NSRSBH, //"纳税人识别号", 销货方纳税人识别号
"NSRMC" => $NSRMC, //"纳税人名称", 销货方纳税人名称
"KPLX" => "0", //"开票类型", 0 蓝字发票 1 红字发票
//"BMBBBH"=> "", //"编码表版本号",
"XHFSBH"=> $NSRSBH, //"销货方纳税人识别号", 企业纳税人识别号,如果未在销项系统 中维护企业信息节点 8,节点 9,节点 10, 节点 11 需要必填
"XHFMC" => $NSRMC, //"销货方名称", 销货方对应的名称,如果未在销项系统 中维护企业信息节点 8,节点 9,节点 10, 节点 11 需要必填
"XHFDZ" => "北京市海淀区", //"销货方地址", 销货方对应的地址
"XHFDH" => "1234567890", //"销货方电话", 销货方对应的电话
"XHFYH" => "交通银行海淀支行", //"销货方银行名称",
"XHFZH" => "140301615336", //"销货方银行账号",
"GMFLX" => $GMFLX, //"购买方类型", 01 企业,02 机关事业单位,03 个人, 04 其他 当开票方式为自动开票时必填
//"GMFBM" => "", //"购买方编码", 专票时必填
"GMFSBH"=> $InvoiceCompanyID, //"购买方纳税人识别号", 专票时必填
"GMFMC" => $InvoiceName, //"购买方名称", 专票时必填
"GMFDZ" => $InvoiceCompanyAdd, //"购买方地址", 专票时必填
"GMFDH" => $InvoiceCompanyPhone,//"购买方电话", 专票时必填
"GMFYH" => $InvoiceCompanyBank, //"购买方银行名称", 专票时必填
"GMFZH" => $InvoiceCompanyBankNo,//"购买方银行账号", 专票时必填
//"GMFSF" => "", //"购买方省份",
//"GMFSJH"=> "", //"购买方手机",
"GMFDZYX"=>$Invoice_strEmail, //"购买方邮箱", 如果填写,发票类别为电子发票时会自 动发送邮件
"KPR" => "萧洁纯", //"开票人", 企业传递开票人信息,发票上会进行展 示 当开票方式为自动开票时必填
"SKR" => "萧洁纯", //"收款人",
"FHR" => "张利华", //"复核人",
//"YFPDM" => "", //"原发票代码",
//"YFPHM" => "", //"原发票号码",
"QDBZ" => "0", //"清单标志", 普通发票, 1-普通发票(清单), 2-收购发票, 3-收购发票(清单), 4-成品油发票 0 或 2 时系统根据项目名称字数,自动产 生清单 1 或 3 时,系统取清单对应票面内容字段 打印到发票票面上,将项目信息 XMXX 打 印到清单上。 默认为 0
//"QDXMMC"=> "", //"清单项目名称", 需要打印清单时对应发票票面项目名称 清单标识(QDBZ)为 1 或 3 时必填
"JSHJ" => number_format($InvoiceMoney,2,".",""), //"价税合计", 小数点后 2 位,以元为单位精确到分; 不能为 0
"HJJE" => "0", //"合计金额", 小数点后 2 位,以元为单位精确到分。 可填写 0,由发票系统做价税分离,重 新赋值。
"HJSE" => "0", //"合计税额", 小数点后 2 位,以元为单位精确到分。 可填写 0,由发票系统做价税分离,重 新赋值。
//"BZ " => "", //"备注",
//"CHYY" => "", //"冲红原因",
//"TSCHBZ" => "", //"特殊冲红标志",
"DDH" => $ServiceOrdID //"订单号",
//"THDH" => "", //"退货单号",
//"DDSJ" => "", //"订单时间",
//"YWLX" => "", //"业务类型",
//"BYZD1" => "", //"备用字段1",
//"BYZD2" => "", //"备用字段2",
//"BYZD3" => "", //"备用字段3",
//"BYZD4" => "", //"备用字段4",
//"BYZD5" => "", //"备用字段5"
)
,
"DDMXXX"=>array(array(
//"XH" => "", //"项目序号",
"FPHXZ" => "0", //"发票行性质", 0 正常行,1 折扣行,2 被折扣行,6 清 单红字发票
"SPBM" => "3040301020000000000", //"商品税收分类编码", 税收分类编码。发票票面上“货物或应 税劳务、服务名称中**之间的内容,通 过税收分类编码取对应的简称
//"ZXBM" => "", //"自行编码",
"YHZCBS"=> "1", //"优惠政策标识", 0:不使用,1:使用
"LSLBS" => "1", //"零税率标识", 空:非零税率,0:出口零税,1:免税,2: 不征税 3:普通零税率 若填写了 3(普通零税率), 则: YHZCBS 填 0,ZZSTSGL 填空
"ZZSTSGL"=>"免税", //"增值税特殊管理",
"XMMC" => "医疗服务", //"项目名称", 折扣行项目名称与上一行被折扣行项目 名称一致
//"GGXH" => "", //"规格型号",
"DW" => "次", //"单位",
"SPSL" => "1", //"商品数量", 小数点后 8 位, 小数点后都是 0 时,只 显示整数;不能为 0,对于折扣行或运 费等没有“数量概念的数据项,商品数 量默认为 1
"DJ" => number_format($InvoiceMoney,2,".",""), //"单价", 小数点后 8 位小数点后都是 0 时,只显 示 2 位小数;否则只显示至最后一位不 为 0 的数字;不能为 0, 清单红字可以为空
"JE" => number_format($InvoiceMoney,2,".",""), //"金额", 小数点后 2 位,以元为单位精确到分。 等于=单价*数量,根据含税标志,确定 此金额是否为含税金额;不能为 0
"HSBZ" => "1", //"含税标志", 表示单价和金额是否含税。0 表示都不 含税,1 表示都含
"SL" => "0", //"税率", 如果税率为 0,表示免税,小数点后 3 位, 清单红字若对应的蓝字发票为多种税 率,税率填充为空,单一税率填写此税 率
"SE" => "0" //"税额", 小数点后 2 位,以元为单位精确到分, 含税标志为 0,税额必填,清单红字税 额必填
//"KCE" => "", //"扣除额",
//"BYZD1" => "", //"备用字段1",
//"BYZD2" => "", //"备用字段2",
//"BYZD3" => "", //"备用字段3"
))
)
);
//echo json_encode($EleCloudArray);exit;
}
}
if (!empty($ServiceOrdID)) {
$url = "https://sandbox.ele-cloud.com/api/order-api/order-api/v4/AllocateInvoices?access_token=".$access_token;
//echo json_encode($EleCloudArray);exit;
$send = array(
"zipCode"=>"0",
"encryptCode"=>"0",
"dataExchangeId"=>date('YmdHis').rand(1000000000,9999999999)."00000000",
"encryptentCodeCode"=>"1234",
"content"=>base64_encode(json_encode($EleCloudArray))
);
$send = json_encode($send);
//echo $send."
";//exit;
$headerArray =array("Content-Type: application/json");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $send);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data_json = curl_exec($curl);
curl_close($curl);
//echo $data_json."
";//exit;
$res = json_decode($data_json);
$res_content = $res->content;
if (!empty($res_content)){
$res_content=json_decode(base64_decode($res_content));
$ZTDM = $res_content->ZTDM;
$ZTXX = $res_content->ZTXX;
$update_sql="update InvoiceData set EleCloud_ZTDM='".$ZTDM."',EleCloud_ZTXX='".$ZTXX."',EleCloud_Time=getdate() where InvoiceID=".$InvoiceID;
$res = sqlsrv_query($conn,$update_sql);
$api_json = array(
"ZTDM"=>$ZTDM,
"ZTXX"=>$ZTXX
);
echo json_encode($api_json);exit;
}else{
$returnStateInfo = $res->returnStateInfo;
echo base64_decode($returnStateInfo->returnMessage);exit;
}
//$update_sql="update dictionary set vtext='".$access_token."',vMono='".$expire_time."' where vtitle='EleCloud_access_token'";
//$res = sqlsrv_query($conn,$update_sql);
}
break;
case "GetOrderInfoAndInvoiceInfo": //订单和发票数据查询接口
$InvoiceID = !empty($_REQUEST["InvoiceID"]) ? $_REQUEST["InvoiceID"] : ""; //发票申请ID
$EleCloud_ZTDM="";
$EleCloud_ZTXX="";
$EleCloud_Time="";
$sql = "select InvoiceID,EleCloud_ZTDM,EleCloud_ZTXX,EleCloud_Time=CONVERT(nvarchar(20),EleCloud_Time,111),ServiceOrderIDPK from InvoiceData where EleCloud_ZTDM<>'' and InvoiceID in (".$InvoiceID.")";
$data = sqlsrv_query($conn,$sql);
if($data == true){
while($rs = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) {
$EleCloud_ZTDM = $rs['EleCloud_ZTDM']; //申请结果代码
$EleCloud_ZTXX = $rs['EleCloud_ZTXX']; //申请结果说明
$EleCloud_Time = $rs['EleCloud_Time']; //申请返回时间
$ServiceOrderID = $rs['ServiceOrderIDPK']; //服务单ID
}
}
if ($EleCloud_ZTDM=="010000") {
$EleCloudArray=array(
"NSRSBH"=> $NSRSBH, //"纳税人识别号", 销货方纳税人识别号
"DDQQLSH"=>$InvoiceID //"订单请求流水号"
);
$url = "https://sandbox.ele-cloud.com/api/order-api/order-api/v4/GetOrderInfoAndInvoiceInfo?access_token=".$access_token;
//echo json_encode($EleCloudArray);exit;
$send = array(
"zipCode"=>"0",
"encryptCode"=>"0",
"dataExchangeId"=>date('YmdHis').rand(1000000000,9999999999)."00000000",
"encryptentCodeCode"=>"1234",
"content"=>base64_encode(json_encode($EleCloudArray))
);
$send = json_encode($send);
//echo $send."
";//exit;
$headerArray =array("Content-Type: application/json");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $send);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data_json = curl_exec($curl);
curl_close($curl);
//echo $data_json."
";exit;
$res = json_decode($data_json);
$res_content = $res->content;
if (!empty($res_content)){
$res_content=json_decode(base64_decode($res_content));
$ZTDM = $res_content->ZTDM;
$ZTXX = $res_content->ZTXX;
$PDFURL="";
if ($ZTDM=="000000") {
$res_content=$res_content->DDFPZXX[0]->DDFPXX;
$FPDM=$res_content->FPDM; //发票代码
$FPHM=$res_content->FPHM; //发票号码
$KPRQ=$res_content->KPRQ; //开票日期
$PDFZJL=$res_content->PDFZJL; //PDF字节流
//echo FPDM."
";exit;
//PDF文件生成
$stream_data=$PDFZJL;
$receive_file_name="PDF/".$ServiceOrderID."_".$FPHM.".pdf";
$PDFURL=$EleCloudURL.$receive_file_name;
$result = false;
if ($stream_data != '') {
$result = file_put_contents($receive_file_name, base64_decode($stream_data), true); // 保存文件
}
//echo $receive_file_name;exit;
$update_sql="update InvoiceData set InvoiceNo='".$FPHM."',InvoiceURL='".$PDFURL."',EleCloud_ZTDM='".$ZTDM."',EleCloud_ZTXX='".$ZTXX."',EleCloud_Time='".$KPRQ."' where InvoiceID=".$InvoiceID;
$res = sqlsrv_query($conn,$update_sql);
}else{
$update_sql="update InvoiceData set EleCloud_ZTDM='".$ZTDM."',EleCloud_ZTXX='".$ZTXX."',EleCloud_Time=getdate() where InvoiceID=".$InvoiceID;
$res = sqlsrv_query($conn,$update_sql);
}
$api_json = array(
"InvoiceID"=>$InvoiceID,
"ZTDM"=>$ZTDM,
"ZTXX"=>$ZTXX,
"PDFURL"=>$PDFURL
);
echo json_encode($api_json);exit;
}else{
$returnStateInfo = $res->returnStateInfo;
echo base64_decode($returnStateInfo->returnMessage);exit;
}
//$update_sql="update dictionary set vtext='".$access_token."',vMono='".$expire_time."' where vtitle='EleCloud_access_token'";
//$res = sqlsrv_query($conn,$update_sql);
}else{
$api_json = array(
"InvoiceID"=>$InvoiceID,
"EleCloud_ZTDM"=>$EleCloud_ZTDM,
"EleCloud_ZTXX"=>$EleCloud_ZTXX,
"EleCloud_Time"=>$EleCloud_Time
);
echo json_encode($api_json);exit;
}
break;
}
?>