"

Handbok SystemQ affärssystem

Skicka order mellan olika affärssystem med webservices

Webservices utnyttjar befintlig infrastruktur för att skicka data mellan olika företags servrar.
Data skickas som vanliga html-anrop eller att strukturellt formateras i xml-format.

  • Internet
  • html och xml
  • Webserver
Denna beskrivning hanterar order mellan 2 kända affärskontakter
  1. Login och svar med token
  2. Skicka order
  3. Inställningar partner
  4. Login
  5. Ordersvar
  6. User och password
  7. Inställningar partner
  8. Artikelnr
    • Artikelnr kontroll, accepetans
    • Okända artikelnr
    • Koppla till befintliga artikelnr

Login och svar med token

Den sändande servern börjar med att sända ett html-anrop:

  
http://shop.190000.se/cgi-bin/eloq/eloq.cgi/Www83?rule=714&user=Nnnn&password=Pppp"

Programexempel i Eloquence:

 
            Part.Server$="shop.190000.se"
            Uri$="/cgi-bin/eloq/eloq.cgi/Www83?rule=714&user="&TRIM$(Person.Kod$)&"&password="&Person.Password$
            GOSUB Load_dll
            Message$="GET "&Uri$&" HTTP/1.1"&CHR$(13)&CHR$(10)
            Message$=Message$&"Host: "&Part.Server$&CHR$(13)&CHR$(10)
            Message$=Message$&CHR$(13)&CHR$(10)
            CALL DLL Net("Connect",Part.Server$,"80")
            CALL DLL Net("Send",Message$)
            CALL DLL Net("Recv",Buf_net$,30000,Timeout)
            CALL DLL Net("Disconnect")
            Body$=Buf_net$


Om User och password stämmer skickas svar i XML med en haschad tidsbunden token (Body$)

        <LoginRespons>
            <TokenTimeStamp>"20171226 11:20:45"</TokenTimeStamp>
            <Token>t3v8mU3PPL8Kv2xbK3ceyCRhqsmrg32tCMf9D9NEZUGthhXUÚDdp4PWMDNRE5bn9</Token> 
        </LoginRespons>
        



Skicka order

Efter att fått LoginRespons skickas en XML Order med token, time-stamp och organisationsnummer:

Typical frameworks provide a high-level API to do web requests, so the required information for a developer to address our service would be:

Type of request: HTTP POST URL: http://shop.190000.se/cgi-bin/eloq/eloq.cgi/Www83 Content-type: text/xml

And of course a description of the XML request format.

...

Content_lenght är antal tecken i <Order>, exkl. header

Content-type: text/xml Content-length: NNNN

<Order> <TokenTimeStamp>171220 15:29:14</TokenTimeStamp> <Token>t3v8mU3PPL8Kv2xbK3ceyCRhqsmrg32tCMf9D9NEZUGthhXUÚDdp4PWMDNRE5bn9</Token> <IssueDate>171220</IssueDate> <IssueTime>15:29:14</IssueTime> <Note> Text Text .... </Note> <Contract> <ID>4013<ID> </Contract> <BuyerCustomerParty> <Party> <CompanyID>556477-0765</CompanyID> </Party> <PaymentType> AZ eller liknande </PaymentType> </BuyerCustomerParty> <Delivery> <DeliveryLocation> <Location> <Adress> <BuildingNumber>Gärtuna B613</BuildingNumber> <Department>Operations</Department> </Adress> </Location> </DeliveryLocation> <DeliveryParty> <Party> <Contact>Birgitta Borg</Contact> <Telephone>08 555 444 33</Telephone> <Mobil>070 88 77 66</Mobil> <ElectronicMail>birgitta.b@foretag.se</ElectronicMail> </Party> </DeliveryParty> </Delivery> <OrderLine> <LineItem> <ID>10 Posnummer i order </ID> <Price> <PriceAmount> Ange pris på varan </PriceAmount> </Price> <Item> <Description>Varans namn </Description> </Item> <SellersItemIdentification> <ID>157928</ID> </SellersItemIdentification> <Quantity unitCode="tfp">2</Quantity> </LineItem> </OrderLine> </Order>

Övriga taggar kan ingå men kommer inte att tolkas. Med organisationsnummer hämtas partnerinställningar och token.
Denna token haschas med time-stamp i skickad <Order> och jämförs med token i <Order>.
Är allt OK. Lagras en order i SystemQ med status WKOP.

