Raynor - thanks for the response (and apologies for my slow response). Pointing out where those Crypto commands came from helped me successfully do the http post submission. (The Crypto calls in the actual SDK code i downloaded were unrecognized because a "using AuthorizeNet;" namespace directive was missing in the code - adding the using statement, or modifying the calls to say AuthorizeNet.Crypto.GenerateSequence() fixed the issue. Strange that Authorize.Net would provide code to download that doesn't compile)
For anyone who wants a clear code sample for how to programmatically do a DPM submission in C#, here is mine below. (Note this only covers the submission - a separate page that handles the http response back from authorize.net needs to be created as well.)
decimal vAmount = 50.0;
string vAPILoginID = "MY_API_LOGIN_ID"; // put yours here
string vTransactionKey = "MY_TRANSACTION_KEY"; // put yours here
string vRelayResponseUrl = "http://mywebserver/responsepage.aspx"; // you'll need to separately create this publicly-available page to handle processing the response
string vFingerprintSequence = AuthorizeNet.Crypto.GenerateSequence();
int vFingerprintTimestamp = AuthorizeNet.Crypto.GenerateTimestamp();
string vFingerprintHash = AuthorizeNet.Crypto.GenerateFingerprint(vTransactionKey, vAPILoginID, vAmount, vFingerprintSequence, vFingerprintTimestamp.ToString());
string vInvoiceNumber = "1234";
List<string> vFormValues = new List<string>();
vFormValues.Add(String.Format("{0}={1}", "x_card_num", "4111111111111111"));
vFormValues.Add(String.Format("{0}={1}", "x_exp_date", "1120"));
vFormValues.Add(String.Format("{0}={1}", "x_amount", vAmount));
vFormValues.Add(String.Format("{0}={1}", "x_invoice_num", vInvoiceNumber));
vFormValues.Add(String.Format("{0}={1}", "x_relay_url", vRelayResponseUrl));
vFormValues.Add(String.Format("{0}={1}", "x_login", vAPILoginID));
vFormValues.Add(String.Format("{0}={1}", "x_fp_sequence", vFingerprintSequence));
vFormValues.Add(String.Format("{0}={1}", "x_fp_timestamp", vFingerprintTimestamp));
vFormValues.Add(String.Format("{0}={1}", "x_fp_hash", vFingerprintHash));
vFormValues.Add(String.Format("{0}={1}", "x_version", "3.1"));
vFormValues.Add(String.Format("{0}={1}", "x_method", "CC"));
vFormValues.Add(String.Format("{0}={1}", "x_type", "AUTH_CAPTURE"));
vFormValues.Add(String.Format("{0}={1}", "x_test_request", "FALSE"));
vFormValues.Add(String.Format("{0}={1}", "notes", "testing testing"));
ASCIIEncoding vEncoding = new ASCIIEncoding();
byte[] vPostData = vEncoding.GetBytes(String.Join("&", vFormValues.ToArray()));
HttpWebRequest vRequest = (HttpWebRequest)HttpWebRequest.Create("https://test.authorize.net/gateway/transact.dll"); // note this authorize.net's test site
vRequest.Method = "POST";
vRequest.CookieContainer = new System.Net.CookieContainer();
vRequest.ContentLength = vPostData.Length;
vRequest.ContentType = "application/x-www-form-urlencoded";
System.IO.Stream vRequestStream = null;
vRequestStream = vRequest.GetRequestStream();
vRequestStream.Write(vPostData, 0, vPostData.Length);
vRequestStream.Close();