рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВрдиреЗ рдорд┐рддреНрд░ рдХреНрд╡рд┐рдХрдмреБрдХ рдФрд░ PHP рд╕рд╛рдЗрдЯ рдХреИрд╕реЗ рдмрдирд╛рдИ

рдПрдХ рджрд┐рди, рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХреНрд╡рд┐рдХрдмреБрдХ (рдЗрд╕рдХреЗ рдмрд╛рдж QB) рдФрд░ рдЙрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рдПрдХреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдЬреЛ рд╣рдо рдЙрд╕рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: " QB рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? "ред

рдереЛрдбрд╝реА рдЧреБрдЧрд▓реА, рдореБрдЭреЗ рд╡рд╣ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рддрд▓рд╛рд╢ рдереАред рдХреНрд╡рд┐рдХрдмреБрдХ рдЫреЛрдЯреЗ рд╡реНрдпрд╡рд╕рд╛рдпреЛрдВ (рдпреВрдПрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдмрд╛рдЬрд╛рд░) рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдЦрд╛рдВрдХрди рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рдпрд╣ 1 рд╕реА рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реИ рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдЬреАрдпреВрдЖрдИ рдФрд░ рдХреБрдЫ рд╢рд╛рдВрдд рдЕрдЪреНрдЫрд╛рдЗрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред QB рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ ( рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП ) рдФрд░, рдХреБрдЫ рдХреНрд▓рд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рдХрдВрдкрдиреА рдХреЛ рддреИрдирд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд▓реЗрдЦрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдЕрдм рдореИрдВ, рдХрдо рд╕реЗ рдХрдо, рдореЗрд░реЗ рджреБрд╢реНрдорди рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рдПрдХ рдХрдо рд╕рдорд╕реНрдпрд╛ред рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЖрдк QB рдХреЛ рдЬреЛ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд╕рд╛рде рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ:



рд╣рдореНрдо, рдкреАрдПрдЪрдкреА рдПрд╕рдбреАрдХреЗ (рдХрдорд┐рдВрдЧ рд╕реВрди) рдЖрдЦрд┐рд░реА рдЙрдореНрдореАрдж рд╣реИ ... рдореИрдВ рд▓рдЧрднрдЧ рдирд┐рд░рд╛рд╢ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдореБрдЭреЗ рдмрдЪрд╛ рд▓рд┐рдпрд╛ред рдпрд╣ рдХрд┐рд╕ рддрд░рд╣ рдХреА рдЪреАрдЬ рд╣реИ - рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ ? рдЗрд╕рдХреЗ рд▓рд┐рдП рдСрдл рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреЗрдЬ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡реЗ рдХреНрд╡рд┐рдХрдмреБрдХ рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЧрд╛рдЗрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рдм (рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдСрдл рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдердХ рдЧрдпрд╛ рд╣реВрдВ)ред


рдПрдХ рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ рдХреНрдпрд╛ рд╣реИ?
рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░, QB рдФрд░ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ (рдпрд╣ QB рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рд╣реИ)ред рдЯрд╛рдЗрдордЖрдЙрдЯ рдпрд╛ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рд╕реЗ, рд╡рд╣ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпреВрдЖрд░рдПрд▓ рдкрд░ рджрд╕реНрддрдХ рджреЗрддрд╛ рд╣реИ, рдЙрд╕ рд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ QB рд╕реЗ рдкреВрдЫрдиреЗ рдФрд░ рдЙрд╕реЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ; QB рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд╡рд╣ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╡рд╣ рд╕рд╛рдЗрдЯ рдкрд░ рджрд╕реНрддрдХ рджреЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ QB рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬреЗрдЧрд╛ред

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ...
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рджрд╕реНрддрдХ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдпрд╣ * .QWC рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

clients.QWC
<?xml version="1.0"?> <QBWCXML> <AppName>QuickBooks Integrator (clients)</AppName> <AppID></AppID> <AppURL>http://localhost/quickbooks/clients.php</AppURL> <AppDescription>Export Customers from QB to csv file</AppDescription> <AppSupport>http://localhost/</AppSupport> <UserName>admin</UserName> <OwnerID>{90A44FB7-33D6-4815-AC85-AC86A7E7123B}</OwnerID> <FileID>{57F3B9B6-86F6-4FCC-B1FF-967DE1813123}</FileID> <QBType>QBFS</QBType> <IsReadOnly>false</IsReadOnly> </QBWCXML> 





рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ 5 рдорд┐рдирдЯ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 <Scheduler> <RunEveryNMinutes>5</RunEveryNMinutes> </Scheduler> 


AppURL рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдкреВрд░рдХ: рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдкрд░ https (рдпрд╛ рдЕрд╕рд▓реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреИрд╕рд╛ рдирд╣реАрдВ рд╣реИ) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ 2 рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ:

1) рдЬрд┐рд╕ рд╣реЛрд╕реНрдЯ рдкрд░ QB рдЦрдбрд╝рд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рд╣рдо рд╕рд░реНрд╡рд░ рдХреЗ IP рдФрд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдбреЛрдореЗрди рдирд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╕рд░реНрд╡рд░ рдкрд░ Apache рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЗрд╕ рдбреЛрдореЗрди рдХреЛ рдкрдврд╝рдирд╛ рди рднреВрд▓реЗрдВред
2) рд╣рдо рдПрдХ рд╕реНрд╡-рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рд░реНрд╡рд░реЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ ( рдЙрджрд╛рд╣рд░рдг )

рдЖрджреЗрд╢ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреА рдЬрд░реВрд░рдд рд╣реИ:
- QB рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдЙрд╕ рдХрдВрдкрдиреА рдХреЛ рдЦреЛрд▓реЗрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рдо рдХрд░реЗрдЧрд╛
- рдЦреБрд▓рд╛ рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░
- рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, qwc рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
- рдЬрдм рдЖрдк рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВрдЧреЗ, рддреЛ QB рдЖрдкрд╕реЗ рдкреВрдЫреЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ QB рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, "рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ" рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛)
- рдЬрдм рдЖрдк рдЕрдВрддрд┐рдо рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдкрд░ "Done" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ рдкрд░ рд▓реМрдЯреЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдПрдбрдорд┐рди" рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЪреЗрдХрдмреЙрдХреНрд╕ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкрдбреЗрдЯ рдЪрдпрдирд┐рдд рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛





рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдмрд╛рд░реА рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рд╣рдордиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ localhost/quickbooks/clients.php localhost/quickbooks/clients.php , рдЕрдм рдЗрд╕реЗ рдмрдирд╛рдиреЗ рджреЗрдВред рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ SOAP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рдХреЛ SOAP рд╕рд░реНрд╡рд░ рдХреЛ рдЙрдард╛рдирд╛ рд╣реЛрдЧрд╛ред

