I am trying to post a cXML message(PunchOutOrderMessage) to Coupa. The documentation states that I have to post the cXML to a hidden form. I don’t know exactly what setting I should use in pub.client.http to make this work. Here is the cXML documentation:
Instead of sending a PunchOutOrderMessage directly to the procurement application,
your Website encodes it as a hidden HTML Form field and posts it to the URL
specified in the BrowserFormPost element of the PunchOutSetupRequest. The hidden
HTML Form field must be named either cxml-urlencoded or cxml-base64 (these names
are case insensitive).
Thanks in advance for any help,
Joe
Hi, to post form data follow below steps when using pub.client:http :
Set method to POST
Set data/string to below (Replace the sample cXML I used with your cXML. Notice the boundery string before and after cXML while replacing):
------MyBoundarySomeRandomString
Content-Disposition: form-data; name="cxml-urlencoded"
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd"> <cXML xml:lang="en-US" timestamp="2008-05-19T19:51:57+00:00" payloadID="1211226717.22017@ip-10-251-122-83" version="1.2.014"> ; <Header> <From> <Credential domain="duns"> <!-- Coupa Supplier option, typically DUNS --> <Identity>dell</Identity> <!-- Coupa Supplier option, string --> </Credential> </From> <To> <Credential domain="Duns"> <!-- Coupa Supplier option, typically DUNS --> <Identity>128293714</Identity> <!-- Coupa Supplier option, string --> </Credential> </To> <Sender> <Credential domain="duns"> <Identity>dell</Identity> <!-- Coupa Supplier option, string --> <SharedSecret>dell</SharedSecret> <!-- Coupa Supplier option, string --> </Credential> <UserAgent>Coupa Procurement 1.0</UserAgent> <!-- does not change --> </Sender> </Header> <Request deploymentMode="production"> <OrderRequest> <OrderRequestHeader orderID="6112" orderDate="2008-05-19T19:51:55Z" type="new" orderType="regular"> <Total> <Money currency="USD">1505.0</Money> <!-- Currency code configured in Coupa --> </Total> <ShipTo> <Address isoCountryCode="US" addressID="3119"> <Name xml:lang="en">jmadden</Name> <PostalAddress name="default"> <DeliverTo>j maddedn</DeliverTo> <Street>333 East Hill Dr</Street> <City>san leandro</City> <State>ca</State> <PostalCode>22222</PostalCode> <Country isoCountryCode="US">United States</Country> </PostalAddress> <Email name="default">jmadden@coupa1.com</Email> </Address> </ShipTo> <BillTo> <Address isoCountryCode="US" addressID="142"> <Name xml:lang="en">SOB1</Name> <PostalAddress name="default"> <DeliverTo>Noah Sanity Attn: Noah Noah</DeliverTo> <Street>3420 Flatiron Way</Street> <City>West Index</City> <State>NJ</State> <PostalCode>43023</PostalCode> <Country isoCountryCode="US">United States</Country> </PostalAddress> </Address> </BillTo> <Contact role="endUser"> <Name xml:lang="en">j maddedn</Name> <Email name="default">jmadden@coupa1.com</Email> </Contact> </OrderRequestHeader> <ItemOut quantity="1" lineNumber="1"> <ItemID> <SupplierPartID>223-4511</SupplierPartID> <!-- Coupa Item Part Number --> <SupplierPartAuxiliaryID>1005379527029\1</SupplierPartAuxiliaryID> <!-- Auxiliary Part Number, typically not used --> </ItemID> <ItemDetail> <UnitPrice> <Money currency="USD">1505.0</Money> <!-- Currency code configured in Coupa --> </UnitPrice> <Description xml:lang="en">OptiPlex 755 Energy Smart Minitower;IntelREG CoreTM 2 Quad Processor Q6600 (2.40GHz, 2X4M, 1066MHz FSB)</Description> <UnitOfMeasure>EA</UnitOfMeasure> <Classification domain="UNSPSC">unknown</Classification> <!-- Future expansion --> </ItemDetail> <Distribution> <Accounting name="bbbb"> <!-- Coupa Account name --> <Segment id="bbb" description="ORG" type="Organization" /> <Segment id="b" description="DEPT" type="Department" /> <Segment id="bb" description="PROJ" type="Project" /> </Accounting> <Charge> <Money currency="USD">1505.0</Money> </Charge> </Distribution> </ItemOut> </OrderRequest> </Request> </cXML>
------MyBoundarySomeRandomString--
Set any auth details that are required
Add Content-Type under headers and Set it to multipart/form-data; boundary=------MyBoundarySomeRandomString
These steps should do.