diff --git a/app/service/webService/ChinaTaxes.php b/app/service/webService/ChinaTaxes.php
index b3069e3..7df9866 100644
--- a/app/service/webService/ChinaTaxes.php
+++ b/app/service/webService/ChinaTaxes.php
@@ -2,8 +2,6 @@
namespace app\service\webService;
-use app\util\NewSm4;
-use app\util\Sm4;
use fast\FuncException;
class ChinaTaxes
@@ -127,18 +125,12 @@ class ChinaTaxes
'my' => $this->my, //密钥,数字签名校验和资格校验
'mxGrid' => $this->mxGrid($mxGrid)
];
- dump($body);
+ //dump($body);
$param = $this->getParamData('SSGZ_GZPT_SZQKL_WTDZDRJK', $body);
- dump($param);
- // dump($param);exit;
- $json_str = '{ "reqId": "'.md5(time() . rand(000,999))
- .'", "sid": "'.'SSGZ_GZPT_SZQKL_WTDZDRJK'
- .'", "channelId":"'.$this->channelId
- .'", "accessToken":"'.$this->accessToken
- .'", "timestamp":"'.time()
- .'", "data": { "bizXml": "H4sIAAAAAAAAAO1Xy27bRhT9FUN7SzMcipIMm4FkyS4VU6pEyQ9tComkRVJ8yaNE5KyyCdoUQR5o{r}{n}UMBIujAKNEEfyCJp6yZA+jOWXP1Fhw+JDIKmboGu6gXFc88992pmeDgkN294lrl2Wz3BumNvZWAW{r}{n}ZNZUW3YU3R5uZbqdnfViZg1P+rbSNx1b3cr4Ks7c4DelXuvmXrUnfSpVAACwp7uVPlY5tq2Ob6l4{r}{n}Upmu0b423rAxs5XRJhN3I5ebTqdZWdPt/qTvZYfO7axs5xQaYFeVcxl+k2o38EAmple1eN3G6slk{r}{n}M/ceGUmOTTzgj+JUGMSlrqzxy4oQh3CE8XjMM4CB6wCtAxgrIjqRkJUEpSUkklg+r/p1bbAr6029{r}{n}LnSJABu6gAW7nZe3BU4YuYf72/VSlopuyahOjqwhFQp5sdMCYlWcijVYaXR7n4ijnUqz1tL3tuuu{r}{n}jMSgWacLG0IbOgE36tuaIxiOLnbK/qq2Wo4OMgINMgx0RNnd8ZWdtjs46Ab/E3DmwGp3+wfQDOsN{r}{n}Wq+DaVMCRNwuew3i0FpnKkp00NY+Gwxa7BwxjWqXiB3BF6WpLqPKuOfTyRg1/biVNcd95RhJ5Qrb{r}{n}2uv3JK97oBNr0FVvjvWjeq+GnHz+sMl8JhFHiNaLrlG0Vt7uia4sL4roYWO/uafjScQMFGLjEzzQ{r}{n}+BJkWYAAEMv5apU9rLEo6pMoUgWWzF/89s3i3enswe/zs8cX51/NXr28fPLz7KdHF2+//+PsBf2d{r}{n}nb6YP7u3OH00u/vj7OF5uhstD5sRQ7N4yDIsQrBUKAKWgYVCnomkYTL2GDFCxzErvyyZMD80NGWM{r}{n}CQ1hnosECRUqNJ8iVIJxeRhGI8CeFdQBuGwdM3HWXWU5lCjclIKEOJcOAmxg36DDKRVZlEXxUoZc{r}{n}NCMTLu+NAAXAp7dYzEUwRApJ2AiH0EhY4z0tTIvjzoa1UkcwQK6WopdBOCBsWB5ZzSkJl8JUMgnj{r}{n}iAzMJJUEH/ruyk5ErQaofNyJizffXT5/Obv/ZvbtD4u7Ty7OXy/unM9f3buS+1CBgUwJlqg3GFAs{r}{n}ccvt5tp91+6j+2CthjpXdd+7X+enDy/fnl0+fzz/8s6V3McxAFFb0esE6IkpFvPX7vtfu+/jXpt/{r}{n}8Xr+9efzX57+9cMUAQ4xoaGonVgW/lfbGVdcPqf/jaEK1Pf/3FAck4fXbkp5J3rRi1/wcn/7FcD/{r}{n}CZ2KPLlgDAAA"}}';
- dump($json_str);
- return $this->json_curl($json_str);
+ //dump($param);
+ dump($param);exit;
+
+ die;
}
/**
@@ -425,26 +417,13 @@ xmlns:ns2="http://www.chinatax.gov.cn/dataspec/">';
}
}
- // dump($xml2);
-
- //$sm4 = new NewSm4();
- $sm4 = new Sm4();
-
if ($type == 2) {
- //return $start1 . base64_encode(gzencode($xml2)) . $end;
- // $aa = base64_encode(gzencode($xml2));
- // return $start1.$xml2.$end;
-
- dump($xml2);
- $gzencode = gzencode($xml2);
- $sm4Code = $sm4->encrypt($this->my, $gzencode);
- return $start . $sm4Code . $end;
+ $xml2 = $this->enCompressXml($xml2);
+ return $start.$xml2.$end;
}
- dump($xml);
- $gzencode = gzencode($xml);
- $sm4Code = $sm4->encrypt($this->my, $gzencode);
- return $start . $sm4Code . $end;
+ $xml = $this->enCompressXml($xml);
+ return $start.$xml.$end;
}
/**
@@ -502,4 +481,81 @@ xmlns:ns2="http://www.chinatax.gov.cn/dataspec/">';
return json_decode($response, true);
}
-}
\ No newline at end of file
+
+ protected function demo()
+ {
+ $json_str = '{ "reqId": "'.md5(time() . rand(000,999))
+ .'", "sid": "'.'SSGZ_GZPT_SZQKL_WTDZDRJK'
+ .'", "channelId":"'.$this->channelId
+ .'", "accessToken":"'.$this->accessToken
+ .'", "timestamp":"'.time()
+ .'", "data": { "bizXml": "H4sIAAAAAAAAAO1Xy27bRhT9FUN7SzMcipIMm4FkyS4VU6pEyQ9tComkRVJ8yaNE5KyyCdoUQR5o{r}{n}UMBIujAKNEEfyCJp6yZA+jOWXP1Fhw+JDIKmboGu6gXFc88992pmeDgkN294lrl2Wz3BumNvZWAW{r}{n}ZNZUW3YU3R5uZbqdnfViZg1P+rbSNx1b3cr4Ks7c4DelXuvmXrUnfSpVAACwp7uVPlY5tq2Ob6l4{r}{n}Upmu0b423rAxs5XRJhN3I5ebTqdZWdPt/qTvZYfO7axs5xQaYFeVcxl+k2o38EAmple1eN3G6slk{r}{n}M/ceGUmOTTzgj+JUGMSlrqzxy4oQh3CE8XjMM4CB6wCtAxgrIjqRkJUEpSUkklg+r/p1bbAr6029{r}{n}LnSJABu6gAW7nZe3BU4YuYf72/VSlopuyahOjqwhFQp5sdMCYlWcijVYaXR7n4ijnUqz1tL3tuuu{r}{n}jMSgWacLG0IbOgE36tuaIxiOLnbK/qq2Wo4OMgINMgx0RNnd8ZWdtjs46Ab/E3DmwGp3+wfQDOsN{r}{n}Wq+DaVMCRNwuew3i0FpnKkp00NY+Gwxa7BwxjWqXiB3BF6WpLqPKuOfTyRg1/biVNcd95RhJ5Qrb{r}{n}2uv3JK97oBNr0FVvjvWjeq+GnHz+sMl8JhFHiNaLrlG0Vt7uia4sL4roYWO/uafjScQMFGLjEzzQ{r}{n}+BJkWYAAEMv5apU9rLEo6pMoUgWWzF/89s3i3enswe/zs8cX51/NXr28fPLz7KdHF2+//+PsBf2d{r}{n}nb6YP7u3OH00u/vj7OF5uhstD5sRQ7N4yDIsQrBUKAKWgYVCnomkYTL2GDFCxzErvyyZMD80NGWM{r}{n}CQ1hnosECRUqNJ8iVIJxeRhGI8CeFdQBuGwdM3HWXWU5lCjclIKEOJcOAmxg36DDKRVZlEXxUoZc{r}{n}NCMTLu+NAAXAp7dYzEUwRApJ2AiH0EhY4z0tTIvjzoa1UkcwQK6WopdBOCBsWB5ZzSkJl8JUMgnj{r}{n}iAzMJJUEH/ruyk5ErQaofNyJizffXT5/Obv/ZvbtD4u7Ty7OXy/unM9f3buS+1CBgUwJlqg3GFAs{r}{n}ccvt5tp91+6j+2CthjpXdd+7X+enDy/fnl0+fzz/8s6V3McxAFFb0esE6IkpFvPX7vtfu+/jXpt/{r}{n}8Xr+9efzX57+9cMUAQ4xoaGonVgW/lfbGVdcPqf/jaEK1Pf/3FAck4fXbkp5J3rRi1/wcn/7FcD/{r}{n}CZ2KPLlgDAAA"}}';
+ dump($json_str);
+
+ $xmlData = $this->json_curl($json_str);
+ $dom = new \DOMDocument();
+ $dom->loadXML($xmlData['result']);
+ $output = $this->xmlToArray($dom->documentElement);
+
+ $data = $output['SZQKLDZSPSB0001ZipBase64ResponsBw'];
+
+ dump($data);
+ $gzdecode = $this->deCompressXml($data);
+ dump($gzdecode);
+ exit();
+ }
+
+ protected function xmlDom($json_str)
+ {
+ $xmlData = $this->json_curl($json_str);
+ $dom = new \DOMDocument();
+ $dom->loadXML($xmlData['result']);
+ return $this->xmlToArray($dom->documentElement);
+ }
+
+ /**
+ * 加密
+ * @param $str
+ * @return array|string|string[]
+ */
+ protected function enCompressXml($str)
+ {
+ $gzencode = gzencode($str);
+ $baseStr = base64_encode($gzencode);
+ return str_replace(array("\n", "\r"), array('{n}', '{r}'), $baseStr);
+ }
+
+ /**
+ * 解密
+ * @param $str
+ * @return false|string
+ */
+ protected function deCompressXml($str)
+ {
+ $repStr = str_replace(array('{n}', '{r}'), array("\n", "\r"), $str);
+ $baseStr = base64_decode($repStr);
+ return gzdecode($baseStr);
+ }
+
+ /**
+ *
+ * @param $node
+ * @return array|mixed
+ */
+ protected function xmlToArray($node)
+ {
+ $output = [];
+
+ if ($node->hasChildNodes()) {
+ foreach ($node->childNodes as $child) {
+ if ($child->nodeType === XML_ELEMENT_NODE) {
+ $output[$child->nodeName] = $this->xmlToArray($child);
+ } elseif ($child->nodeType === XML_TEXT_NODE) {
+ $output = $child->nodeValue;
+ }
+ }
+ }
+
+ return $output;
+ }
+}