|
|
|
@ -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": "<SZQKLDZSPSB0001ZipBase64RequestBw>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</SZQKLDZSPSB0001ZipBase64RequestBw>"}}'; |
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
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": "<SZQKLDZSPSB0001ZipBase64RequestBw>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</SZQKLDZSPSB0001ZipBase64RequestBw>"}}'; |
|
|
|
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; |
|
|
|
} |
|
|
|
} |
|
|
|
|