Ordersvar

I partnerinställningar kan typ av ordersvar väljas

Ordersvar retuneras efter att en <Order> har mottagits och bearbetats/lagrats i affärssystemet

          Content-type: text/xml          
          
          <xml version='1.0' encoding='ISO8859-1'?>
           
           <OrderResponse xmlns='urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2' 
               xmlns:cbc='urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2'  
               xmlns:cac='urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2' 
               xmlns:xs='http://www.w3.org/2001/XMLSchema'> 
               
             <cbc:UBLVersionID>2.1</cbc:UBLVersionID> 
             <cbc:CustomizationID>urn:www.cenbii.eu:transaction:biitrns076:ver2.0:extended:urn:www.peppol.eu:bis:peppol28a:ver1.0</cbc:CustomizationID>  
             <cbc:ProfileID>urn:www.cenbii.eu:profile:bii28:ver2.0</cbc:ProfileID> 
             
             <cbc:ID>Kundorder.Er_order$</cbc:ID>              
             <cbc:IssueDate>180315</cbc:IssueDate> 
             <cbc:IssueTime>12:30:15"&TIME$&"> 
             <cbc:Note>Ordern mottagen med  SystemQ webbservices</cbc:Note> 
             <cbc:DocumentCurrencyCode listID='ISO4217'>SEK</cbc:DocumentCurrencyCode> 
             <cac:OrderReference><obc:ID>Kundorder.Ordernr$</cbc:ID></cac:OrderReference> 
             
             <cac:SellerSupplierParty> 
                   <cac:Party> 
                      <cac:PartyIdentification><cbc:ID schemeID='SE:ORGNR'>Eget.Org_nr$</cbc:ID></cac:PartyIdentification> 
                      <cac:PartyName><cbc:Name>&Eget.Foretagsnamn$&"</cbc:Name></cac:PartyName> 
                   </cac:Party>
              </cac:SellerSupplierParty> 
              
              <cac:BuyerCustomerParty>  
                   <cac:Party> 
                         <cac:PartyIdentification> <cbc:ID schemeID='SE:ORGNR'>Kund.Org_nr$</cbc:ID> </cac:PartyIdentification>                           
                         <cac:PartyName> <cbc:Name> Foretag.Foretagsnamn$</cbc:Name> 
                         </cac:PartyName> 
                   </cac:Party> 
              <cac:BuyerCustomerParty> 
              
              Orderline repeteras   
                             
              <OrderLine>              
                   <cac:LineItem> 
                       <cbc:ID>Order_rad.Pos</cbc:ID> 
                           <cbc: Quantity>Order_rad.Best_antal</cbc:Quantity> 
                           <cbc:LineStatusCode>Order_rad.O_status$
                           
                                     Statuskod WKOP innebär att raden kommer att levereras
                                     Statuskod SKIP, raden levereras ej 
                           
                           </cbc:LineStatusCode>  
                           <cac:Item> 
                               <cbc:Name>Order_rad.Rad_text$</cbc:Name"> 
                               <cac:SellersItemIdentification>                                
                                    <cbc:ID>Order_rad.Artikelnr$</cbc:ID> 
                               <cac:SellersItemIdentification> 
                           </cac:Item> 
                    </cac:LineItem>        
               </OrderLine>
      </OrderResponse>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   

User och password

I Affärskontakter läggs en fiktiv person som används för webservices.

Systemadministratören har rättighet att se och ändra lösenord.

Inställningar partner

För det sändande företaget skall vi göra inställningar. Detta gör vi i Artkiv->Egenskaper->Inställningar webhandel

En för företaget unik token skapas

Vilka ordersvar som skall skicka väljs

Artikelnummer

  • Artikelnummer kontroll, acceptans vid mottagande av en order i webbservices

    Artikelnummer som finns i kundpriser accepteras, orderraden får status WKOP

    Kunden kan använda sitt eget artikelnummer. För att aktivera detta läggs kundens artikelnummer i kundpriser

  • Okända artikelnummer

    Skickas ett artikelnummer som inte finns, läggs en ny artikel upp. Även ett kundpris utan giltighetstid lagras

    Orderraden får status SKIP

  • Koppla till befintliga artikelnummer

    Har ett nytt artikelnummer lagrats vid mottagandet av en order kan man koppla detta till ett befintligt artikelnummer genom att använda rutinen "Byt artikelnummer"