Back to Website
Product Documentation Purchasing Configure & Use Test an integration

Testing an Integration

Once you've configured a PunchOut integration, you can test it in two stages.

  1. Synthetic testing via swagger: In this method you use a configured integration user to test the PunchOut setup request and order request from swagger.
  2. End-to-end testing. In this method you configure urls at PunchOut to point to your domain and then start the flow from PunchOut.

Stage 1: Synthetic testing via swagger

SetupRequest

Using swagger and cXML, make an api call to setup the PunchOut request. Replace [DOMAIN] with your Kodaris domain and replace [IDENTITY] and [SHARED_SECRET] with your PunchOut credentials.

Endpoint: https://[DOMAIN]/services?urls.primaryName=User%20API#/PunchOut%20API/setupUsingPOST

Payload

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.1.009/cXML.dtd">
<cXML payloadID="[PLACEHOLDER]" timestamp="2022-07-28T07:27:26">
   <Header>
      <From>
         <Credential domain="NetworkID">
            <Identity>[IDENTITY]</Identity>
         </Credential>
      </From>
      <To>
         <Credential domain="[PLACEHOLDER]">
            <Identity>[PLACEHOLDER]</Identity>
         </Credential>
      </To>
      <Sender>
         <Credential domain="[PLACEHOLDER]">
            <Identity>[IDENTITY]</Identity>
            <SharedSecret>[SHARED_SECRET]</SharedSecret>
         </Credential>
         <UserAgent>[PLACEHOLDER]</UserAgent>
      </Sender>
   </Header>
   <Request deploymentMode="production">
      <PunchOutSetupRequest operation="create">
         <BuyerCookie>[PLACEHOLDER]</BuyerCookie>
         <BrowserFormPost>
            <URL>https://example.com/cxml_cart</URL>
         </BrowserFormPost>
      </PunchOutSetupRequest>
   </Request>
</cXML>

Result

If you were successfully authenticated, you will see a StartPage element in the cXML response.

<StartPage>
    <URL>[START_PAGE_URL]</URL>
</StartPage>

Copy the [START_PAGE_URL] value, and navigate to the URL in browser. You will be logged in as a customer. Ensure the integration user's username is in the site header.

Next:

  1. Add products to cart.
  2. Proceed to checkout.
  3. Fill in the billing and shipping addresses
  4. At the 3rd step of the checkout, there should be a "Checkout with PunchOut" option and a “Place Order” button. Clicking the button will generate cart xml and post to the test url (BrowserFormPost > URL from the SetupRequest). On a real setup request from PunchOut there will be a real URL.

OrderRequest

Using swagger and cXML, perform an api call to create the order request. Replace [DOMAIN] with your Kodaris domain and replace [IDENTITY] and [SHARED_SECRET] with your PunchOut credentials.

Endpoint: https://[DOMAIN]/services?urls.primaryName=User%20API#/PunchOut%20API/orderUsingPOST

Payload (Two examples are provided)

