Browse Source

优化接口 流程及逻辑

master
wanghongjun 1 year ago
parent
commit
4b640c2004
  1. 20
      app/controller/api/Test.php
  2. 19
      app/service/invoice/InvoiceIssuanceService.php
  3. 36
      app/service/webService/ChinaTaxes.php

20
app/controller/api/Test.php

@ -13,7 +13,6 @@ class Test extends Base
public function index() public function index()
{ {
try { try {
$InvoiceIssuanceService = new InvoiceIssuanceService();
$data = [ $data = [
'pucode' => '', 'pucode' => '',
@ -21,6 +20,8 @@ class Test extends Base
'id' => '' 'id' => ''
]; ];
$InvoiceIssuanceService = new InvoiceIssuanceService();
$result = $InvoiceIssuanceService->IssueAnInvoice($data); $result = $InvoiceIssuanceService->IssueAnInvoice($data);
if ($result !== true) { if ($result !== true) {
@ -38,4 +39,21 @@ class Test extends Base
$FeeService = new FeeService($pucode); $FeeService = new FeeService($pucode);
return $FeeService->getUsers(); return $FeeService->getUsers();
} }
/*
*
* ^ array:3 [▼
"code" => "200"
"message" => "申请成功"
"pzsqkjYcxxList" => array:1 [▼
"pzsqkjYcxxVO" => array:4 [▼
"bdznsrsbh" => "91440300772709730N"
"yhbm" => "41107394"
"assetID" => "BC664422394E9D115C730C58AEB7BD7B"
"typeID" => "A0A35204362E8C26B40E8609C66090C2"
]
]
]
*
*/
} }

19
app/service/invoice/InvoiceIssuanceService.php

@ -188,6 +188,8 @@ class InvoiceIssuanceService
$bdznsrsbh = '91440300772709730N'; // 被代征纳税人识别号 $bdznsrsbh = '91440300772709730N'; // 被代征纳税人识别号
$feeUsers['bdznsrsbh'] = $bdznsrsbh;
// 保存 // 保存
$ChinaTaxes = new ChinaTaxes($feeUsers, $invoiceDate); $ChinaTaxes = new ChinaTaxes($feeUsers, $invoiceDate);
$savingDetailedData = $ChinaTaxes->savingDetailedData(); $savingDetailedData = $ChinaTaxes->savingDetailedData();
@ -207,14 +209,19 @@ class InvoiceIssuanceService
$mxGrid = $realTimeProcessing['data']['mxGrid']; $mxGrid = $realTimeProcessing['data']['mxGrid'];
$jsyj = 0; // 总金额 $jsyj = 0; // 总金额
foreach ($mxGrid['sbMxsjVOList'] as $sbMxsjVOValue) { if (isset($mxGrid['sbMxsjVOList'])) {
if (isset($sbMxsjVOValue['jsyj'])) $jsyj += $sbMxsjVOValue['jsyj']; foreach ($mxGrid['sbMxsjVOList'] as $sbMxsjVOValue) {
if (isset($sbMxsjVOValue['jsyj'])) $jsyj += $sbMxsjVOValue['jsyj'];
}
} }
// 加工成功 电子缴款申请 // 加工成功 电子缴款申请
$issueElectronic = $ChinaTaxes->issueElectronic($sbpch); $issueElectronic = $ChinaTaxes->issueElectronic($sbpch, $bdznsrsbh);
$assetID = $issueElectronic['pzsqkjYcxxList']['assetID']; // 文件唯一标识 if (!isset($issueElectronic['pzsqkjYcxxList']['pzsqkjYcxxVO']['assetID'])) {
throw new FuncException('文件唯一标识不存在');
}
$assetID = $issueElectronic['pzsqkjYcxxList']['pzsqkjYcxxVO']['assetID']; // 文件唯一标识
// 查询电子缴款凭证上链信息 // 查询电子缴款凭证上链信息
$queryPaymentVoucher = $ChinaTaxes->queryPaymentVoucher($assetID); $queryPaymentVoucher = $ChinaTaxes->queryPaymentVoucher($assetID);
@ -227,7 +234,7 @@ class InvoiceIssuanceService
// 盖章 // 盖章
$requestData = ['data' => $data, 'meta' => $meta]; $requestData = ['data' => $data, 'meta' => $meta];
$deCompress = $this->deCompress($requestData); $deCompress = $this->deCompress($requestData);
if ($deCompress['status'] !== 200) { if ($deCompress['status'] != 200) {
throw new FuncException('pdf数据解密失败'); throw new FuncException('pdf数据解密失败');
} }
if (!isset($deCompress['data']['pdfdata'])) { if (!isset($deCompress['data']['pdfdata'])) {
@ -236,7 +243,7 @@ class InvoiceIssuanceService
$pdfFilepath = $this->savePdfFile($deCompress['data']['pdfdata']); $pdfFilepath = $this->savePdfFile($deCompress['data']['pdfdata']);
(new InvoiceIssuanceData())->saveData($invoiceIssuance['id'], $bdznsrsbh, $jsyj, $assetID, $pdfFilepath); (new InvoiceIssuanceData())->saveData($invoiceIssuance['id'], $bdznsrsbh, $jsyj, $assetID, $pdfFilepath);
} else if ($realTimeProcessing['code'] === 302) { } else if ($realTimeProcessing['code'] == 302) {
// 加工失败 // 加工失败
// 查询上传异常数据接口 // 查询上传异常数据接口

36
app/service/webService/ChinaTaxes.php

@ -110,9 +110,10 @@ class ChinaTaxes
*/ */
public function savingDetailedData(): array public function savingDetailedData(): array
{ {
$userName = !empty($this->puCodeUser['ContactName']) ? $this->puCodeUser['ContactName'] : $this->puCodeUser['UserName'];
$mxGrid = [ $mxGrid = [
'bdznsrsbh' => $this->puCodeUser['tax_number'],// 被代征纳税人识别号 * 'bdznsrsbh' => $this->puCodeUser['bdznsrsbh'],// 被代征纳税人识别号 *
'bdznsrmc' => $this->puCodeUser['UserName'],// 被代征纳税人名称 * 'bdznsrmc' => $userName,// 被代征纳税人名称 *
'gjhdqszDm' => '156',// 国家或地区数字代码 'gjhdqszDm' => '156',// 国家或地区数字代码
'sfzjlxDm' => '201',// 身份证件类型代码 'sfzjlxDm' => '201',// 身份证件类型代码
'zjhm' => $this->puCodeUser['CertificateCode'],// 证件号码 * 'zjhm' => $this->puCodeUser['CertificateCode'],// 证件号码 *
@ -120,7 +121,7 @@ class ChinaTaxes
'zsxmDm' => '30433',// 征收项目代码 'zsxmDm' => '30433',// 征收项目代码
'zspmDm' => '804331300',// 征收品目代码 'zspmDm' => '804331300',// 征收品目代码
'zszmDm' => '',// 征收子目代码 'zszmDm' => '',// 征收子目代码
'jsyj' => '-1000',// 计税依据,保留两位小数 'jsyj' => '11.11',// 计税依据,保留两位小数
'sl1' => '',// 税率,可手工填写,不填则默认系统自动计算,保留两位小数 'sl1' => '',// 税率,可手工填写,不填则默认系统自动计算,保留两位小数
'ynse' => '',// 应纳税额,可手工填写,不填则默认系统自动计算,保留两位小数 'ynse' => '',// 应纳税额,可手工填写,不填则默认系统自动计算,保留两位小数
'ydzse' => '',// 应代征税额,可手工填写,不填则默认系统自动计算,保留两位小数 'ydzse' => '',// 应代征税额,可手工填写,不填则默认系统自动计算,保留两位小数
@ -134,7 +135,7 @@ class ChinaTaxes
'wszmkjbz' => 'Y',// 完税证明开具标志为 Y 开具,N不开具 'wszmkjbz' => 'Y',// 完税证明开具标志为 Y 开具,N不开具
'xmmc' => '测试',// 项目名称 'xmmc' => '测试',// 项目名称
'xmbm' => 'T435',// 项目编码 'xmbm' => 'T435',// 项目编码
'username' => $this->puCodeUser['UserName'],// 用户名称(同一个批次,同一个用户编号下,值相同) 'username' => $userName,// 用户名称(同一个批次,同一个用户编号下,值相同)
'nbyhbm' => $this->puCodeUser['UserCode'],// 用户编号 'nbyhbm' => $this->puCodeUser['UserCode'],// 用户编号
'jldwmc' => '立方米',// 单位 'jldwmc' => '立方米',// 单位
'sl' => '100',// 数量 'sl' => '100',// 数量
@ -191,7 +192,6 @@ class ChinaTaxes
'czlx' => 'CX', // 操作类型(CX:查询;JG:加工) 'czlx' => 'CX', // 操作类型(CX:查询;JG:加工)
]; ];
$param = $this->getParamData('SSGZ_GZPT_SZQKL_JGWTDZ', $body); $param = $this->getParamData('SSGZ_GZPT_SZQKL_JGWTDZ', $body);
return $this->resultXml($param, '6', 3); return $this->resultXml($param, '6', 3);
@ -200,17 +200,18 @@ class ChinaTaxes
/** /**
* 3.8开具电子缴款凭证接口 * 3.8开具电子缴款凭证接口
* @param $sbpch * @param $sbpch
* @param $bdznsrsbh
* @return array * @return array
* @throws FuncException * @throws FuncException
*/ */
public function issueElectronic($sbpch): array public function issueElectronic($sbpch, $bdznsrsbh): array
{ {
$body = [ $body = [
'sbpch' => $sbpch, // 批次号,详见备注 'sbpch' => $sbpch, // 批次号,详见备注
'bdzmxGrid' => [ 'bdzmxGrid' => [
'bdzmxlb' => [ 'bdzmxlb' => [
'bdznsrsbh' => $this->puCodeUser['CertificateCode'], // 被代征人纳税人识别号 'bdznsrsbh' => $bdznsrsbh, // 被代征人纳税人识别号
'yhbm' => $this->puCodeUser['UserCode'], // 用户编码 'yhbm' => $this->puCodeUser['UserCode'], // 用户编码
] ]
], ],
@ -242,8 +243,8 @@ class ChinaTaxes
$result = $this->resultXml($param, '', 1); $result = $this->resultXml($param, '', 1);
return [ return [
'meta' => $this->deCompressXml($result['pzkjxxVO']['meta']), 'meta' => $result['pzkjxxVO']['meta'],
'data' => $this->deCompressXml($result['pzkjxxVO']['data']) 'data' => $result['pzkjxxVO']['data']
]; ];
} }
@ -514,9 +515,11 @@ class ChinaTaxes
*/ */
protected function bizXml($body, int $type = 0): string protected function bizXml($body, int $type = 0): string
{ {
$start = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><SZQKLDZSPSB0001ZipBase64RequestBwxmlns:ns2="http://www.chinatax.gov.cn/dataspec/">'; $start = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SZQKLDZSPSB0001ZipBase64RequestBw
xmlns:ns2="http://www.chinatax.gov.cn/dataspec/">';
$start1 = '<SZQKLDZSPSB0001ZipBase64RequestBw>'; $start1 = '<SZQKLDZSPSB0001ZipBase64RequestBw>';
$end = '</SZQKLDZSPSB0001ZipBase64RequestBw>'; $end = '</SZQKLDZSPSB0001ZipBase64RequestBw>';
$xml = ''; $xml = '';
$xml2 = ''; $xml2 = '';
foreach ($body as $key => $value) { foreach ($body as $key => $value) {
@ -535,13 +538,13 @@ class ChinaTaxes
// 需要ns2 前后组合 加密返回 // 需要ns2 前后组合 加密返回
if ($this->xmlType == 2) { if ($this->xmlType == 2) {
$this->xmlType = 1;
return $start1 . $this->enCompressXml($start . $xml2 . $end) . $end; return $start1 . $this->enCompressXml($start . $xml2 . $end) . $end;
} }
// 需要ns2 前后组合 加密返回 // 需要ns2 前后组合 加密返回
if ($this->xmlType == 3) { if ($this->xmlType == 3) {
$this->xmlType = 1;
return $start1 . $this->enCompressXml($start . $xml . $end) . $end; return $start1 . $this->enCompressXml($start . $xml . $end) . $end;
} }
@ -691,13 +694,18 @@ class ChinaTaxes
$result = $this->json_curl(json_encode($param)); $result = $this->json_curl(json_encode($param));
if (!isset($result['result'])) { if (!isset($result['result'])) {
if (isset($result['error']['message'])) {
throw new FuncException($result['error']['message']);
}
throw new FuncException('请求失败'); throw new FuncException('请求失败');
} }
$data = $this->xmlDom($result['result']); $data = $this->xmlDom($result['result']);
if (isset($data['code']) && $data['code'] != 200) { if (isset($data['code']) && $data['code'] != 200) {
if ($type == 1) return $data; if ($type == 1 && $data['code'] == 302) return $data;
throw new FuncException($data['message']); throw new FuncException($data['message']);
} else if ($type == 1) {
return $data;
} }
$deData = $this->deCompressXml($data[$key]); $deData = $this->deCompressXml($data[$key]);

Loading…
Cancel
Save