$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; } ?>