Payload 1 (OrderRequest-From-[PLACEHOLDER].xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.1.009/cXML.dtd">
<cXML payloadID="[PLACEHOLDER]" timestamp="2022-07-21T07:27:26">
   <Header>
      <From>
         <Credential domain="NetworkID">
            <Identity>[IDENTITY]</Identity>
         </Credential>
      </From>
      <To>
         <Credential domain="birchstreet.com">
            <Identity>[PLACEHOLDER]</Identity>
         </Credential>
      </To>
      <Sender>
         <Credential domain="birchstreet.com">
            <Identity>[IDENTITY]</Identity>
            <SharedSecret>[SHARED_SECRET]</SharedSecret>
         </Credential>
         <UserAgent>V7</UserAgent>
      </Sender>
   </Header>
   <Request deploymentMode="production">
      <OrderRequest>
         <OrderRequestHeader orderDate="2022-07-21T07:20:08" orderID="[PLACEHOLDER]" type="new">
            <Total>
               <Money currency="CAD">0</Money>
            </Total>
            <ShipTo>
               <Address>
                  <Name xml:lang="en-us">[PLACEHOLDER]</Name>
                  <PostalAddress>
                     <DeliverTo>[PLACEHOLDER]</DeliverTo>
                     <Street>[PLACEHOLDER]</Street>
                     <City>[PLACEHOLDER]</City>
                     <State>NB</State>
                     <PostalCode>E5B 1T7</PostalCode>
                     <Country isoCountryCode="CA">CA</Country>
                  </PostalAddress>
                  <Email>[PLACEHOLDER]</Email>
                  <Phone name="work">
                     <TelephoneNumber>
                        <CountryCode isoCountryCode="">1</CountryCode>
                        <AreaOrCityCode>506</AreaOrCityCode>
                        <Number>[PLACEHOLDER]</Number>
                     </TelephoneNumber>
                  </Phone>
               </Address>
            </ShipTo>
            <BillTo>
               <Address addressID="1089">
                  <Name xml:lang="en-us">[PLACEHOLDER]</Name>
                  <PostalAddress>
                     <DeliverTo>[PLACEHOLDER]</DeliverTo>
                     <Street>[PLACEHOLDER]</Street>
                     <City>St. Andrews</City>
                     <State>NB</State>
                     <PostalCode>E5B 1T7</PostalCode>
                     <Country isoCountryCode="CA">CA</Country>
                  </PostalAddress>
                  <Phone name="work">
                     <TelephoneNumber>
                        <CountryCode isoCountryCode="">1</CountryCode>
                        <AreaOrCityCode>506</AreaOrCityCode>
                        <Number>[PLACEHOLDER]</Number>
                     </TelephoneNumber>
                  </Phone>
               </Address>
            </BillTo>
            <Shipping>
               <Money currency="CAD">0</Money>
               <Description xml:lang="en-us" />
            </Shipping>
            <Tax>
               <Money currency="CAD">0</Money>
               <Description xml:lang="en-us" />
            </Tax>
            <Extrinsic name="Cookie">[PLACEHOLDER]</Extrinsic>
            <Extrinsic name="SpanNumber">[PLACEHOLDER]</Extrinsic>
            <Extrinsic name="Department">Rooms Division</Extrinsic>
         </OrderRequestHeader>
         <ItemOut quantity="4" lineNumber="1">
            <ItemID>
               <SupplierPartID>[PLACEHOLDER]</SupplierPartID>
               <SupplierPartAuxiliaryID />
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">2.16</Money>
               </UnitPrice>
               <Description xml:lang="en-us">MOEN 4IN AQUADRAINPLUNGER 6IN HANDLE</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
               <Classification domain="" />
               <Extrinsic name="ItemPickingInstructions" />
               <Extrinsic name="OrderPickingInstructions" />
               <Extrinsic name="Comments" />
               <Extrinsic name="RoutingInstructions" />
               <Extrinsic name="InvoicingInstructions" />
               <Extrinsic name="RequestedDeliveryDate" />
               <Extrinsic name="OrderCustomer" />
            </ItemDetail>
            <Shipping>
               <Money currency="CAD">0</Money>
               <Description xml:lang="en-us" />
            </Shipping>
         </ItemOut>
         <ItemOut quantity="1" lineNumber="2">
            <ItemID>
               <SupplierPartID>400229</SupplierPartID>
               <SupplierPartAuxiliaryID />
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">90.23</Money>
               </UnitPrice>
               <Description xml:lang="en-us">20 X 25 X 2IN PLEATEDAIR FILTER BOX OF 12</Description>
               <UnitOfMeasure>BX</UnitOfMeasure>
               <Classification domain="" />
               <Extrinsic name="ItemPickingInstructions" />
               <Extrinsic name="OrderPickingInstructions" />
               <Extrinsic name="Comments" />
               <Extrinsic name="RoutingInstructions" />
               <Extrinsic name="InvoicingInstructions" />
               <Extrinsic name="RequestedDeliveryDate" />
               <Extrinsic name="OrderCustomer" />
            </ItemDetail>
            <Shipping>
               <Money currency="CAD">0</Money>
               <Description xml:lang="en-us" />
            </Shipping>
         </ItemOut>
      </OrderRequest>
   </Request>
</cXML>

Payload 2 (OrderRequest-From-Yardi-5041511-0020C.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd>
<cXML payloadID="[PLACEHOLDER]" timestamp="2022-07-19T13:04:03" xml:lang="en-US">
   <Header>
      <From>
         <Credential domain="DUNS">
            <Identity>[IDENTITY]</Identity>
         </Credential>
      </From>
      <To>
         <Credential domain="DUNS">
            <Identity>[PLACEHOLDER]</Identity>
         </Credential>
      </To>
      <Sender>
         <Credential domain="DUNS">
            <Identity>[IDENTITY]</Identity>
            <SharedSecret>[SHARED_SECRET]</SharedSecret>
         </Credential>
         <UserAgent />
      </Sender>
   </Header>
   <Request>
      <OrderRequest>
         <OrderRequestHeader orderDate="2022-07-19T00:00:00" orderID="001-3318091" type="new">
            <Total>
               <Money currency="CAD">1058.15</Money>
            </Total>
            <ShipTo>
               <Address addressID="0020C" isoCountryCode="CA">
                  <Name xml:lang="en">[PLACEHOLDER]</Name>
                  <PostalAddress name="default">
                     <DeliverTo>[PLACEHOLDER]</DeliverTo>
                     <Street>[PLACEHOLDER]</Street>
                     <City>Airdrie</City>
                     <State>AB</State>
                     <PostalCode>T4A 0T4</PostalCode>
                     <Country isoCountryCode="CA">CAN</Country>
                  </PostalAddress>
                  <Email name="default">[PLACEHOLDER]</Email>
               </Address>
            </ShipTo>
            <BillTo>
               <Address addressID="466074" isoCountryCode="CA">
                  <Name xml:lang="en">[PLACEHOLDER]</Name>
                  <PostalAddress name="default">
                     <DeliverTo>[PLACEHOLDER]</DeliverTo>
                     <Street>[PLACEHOLDER]</Street>
                     <Street>[PLACEHOLDER]</Street>
                     <City>GUELPH</City>
                     <State>ON</State>
                     <PostalCode>N1H 2S8</PostalCode>
                     <Country isoCountryCode="CA">CAN</Country>
                  </PostalAddress>
               </Address>
            </BillTo>
            <Contact role="endUser">
               <Name xml:lang="en">[PLACEHOLDER]</Name>
               <Email name="default">[PLACEHOLDER]</Email>
            </Contact>
         </OrderRequestHeader>
         <ItemOut lineNumber="1" quantity="4">
            <ItemID>
               <SupplierPartID>107352</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">6.99</Money>
               </UnitPrice>
               <Description xml:lang="en">DAP 300ML ALEX FLEXPREMIUM SEALANT WHITE, Mfr=[PLACEHOLDER], SKU=107352</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="2" quantity="1">
            <ItemID>
               <SupplierPartID>116151</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">77.99</Money>
               </UnitPrice>
               <Description xml:lang="en">FIDO PET WASTE BAGGIESCASE OF 10, Mfr=H[PLACEHOLDER], SKU=116151</Description>
               <UnitOfMeasure>CS</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="3" quantity="1">
            <ItemID>
               <SupplierPartID>117772</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">19.99</Money>
               </UnitPrice>
               <Description xml:lang="en">MEDIUM YELLOW LINED LATEX GLOVE PKG OF 12 PR, Mfr=[PLACEHOLDER], SKU...</Description>
               <UnitOfMeasure>PK</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="4" quantity="4">
            <ItemID>
               <SupplierPartID>117796</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">1.59</Money>
               </UnitPrice>
               <Description xml:lang="en">HEAVY-DUTY SCRUBBINGSPONGE, Mfr=[PLACEHOLDER], SKU=117796</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="5" quantity="1">
            <ItemID>
               <SupplierPartID>117965</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">69.98</Money>
               </UnitPrice>
               <Description xml:lang="en">ANGEL SOFT 2 PLY BATHTISSUE CASE OF 40, Mfr=[PLACEHOLDER], SKU=117965</Description>
               <UnitOfMeasure>CS</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="6" quantity="1">
            <ItemID>
               <SupplierPartID>117989</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">51.98</Money>
               </UnitPrice>
               <Description xml:lang="en">PREFERENCE PERFORATEDROLL TOWEL CASE OF 30, Mfr=[PLACEHOLDER], SKU=1...</Description>
               <UnitOfMeasure>CS</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="7" quantity="1">
            <ItemID>
               <SupplierPartID>151476</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">167.99</Money>
               </UnitPrice>
               <Description xml:lang="en">MIRACLE CLOTH TOWELSWHITE 16X16IN CS OF 50, Mfr=[PLACEHOLDER], SKU=1...</Description>
               <UnitOfMeasure>CS</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="8" quantity="9">
            <ItemID>
               <SupplierPartID>202411</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">7.99</Money>
               </UnitPrice>
               <Description xml:lang="en">SPRAYWAY 539 G AEROSOLFOAMING GLASS CLEANER, Mfr=[PLACEHOLDER], SKU=...</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="9" quantity="2">
            <ItemID>
               <SupplierPartID>202414</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">28.99</Money>
               </UnitPrice>
               <Description xml:lang="en">33IN SUCTION CUP REACHER/LITTER PICKER, Mfr=[PLACEHOLDER], SKU=202414</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="10" quantity="2">
            <ItemID>
               <SupplierPartID>203344</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">27.45</Money>
               </UnitPrice>
               <Description xml:lang="en">42.5X48 BLK SUPRSTRG VALGARBAGE BAGS CASE OF 50, Mfr=[PLACEHOLDER], ...</Description>
               <UnitOfMeasure>CS</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="11" quantity="12">
            <ItemID>
               <SupplierPartID>281203</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">15.99</Money>
               </UnitPrice>
               <Description xml:lang="en">ALUMINUM REPLACEMENTRANGE HOOD FILTER, Mfr=[PLACEHOLDER], SKU=281203</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="12" quantity="3">
            <ItemID>
               <SupplierPartID>340802</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">14.99</Money>
               </UnitPrice>
               <Description xml:lang="en">LED BULB 9.8W A19 4100KPKG OF 6, Mfr=[PLACEHOLDER], SKU=340802</Description>
               <UnitOfMeasure>PK</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="13" quantity="2">
            <ItemID>
               <SupplierPartID>354473</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">10.49</Money>
               </UnitPrice>
               <Description xml:lang="en">11 OZ GRAPHITE EXTREMEQUICK DRY LUBRICANT, Mfr=[PLACEHOLDER], SKU=35...</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="14" quantity="4">
            <ItemID>
               <SupplierPartID>416345</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">14.54</Money>
               </UnitPrice>
               <Description xml:lang="en">ASPEN LOW FLOW SHOWERHEAD 1.75 GPM CHROME, Mfr=[PLACEHOLDER], SKU=41...</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="15" quantity="6">
            <ItemID>
               <SupplierPartID>501145</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">10.66</Money>
               </UnitPrice>
               <Description xml:lang="en">CHROME DIECAST TUB SPOUTWITH DIVERTER SLIP ON, Mfr=[PLACEHOLDER], SK...</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="16" quantity="12">
            <ItemID>
               <SupplierPartID>509373</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">4.39</Money>
               </UnitPrice>
               <Description xml:lang="en">LED 7W PAR20 40 DEGREEFLOOD 3000K, Mfr=[PLACEHOLDER], SKU=[PLACEHOLDER]</Description>
               <UnitOfMeasure>EA</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
         <ItemOut lineNumber="17" quantity="6">
            <ItemID>
               <SupplierPartID>829500</SupplierPartID>
            </ItemID>
            <ItemDetail>
               <UnitPrice>
                  <Money currency="CAD">3.08</Money>
               </UnitPrice>
               <Description xml:lang="en">WARDROBE BI-FOLD DOORGUIDE NYLON PKG OF 2, Mfr=[PLACEHOLDER], SKU=[PLACEHOLDER]...</Description>
               <UnitOfMeasure>PK</UnitOfMeasure>
            </ItemDetail>
         </ItemOut>
      </OrderRequest>
   </Request>
</cXML>

Result

If the order is accepted for processing you will get the following success code.

<Status code="200" text="OK">Success</Status>

Then OrderRequest should now be processed in the background within a few seconds. You can then check if new order appeared in Operations Portal > Orders.

Note: You cannot duplicate an existing (same) order. Same order is identified by OrderRequestHeader.orderID in request and Purchase Order # in the Operations Portal. If it is needed to test same OrderRequest example again you must change OrderRequestHeader.orderID value.

In this article