clients.php
 <?php /** * File for integration QB * QB Webconnector send soap request to this file * * @package QB SOAP */ /** * Log function * * @param string $mess */ function _log($mess = '') { $file_name = './log/clients.log'; if(!file_exists(dirname($file_name))) mkdir(dirname($file_name), 0777); $f = fopen($file_name, "ab"); fwrite($f, "==============================================\n"); fwrite($f, "[" . date("m/d/YH:i:s") . "] ".$mess."\n"); fclose($f); } /** * Log function * * @param string $mess */ function requestId($id = '') { $file_name = './log/clients_id.log'; if(!file_exists(dirname($file_name))) mkdir(dirname($file_name), 0777); // save id into file if(trim($id) !== ''){ $f = fopen($file_name, "c+b"); fwrite($f, $id); fclose($f); } $id = trim(file_get_contents($file_name)); return $id; } /** * System variables */ define('QB_LOGIN', 'admin'); define('QB_PASSWORD', ''); define('QB_TICKET', '93f91a390fa604207f40e8a94d0d8fd11005de108ec1664234305e17e'); /** * Main class for SOAP SERVER */ require 'qb_clients.php'; /** * Create SOAP server */ $server = new SoapServer("qbwebconnectorsvc.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE)); $server->setClass("Qb_Clients"); $server->handle(); 


рд▓реЗрдирджреЗрди рдЖрдИрдбреА рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП requestId () рдлрд╝рдВрдХреНрд╢рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬрд┐рд╕реЗ рдЖрдЧреЗ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рд╣рдо рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдПрдХ рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо 500 рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЛрдб рдХрдо рд╣реИред рдЖрдкрдХреЛ QB_LOGIN рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, QB_PASSWORD рдФрд░ QB_TICKET рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВред рдЕрдВрддрд┐рдо 3 рд▓рд╛рдЗрдиреЗрдВ - рдпрд╣ рдПрдХ SOAP рд╕рд░реНрд╡рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИред qbwebconnectorsvc.wsdl рдореБрдЭреЗ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдЗрдЯ рдХреЗ рдЦреБрд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдБ рдерд╛ (рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдПрдХ рдирдпрд╛ рд╕реНрд╡рд░реВрдк рдХрд┐рдпрд╛ рдерд╛)ред

рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рд╡реЗрдм рдХрдиреЗрдХреНрдЯрд░ рдХреЗрд╡рд▓ 8 рд╢рдмреНрджреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ: ClientVersion , serverVersion , рдкреНрд░рдорд╛рдгреАрдХреГрдд , sendRequestXML , ReceResponseXML , connectionError , getLastError рдФрд░ closeConnection ред

qb.php
 <?php /** * File contain base QB class and Result class (empty class for Qb reaponse) */ /** * Response class (empty class) * * @package QB SOAP * @version 2013-10-20 */ class Response{ } /** * Base class for QuickBooks integration * * @package QB SOAP * @version 2013-10-20 */ class Qb { /** * Response object * @var string */ var $response = ''; /** * Constructor * * @return void * @access public * @version 2013-10-20 */ public function __construct() { $this->response = new Response(); } /** * Function return client version * * @return string * @param object $param * @access public * @version 2013-10-20 */ public function clientVersion($param = '') { $response->clientVersionResult = ""; return $response; } /** * Function return server version * * @return string * @access public * @version 2013-10-20 */ public function serverVersion() { $this->response->serverVersionResult = ""; return $this->response; } /** * Function try authenticate user by username/password * * @return string * @param object $param * @access public * @version 2013-10-20 */ public function authenticate($param = '') { if(($param->strUserName == QB_LOGIN) && ($param->strPassword == QB_PASSWORD)) $this->response->authenticateResult = array(QB_TICKET, ""); else $this->response->authenticateResult = array("", "nvu"); return $this->response; } /** * Function return last error * * @return string * @param object $param * @access public * @version 2013-10-20 */ public function connectionError($param = '') { $this->response->connectionErrorResult = "connectionError"; return $this->response; } /** * Function return last error * * @return string * @param object $param * @access public * @version 2013-10-20 */ public function getLastError($param = '') { $this->response->getLastErrorResult = "getLastError"; return $this->response; } /** * Function close connection * * @return string * @param object $param * @access public * @version 2013-10-20 */ public function closeConnection($param = '') { $this->response->closeConnectionResult = "Complete"; return $this->response; } } 




рдиреАрдЪреЗ рджреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред

qb_clients.php
 <?php /** * File contains class Qb_Clients() extends Qb() */ /** * Include base class for SOAP SERVER */ require 'qb.php'; /** * Class for import all clients from Qb * * @package QB SOAP * @version 2013-10-20 */ class Qb_Clients extends Qb { /** * Function send request for Quickbooks * * @return string * @param object $param * @access public * @version 2013-10-20 */ public function sendRequestXML($param = '') { $id = requestId(); // <!-- ActiveStatus may have one of the following values: ActiveOnly [DEFAULT], InactiveOnly, All --> if($param->ticket == QB_TICKET){ $request = '<?xml version="1.0" encoding="utf-8"?> <?qbxml version="12.0"?> <QBXML> <QBXMLMsgsRq onError="stopOnError"> <CustomerQueryRq requestID="'.time().'" metaData="NoMetaData" iterator="'.(($id != '')?'Continue':'Start').'" '.(($id != '')?'iteratorID="'.$id.'"':'').'> <MaxReturned>500</MaxReturned> <ActiveStatus>ActiveOnly</ActiveStatus> </CustomerQueryRq> </QBXMLMsgsRq> </QBXML>'; $this->response->sendRequestXMLResult = $request; } else $this->response->sendRequestXMLResult = "E: Invalid ticket."; return $this->response; } /** * Function get response from QB * * @return string * @param object $param * @access public * @version 2013-03-15 */ public function receiveResponseXML($param = '') { $response = simplexml_load_string($param->response); $iteratorID = trim($response->QBXMLMsgsRs->CustomerQueryRs->attributes()->iteratorID); // set new iteratorID requestId($iteratorID); if( ($param->ticket == QB_TICKET) && isset($response->QBXMLMsgsRs->CustomerQueryRs->CustomerRet) ){ $rows = $response->QBXMLMsgsRs->CustomerQueryRs; settype($rows, 'array'); // if list contain only one item row if(isset($rows['CustomerRet']->ListID)) $rows = array($rows['CustomerRet']); else $rows = $rows['CustomerRet']; $data = array(); foreach ($rows as $i=>$r) { settype($r, 'array'); $data[] = array( 'qb_id' => trim($r['ListID']), 'qb_es' => trim($r['EditSequence']), 'is_active' => trim($r['IsActive']), 'phone' => trim($r['Phone']), 'notes' => trim($r['Notes']), 'fax' => trim($r['Fax']), 'company_name' => trim($r['Name']), 'b_email' => trim($r['Email']), 'b_email_other' => trim($r['Cc']), 'b_phone' => trim($r['AltPhone']), 'b_salutation' => trim($r['Salutation']), 'b_fname' => trim($r['FirstName']), 'b_lname' => trim($r['LastName']), 'b_address' => trim($r['BillAddress']->Addr1), 'b_address2' => trim($r['BillAddress']->Addr2), 'b_address3' => trim($r['BillAddress']->Addr3), 'b_city' => trim($r['BillAddress']->City), 'b_state' => trim($r['BillAddress']->State), 'b_country' => trim($r['BillAddress']->Country), 'b_zip' => trim($r['BillAddress']->PostalCode), ); } // echo data into log file _log(print_r($data,1)); $this->response->receiveResponseXMLResult = '30'; } else $this->response->receiveResponseXMLResult = '100'; return $this->response; } } 


рд▓рд╛рдЗрди <?qbxml version="12.0"?> рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ qbxml рдХреЗ 12 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдлрд┐рд▓рд╣рд╛рд▓, рдпрд╣ рдирд╡реАрдирддрдо рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рд╣реИ (рдпрд╣ 13 рд╡реАрдВ рдФрд░ 14 рд╡реАрдВ рдХреНрдпреВрдмреА рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ)ред Qbxml рд╕рдВрд╕реНрдХрд░рдг рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛, QB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рд╣реЛрдВрдЧреАред рд╕рднреА рдЙрдкрд▓рдмреНрдз рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдХреЗ рдЖрдк рдЙрди рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ QB рдХреЛ рднреЗрдЬреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрдиреНрд╣реЗрдВ рдЪрдпрди рд╕рдВрджреЗрд╢ рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреИрдм - рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред

рдкреБрдирд╢реНрдЪред рдПрдХ рд╣реИ ' рд▓реЗрдХрд┐рди ред' рдпрджрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП " CustomerAdd " рдЕрдиреБрд░реЛрдз рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрдиреБрд░реЛрдз "рд╕рдВрдкрд░реНрдХ" рдмреНрд▓реЙрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ qbxml рдХреЗ 12 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди (рдХреНрдпреЛрдВ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╣ рдПрдХ рд░рд╣рд╕реНрдп рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмрд┐рддрд╛рдпрд╛, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЧрд▓рддреА рд╕реЗ рдЙрд╕ рдордВрдЪ рдкрд░ рдирд╣реАрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рдХреБрдЫ qbxml v.12 рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рддрдереНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП :)

рдкреАрдПрд╕рдПрд╕ред рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ

Source: https://habr.com/ru/post/In200728/


All Articles