Edit a PunchOut Session
Your users may need to edit their punchout session because they may have forgotten to add something into their Purchase Request(PR) or their managers may have rejected a line item from their PR resulting in the need to remove a product from the session.
To proceed, make sure that your app has successfully made a Punch Out Order Message(POOM).
Overview
The "edit"
process is the same as the normal punchout process with a slight tweak to step 1. Punch Out Setup Request
Implementation
1. POSReq in edit mode
Send a POSReq in edit mode to your supplier's punchout url. The API details, required fields and sample XML document are available below.
API Details
The table below details the HTTP request to the PUNCHOUT_URL_PROVIDED_BY_SUPPLIER
.
Property | Value |
---|---|
URL | PUNCHOUT_URL_PROVIDED_BY_SUPPLIER |
Request Type | "POST" |
Content-Type | "application/xml" |
BODY CONTENT | XML Document ( See Below ) |
POSReq XML Document Required Fields
The table below documents all required fields for the POSReq "edit"
operation to be valid.
As it can be quite tough documenting XML documents, please search under column # from the table below to find where it is in the POSReq sample xml document.
# | Property | Description |
---|---|---|
{POSReq1} | *.From.Credential.Identity | Buyer's Id |
{POSReq2} | *.To.Credential.Identity | Supplier's Id |
{POSReq3} | *.Sender.Credential.Identity | System's Id |
{POSReq4} | *.Sender.Credential.SharedSecret | Shared secret |
{POSReq5} | *.PunchOutSetupRequest.BuyerCookie | A cookie that will be passed back in the POOM when the user has confirmed their cart. |
{POSReq6} | *.PunchOutSetupRequest.Extrinsic[name="UserEmail"] | The user's email |
{POSReq7} | *.PunchOutSetupRequest.Extrinsic[name="UniqueName"] | The user's name |
{POSReq8} | *.PunchOutSetupRequest.BrowserFormPost.URL | The webhook endpoint to send the POOM. |
{POSReq9} | *.PunchOutSetupRequest.ShipTo.Address[addressID] | The address identifier of the place where the goods will be delivered to. |
{POSReq10} | *.ItemOut[quantity] | The quantity requested |
{POSReq11} | *.ItemOut[lineNumber] | The n-th line |
{POSReq12} | *.ItemOut.ItemID.SupplierPartID | Supplier's product unique id received from {POOM8} |
{POSReq13} | *.ItemOut.ItemID.SupplierPartAuxiliaryID | Supplier's cart unique id received from {POOM9} |
{POSReq14} | *.ItemOut.SupplierID | Supplier's Id. Same as {POSReq2} |
Sample POSReq edit XML Document
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.038/cXML.dtd">
<cXML payloadID="0a109a9d-5302-4a06-9d6d-d9756bc77b96" timestamp="2019-05-16T21:26:43-07:00" xml:lang="en_US">
<Header>
<From>
<Credential domain="NetworkID">
<!-- {POSReq1} -->
<Identity>EZ01098002779-T</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkID">
<!-- {POSReq2} -->
<Identity>EZ01459860382-T</Identity>
</Credential>
</To>
<Sender>
<Credential domain="AribaNetworkUserId">
<!-- {POSReq3} -->
<Identity>sysadmin@ariba.com</Identity>
<!-- {POSReq4} -->
<SharedSecret>YOUR_SHARED_SECRET</SharedSecret>
</Credential>
<UserAgent>CAN BE ANYTHING</UserAgent>
</Sender>
</Header>
<Request>
<PunchOutSetupRequest operation="edit">
<!-- {POSReq5} -->
<BuyerCookie>your_unique_browser_cookie_to_identify_user_later</BuyerCookie>
<Extrinsic name="CostCenter">670</Extrinsic>
<!-- {POSReq6} -->
<Extrinsic name="UserEmail">test@eezee.com.sg</Extrinsic>
<!-- {POSReq7} -->
<Extrinsic name="UniqueName">catalog_tester</Extrinsic>
<BrowserFormPost>
<!-- {POSReq8} -->
<URL>https://example-eezee.com.sg/handle-punchout-order-message-endpoint</URL>
</BrowserFormPost>
<SupplierSetup>
<URL>https://api.eezee.sg/api/link-to-punchout</URL>
</SupplierSetup>
<ShipTo>
<!-- {POSReq9} -->
<Address addressID="26"></Address>
</ShipTo>
<!-- {POSReq10} ItemOut.quantity -->
<!-- {POSReq11} ItemOut.lineNumber -->
<ItemOut quantity="1" lineNumber="1">
<ItemID>
<!-- {POSReq12} -->
<SupplierPartID>5b35b4af4c8c63033d8aea45</SupplierPartID>
<!-- {POSReq13} -->
<SupplierPartAuxiliaryID>5d8b2c564500c71e5a586abf</SupplierPartAuxiliaryID>
</ItemID>
<!-- {POSReq14} -->
<SupplierID domain="networkid">EZ01459860382-T</SupplierID>
</ItemOut>
<!-- {POSReq10} ItemOut.quantity -->
<!-- {POSReq11} ItemOut.lineNumber -->
<ItemOut quantity="10" lineNumber="2">
<ItemID>
<!-- {POSReq12} -->
<SupplierPartID>5cffb0bd99d56933baf1ddaf</SupplierPartID>
<!-- {POSReq13} -->
<SupplierPartAuxiliaryID>5d8b2c564500c71e5a586abf</SupplierPartAuxiliaryID>
</ItemID>
<!-- {POSReq14} -->
<SupplierID domain="networkid">EZ01459860382-T</SupplierID>
</ItemOut>
</PunchOutSetupRequest>
</Request>
</cXML>
2. Next Steps
After making a successful Punch Out Setup Request, a response known as a POSRes will be returned. Continue to Step 2 of the standard punch out process to learn how to handle the POSRes and eventually update the PR in your procurement system.