CyberStore Documentation
PunchOut Gateway and Order Module
In This Topic

New PunchOutGateway.aspx Page (#10460)

When licensed and configured for PunchOut CyberStore can allow remote applications that support the punchout cXML format to remotely authenticate into CyberStore in order to launch a shopper into an active browsing session, build a cart and eventually "Punch Out" from the shopping cart.

The PunchOutGateway.aspx is the CyberStore endpoint that external punch out applications may point to when sending login requests.

The processor will receive the cXML file and attempt to verify the credentials received. Once confirmed or denied, a response is sent back to the sending application as a response. When successful a specially formed URL will be within the response so that the requesting application can then be returned to the PunchOutGateway.aspx and successfully launch a browser session within their back office purchasing system.

A properly formatted cXML request may look like those found in the PunchOut Request IN and OUT (successful).zip file attached.

As a third party integration the request IN request and OUT response can be logged in the same manner as any external call via the Site Manager > Site Configuration screen's Logging tab. The Module called "PunchOut - Order" can be found in the list. Specifically the POMREQ abbreviation is used and stands for PunchOut Module REQuest.

Logged files can be retrieved and viewed in the Tools > External Call Logs screen.

Add PunchOut Credential Domain and Allowed Hostnames to Customer Settings (#10462)

Credential Domain The domain string value to be used in PunchOut requests for this Customer.
Allowed Hostnames or IP Addresses List of valid hostnames (e.g. www.yourdomain.com) or IP addresses (e.g. 10.1.2.3) which are authorized to make PunchOut requests on behalf of the Customer. One value per line. Any request not emanating from an address in the list will be rejected.

Add Generic-PunchOutOrderMessage.xslt into ecommerce and site xslt folders (#10501)

Example
Copy Code
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output version="1.0" encoding="UTF-8" standalone="yes" />
<xsl:output  method="xml" doctype-system="http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd" />
<xsl:template match="/">
<cXML payloadID="{CyberStore/Session/PayloadID}" timestamp="{CyberStore/TimeStamp}">
  <Header>
    <From>
      <Credential domain="NetworkID">
        <Identity><xsl:value-of select="CyberStore/Session/ToID"/></Identity>
      </Credential>
    </From>
    <To>
    <Credential domain="NetworkID">
      <Identity><xsl:value-of select="CyberStore/Session/FromID"/></Identity>
    </Credential>
    </To>
    <Sender>
      <Credential domain="www.yoursite.com"><Identity>PunchoutResponse</Identity></Credential>
      <UserAgent>YOURCOMPANY cXML V1.1</UserAgent>
    </Sender>
  </Header>
  <Message>
    <PunchOutOrderMessage>
      <BuyerCookie><xsl:value-of select="CyberStore/Session/BuyerCookie"/></BuyerCookie>
      <PunchOutOrderMessageHeader operationAllowed="edit">
        <Total><Money currency="USD"><xsl:value-of select="CyberStore/ShoppingCart/Subtotal"/></Money></Total>
      </PunchOutOrderMessageHeader>   
      <xsl:for-each select="CyberStore/ShoppingCart/ShoppingCartDetails/ShoppingCartDetail">
        <ItemIn quantity="{Quantity}">
          <ItemID>
            <SupplierPartID><xsl:value-of select="StockCode"/></SupplierPartID>
            <SupplierPartAuxiliaryID></SupplierPartAuxiliaryID>
          </ItemID>
          <ItemDetail>
            <UnitPrice><Money currency="USD"><xsl:value-of select="UnitPrice"/></Money></UnitPrice>
            <Description xml:lang="en"><xsl:value-of select="ParentItem/Name"/></Description>
            <UnitOfMeasure><xsl:value-of select="UnitLabel"/></UnitOfMeasure>
            <Classification domain="UNSPSC">000000000</Classification>
          </ItemDetail>
        </ItemIn>
      </xsl:for-each>
    </PunchOutOrderMessage>
  </Message>
</cXML>
</xsl:template>
</xsl:stylesheet>.