Новость API AFIP в PHP

как осуществление новой услуги SOAP API AFIP в PHP?

Будь вопрос рождается, так как, что со многими случилось то же самое, и я жду, что нам удается прибыть в решение.

Даже не делает больше ничто, что одна неделя использовала api rest AFIP, который консультировался перемещая его параметр cuit посредством url и он получал один Json данных.

Однако, по какому-то разуму они приняли решение уволить ее, оставляя вся мою устаревшую систему. И ты подпираешь несуществующую документацию, которую я нашел, он находится в python

Сейчас я должен изловчаться они, чтобы делать перефактор моего app обновляя метод, с которым я получаю данные, и используя новую версию API в SOAP

API REST:

"https://soa.afip.gov.ar / sr-padron / v2 / человек / 30500010912"

API SOAP:

"https://awshomo.afip.gov.ar/sr-padron/webservices/personaServiceA10"

К сожалению мое знание WS SOAP почти недействительный. Поэтому я спрашиваю из-за этого способа.

Согласно этому учебнику (в меня казаться непонятным):

"https://www.afip.gob.ar/ws/ws_sr_padron_a10/manual_ws_sr_padron_a10_v1.1.pdf"

Я должен использовать метод getPersona()

Здесь код примера, который предлагает мне официальную страницу:

!/usr/bin/php
' .
    ''.
    '');
  $TRA->addChild('header');
  $TRA->header->addChild('uniqueId',date('U'));
  $TRA->header->addChild('generationTime',date('c',date('U')-60));
  $TRA->header->addChild('expirationTime',date('c',date('U')+60));
  $TRA->addChild('service',$SERVICE);
  $TRA->asXML('TRA.xml');
}
#==============================================================================
# This functions makes the PKCS#7 signature using TRA as input file, CERT and
# PRIVATEKEY to sign. Generates an intermediate file and finally trims the 
# MIME heading leaving the final CMS required by WSAA.
function SignTRA()
{
  $STATUS=openssl_pkcs7_sign("TRA.xml", "TRA.tmp", "file://".CERT,
    array("file://".PRIVATEKEY, PASSPHRASE),
    array(),
    !PKCS7_DETACHED
    );
  if (!$STATUS) {exit("ERROR generating PKCS#7 signature\n");}
  $inf=fopen("TRA.tmp", "r");
  $i=0;
  $CMS="";
  while (!feof($inf)) 
    { 
      $buffer=fgets($inf);
      if ( $i++ >= 4 ) {$CMS.=$buffer;}
    }
  fclose($inf);
#  unlink("TRA.xml");
  unlink("TRA.tmp");
  return $CMS;
}
#==============================================================================
function CallWSAA($CMS)
{
  $client=new SoapClient(WSDL, array(
          'proxy_host'     => PROXY_HOST,
          'proxy_port'     => PROXY_PORT,
          'soap_version'   => SOAP_1_2,
          'location'       => URL,
          'trace'          => 1,
          'exceptions'     => 0
          )); 
  $results=$client->loginCms(array('in0'=>$CMS));
  file_put_contents("request-loginCms.xml",$client->__getLastRequest());
  file_put_contents("response-loginCms.xml",$client->__getLastResponse());
  if (is_soap_fault($results)) 
    {exit("SOAP Fault: ".$results->faultcode."\n".$results->faultstring."\n");}
  return $results->loginCmsReturn;
}
#==============================================================================
function ShowUsage($MyPath)
{
  printf("Uso  : %s Arg#1 Arg#2\n", $MyPath);
  printf("donde: Arg#1 debe ser el service name del WS de negocio.\n");
  printf("  Ej.: %s wsfe\n", $MyPath);
}
#==============================================================================
ini_set("soap.wsdl_cache_enabled", "0");
if (!file_exists(CERT)) {exit("Failed to open ".CERT."\n");}
if (!file_exists(PRIVATEKEY)) {exit("Failed to open ".PRIVATEKEY."\n");}
if (!file_exists(WSDL)) {exit("Failed to open ".WSDL."\n");}
if ( $argc < 2 ) {ShowUsage($argv[0]); exit();}
$SERVICE=$argv[1];
CreateTRA($SERVICE);
$CMS=SignTRA();
$TA=CallWSAA($CMS);
if (!file_put_contents("TA.xml", $TA)) {exit();}
?>

4
задан 28.11.2017, 10:45
2 ответа

getPersona(), этот mГ©todo не существует, я не понимаю хорошо, что estГЎs консультируясь, этого файла tenes, что setear

define ("CERT", "ghf.crt");       # The X.509 certificate in PEM format
define ("PRIVATEKEY", "ghf.key"); # The private key correspoding to CERT (PEM)

и если атмосфера с, тот, который queres работать HML или Prod

define ("URL", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms");
define ("URL", "https://wsaa.afip.gov.ar/ws/services/LoginCms");

больше ничто. в response у тебя будут token и sign, чтобы производить

2
ответ дан 24.11.2019, 04:02

Здесь есть SDK в php, что функционирует https://github.com/AfipSDK/afip.php/tree/master/src/Class

может подавать тебе как острие ногу, чтобы реализовывать твой.

0
ответ дан 24.11.2019, 04:02