public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DORecurringReActivate.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); RecurringInfo RecurInfo = new RecurringInfo(); RecurInfo.OrigProfileId = "<PROFILE_ID>"; // RT0000001350 // The date that the first payment will be processed. // This will be of the format mmddyyyy. RecurInfo.Start = "01012009"; // Create a new Recurring ReActivate Transaction. RecurringReActivateTransaction Trans = new RecurringReActivateTransaction( User, Connection, RecurInfo, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); } // Get the Recurring Response parameters. RecurringResponse RecurResponse = Resp.RecurringResponse; if (RecurResponse != null) { Console.WriteLine("RPREF = " + RecurResponse.RPRef); Console.WriteLine("PROFILEID = " + RecurResponse.ProfileId); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: NVPCommandLine.cs"); Console.WriteLine("------------------------------------------------------"); String ResponseStr = null; if (Args.Length < 4) { Console.WriteLine(Environment.NewLine + "Incorrect number of arguments. Usage:" + Environment.NewLine + "SamplesCS <hostAddress> <hostPort> <parmList> <timeOut> <proxyAddress> <proxyPort> <proxyLogon> <proxyPassword>"); Console.WriteLine(Environment.NewLine + "Example transaction:" + Environment.NewLine + "SamplesCS pilot-payflowpro.paypal.com 443 \"USER=<user>&TRXTYPE[1]=A&VENDOR=<vendor>&AMT[5]=25.00&PWD=<password>&PARTNER=<partner>&TENDER[1]=C&ACCT[16]=5100000000000008&EXPDATE[4]=0125\" 45"); Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); System.Environment.Exit(-1); } PayflowNETAPI PayflowNETAPI; if (Args.Length == 4) { PayflowNETAPI = new PayflowNETAPI(Args[0], System.Convert.ToInt32(Args[1]), System.Convert.ToInt32(Args[3])); } else { PayflowNETAPI = new PayflowNETAPI(Args[0], System.Convert.ToInt32(Args[1]), System.Convert.ToInt32(Args[3]), Args[4], System.Convert.ToInt32(Args[5]), Args[6], Args[7]); } ResponseStr = PayflowNETAPI.SubmitTransaction(Args[2], PayflowUtility.RequestId); // To write the Response on to the console. Console.WriteLine(Environment.NewLine + "Request = " + PayflowNETAPI.TransactionRequest); Console.WriteLine(Environment.NewLine + "Response = " + ResponseStr); // Following lines of code are optional. // Begin optional code for displaying SDK errors ... // It is used to read any errors that might have occurred in the SDK. // Get the transaction errors. String TransErrors = PayflowNETAPI.TransactionContext.ToString(); if (TransErrors != null && TransErrors.Length > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors from SDK = " + TransErrors); } Console.WriteLine(Environment.NewLine + "Status: " + PayflowUtility.GetStatus(ResponseStr)); Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOInquiry.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); /////////////////////////////////////////////////////////////////// // Create a new Inquiry Transaction. //Replace <PNREF> with a previous transaction ID that you processed on your account. InquiryTransaction Trans = new InquiryTransaction("<PNREF>", User, Connection, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; // Display the transaction response parameters. Refer to the Payflow Pro Developer's Guide for explanations. if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("--------------------------------------------"); Console.WriteLine("Original Response Data"); Console.WriteLine("--------------------------------------------"); Console.WriteLine("ORIGRESULT = " + TrxnResponse.OrigResult); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("STATUS = " + TrxnResponse.Status); Console.WriteLine("TRANSSTATE = " + TrxnResponse.TransState); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: XMLPayCommandLine.cs"); Console.WriteLine("------------------------------------------------------"); if (Args.Length < 4) { Console.WriteLine(Environment.NewLine + "Incorrect number of arguments. Usage:" + Environment.NewLine + "SamplesCS <hostAddress> <hostPort> <xml-parmList> <timeout> <proxyAddress> <proxyPort> <proxyLogon> <proxyPassword>"); Console.WriteLine(Environment.NewLine + "Example transaction:" + Environment.NewLine + "SamplesCS pilot-payflowpro.paypal.com 443 \"<?xml version='1.0'?><XMLPayRequest Timeout='45' version='2.0'><RequestData><Partner>[partner]</Partner><Vendor>[vendor]</Vendor><Transactions><Transaction><Sale><PayData><Invoice><TotalAmt Currency='USD'>25.12</TotalAmt><InvNum>INV12345</InvNum><BillTo><PONum>PO12345</PONum><Address><Street>123 Main St.</Street><Zip>12345</Zip></Address></BillTo></Invoice><Tender><Card><CardNum>5105105105105100</CardNum><ExpDate>201501</ExpDate></Card></Tender></PayData></Sale></Transaction></Transactions></RequestData><RequestAuth><UserPass><User>[user]</User><Password>[password]</Password></UserPass></RequestAuth></XMLPayRequest>\" 45"); Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); System.Environment.Exit(-1); } PayflowNETAPI PayflowNETAPI; if (Args.Length == 3) { PayflowNETAPI = new PayflowNETAPI(Args[0], System.Convert.ToInt32(Args[1]), System.Convert.ToInt32(Args[3])); } else { PayflowNETAPI = new PayflowNETAPI(Args[0], System.Convert.ToInt32(Args[1]), System.Convert.ToInt32(Args[3]), Args[4], System.Convert.ToInt32(Args[5]), Args[6], Args[7]); } String ResponseStr = PayflowNETAPI.SubmitTransaction(Args[2], PayflowUtility.RequestId); // To write the Response on to the console. Console.WriteLine(Environment.NewLine + "Request = " + PayflowNETAPI.TransactionRequest); Console.WriteLine(Environment.NewLine + "Response = " + ResponseStr); // Following lines of code are optional. // Begin optional code for displaying SDK errors ... // It is used to read any errors that might have occurred in the SDK. // Get the transaction errors. String TransErrors = PayflowNETAPI.TransactionContext.ToString(); if (TransErrors != null && TransErrors.Length > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors from SDK = " + TransErrors); } Console.WriteLine(Environment.NewLine + "Status: " + PayflowUtility.GetStatus(ResponseStr)); Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOFraudReview.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); /////////////////////////////////////////////////////////////////// // Create a new Sale Transaction with purchase price ceiling amount filter set to $50. FraudReviewTransaction Trans = new FraudReviewTransaction("V64A0A15ECF3", "RMS_APPROVE", User, Connection, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: XMLPaySale.cs"); Console.WriteLine("------------------------------------------------------"); // Sample Request. // Please replace [user], [vendor], [password] & [partner] with your merchant information. String Request = "<?xml version=\"1.0\"?><XMLPayRequest Timeout=\"45\" version=\"2.0\"><RequestData><Partner>[partner]</Partner><Vendor>[vendor]</Vendor><Transactions><Transaction><Sale><PayData><Invoice><TotalAmt Currency=\"USD\">25.12</TotalAmt><InvNum>INV12345</InvNum><BillTo><PONum>PO12345</PONum><Address><Street>123 Main St.</Street><Zip>12345</Zip></Address></BillTo></Invoice><Tender><Card><CardNum>5105105105105100</CardNum><ExpDate>202501</ExpDate></Card></Tender></PayData></Sale></Transaction></Transactions></RequestData><RequestAuth><UserPass><User>[user]</User><Password>[password]</Password></UserPass></RequestAuth></XMLPayRequest>"; // Create an instance of PayflowNETAPI. PayflowNETAPI PayflowNETAPI = new PayflowNETAPI(); // Can also pass the values in the constructor itself instead of using .config file. //PayflowNETAPI.SetParameters("pilot-payflowpro.paypal.com", 443, 45, "", 0, "", "", "enabled", "1", "payflow.log", "10240000", false); // RequestId is a unique string that is required for each & every transaction. // The merchant can use her/his own algorithm to generate this unique request id or // use the SDK provided API to generate this as shown below (PayflowUtility.RequestId). // // NOTE: Review the comments in the DoSaleComplete example under BasicTransactions for // more information on the Request ID. String Response = PayflowNETAPI.SubmitTransaction(Request, PayflowUtility.RequestId); // To write the Response on to the console. Console.WriteLine(Environment.NewLine + "Request = " + PayflowNETAPI.TransactionRequest); Console.WriteLine(Environment.NewLine + "Response = " + Response); // Following lines of code are optional. // Begin optional code for displaying SDK errors ... // It is used to read any errors that might have occurred in the SDK. // Get the transaction errors. String TransErrors = PayflowNETAPI.TransactionContext.ToString(); if (TransErrors != null && TransErrors.Length > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors from SDK = " + TransErrors); } Console.WriteLine(Environment.NewLine + "Status: " + PayflowUtility.GetStatus(Response)); Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: NVPSale.cs"); Console.WriteLine("------------------------------------------------------"); // Sample Request. // Please replace <user>, <vendor>, <password> & <partner> with your merchant information. //String Request = "USER=<user>&VENDOR=<vendor>&PARTNER=<partner>&PWD=<password>&TRXTYPE=S&ACCT=5105105105105100&EXPDATE=0125&TENDER=C&INVNUM=INV12345&AMT=25.12&PONUM=PO12345&STREET=123 Main St.&ZIP=12345"; String Request = "USER=toddprov4&VENDOR=toddprov4&PARTNER=VeriSign&PWD=password1&TRXTYPE=S&ORIGID=A50O0BE63815&EXPDATE=0125&TENDER=C&INVNUM=INV12345&AMT=25.12&PONUM=PO12345&STREET=123 Main St.&ZIP=12345"; // Create an instance of PayflowNETAPI. PayflowNETAPI PayflowNETAPI = new PayflowNETAPI(); // Can also pass the values in the constructor itself instead of using .config file. PayflowNETAPI.SetParameters("pilot-payflowpro.paypal.com", 443, 45, "", 0, "", "", "enabled", "1", "payflow.log", "10240000", false); // RequestId is a unique string that is required for each & every transaction. // The merchant can use her/his own algorithm to generate this unique request id or // use the SDK provided API to generate this as shown below (PayflowUtility.RequestId). // // NOTE: Review the comments in the DoSaleComplete example under BasicTransactions for // more information on the Request ID. String Response = PayflowNETAPI.SubmitTransaction(Request, PayflowUtility.RequestId); // To write the Response on to the console. Console.WriteLine(Environment.NewLine + "Request = " + PayflowNETAPI.TransactionRequest); Console.WriteLine(Environment.NewLine + "Response = " + Response); // Following lines of code are optional. // Begin optional code for displaying SDK errors ... // It is used to read any errors that might have occurred in the SDK. // Get the transaction errors. String TransErrors = PayflowNETAPI.TransactionContext.ToString(); if (TransErrors != null && TransErrors.Length > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors from SDK = " + TransErrors); } Console.WriteLine(Environment.NewLine + "Status: " + PayflowUtility.GetStatus(Response)); Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DORecurringPayment.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); RecurringInfo RecurInfo = new RecurringInfo(); RecurInfo.OrigProfileId = "<PROFILE_ID>"; // RT0000001350 RecurInfo.PaymentNum = "2"; // The failed payment to be retried. // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.12)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Inv.BillTo = Bill; /////////////////////////////////////////////////////////////////// // Create a new Recurring Payment Transaction. RecurringPaymentTransaction Trans = new RecurringPaymentTransaction( User, Connection, RecurInfo, Inv, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); } // Get the Recurring Response parameters. RecurringResponse RecurResponse = Resp.RecurringResponse; if (RecurResponse != null) { Console.WriteLine("RPREF = " + RecurResponse.RPRef); Console.WriteLine("PROFILEID = " + RecurResponse.ProfileId); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOFraudFilters.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(51.00)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "677 Main St."; Bill.BillToZip = "12345"; Inv.BillTo = Bill; CustomerInfo CustInfo = new CustomerInfo(); CustInfo.CustIP = "10.1.1.1"; // IP Velocity Filter Inv.CustomerInfo = CustInfo; // Create a new Payment Device - Credit Card data object. // The input parameters are Credit Card Number and Expiration Date of the Credit Card. CreditCard CC = new CreditCard("5105105105105100", "0115"); CC.Cvv2 = "444"; // Create a new Tender - Card Tender data object. CardTender Card = new CardTender(CC); /////////////////////////////////////////////////////////////////// // Create a new Sale Transaction with purchase price ceiling amount filter set to $50. SaleTransaction Trans = new SaleTransaction( User, Connection, Inv, Card, PayflowUtility.RequestId); // Set the Verbosity of the transaction to HIGH to get maximum information in the response. Trans.Verbosity = "HIGH"; // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); Console.WriteLine("IAVS = " + TrxnResponse.IAVS); Console.WriteLine("HOSTCODE = " + TrxnResponse.HostCode); Console.WriteLine("PROCAVS = " + TrxnResponse.ProcAVS); Console.WriteLine("CVV2MATCH = " + TrxnResponse.CVV2Match); } // Get the Fraud Response parameters. FraudResponse FraudResp = Resp.FraudResponse; // Display Fraud Response parameter if (FraudResp != null) { Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg); Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg); // The following lines of code dealing with PreXmlData and PostXmlData will return all th rules // that were triggered by the Fraud Service. For Example, let's assume the both AVS and CSC (CVV2) // failed, the FraudResp.PostFpsMsg would something similar to: // "Review: More than one rule was triggered for Review". // // The Fps_PreXmlData is returned as an Xml string. This is converted into Data Objects // with the object hierarchy as shown below: // FpsXmlData // >>>>>>>>> List of Rule objects // >>>>>>>>>>>>>>>>>> List of RuleVendorParm objects. FpsXmlData PreXmlData = FraudResp.Fps_PreXmlData; if (PreXmlData != null) { // Get the list of Rules. ArrayList RulesList = PreXmlData.Rules; if (RulesList != null && RulesList.Count > 0) { IEnumerator RulesEnum = RulesList.GetEnumerator(); Rule DORule = null; // Loop through the list of Rules. while (RulesEnum.MoveNext()) { DORule = (Rule)RulesEnum.Current; Console.WriteLine("------------------------------------------------------"); Console.WriteLine("PRE-XML DATA"); Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Rule Number = " + DORule.Num.ToString()); Console.WriteLine("Rule Id = " + DORule.RuleId); Console.WriteLine("Rule Alias = " + DORule.RuleAlias); Console.WriteLine("Rule Description = " + DORule.RuleDescription); Console.WriteLine("Action = " + DORule.Action); Console.WriteLine("Triggered Message = " + DORule.TriggeredMessage); // Get the list of Rule Vendor Parameters. ArrayList RuleVendorParmsList = DORule.RuleVendorParms; if (RuleVendorParmsList != null && RuleVendorParmsList.Count > 0) { IEnumerator RuleParametersEnum = RuleVendorParmsList.GetEnumerator(); // Loop through the list of Rule Parameters. while (RuleParametersEnum.MoveNext()) { RuleParameter DORuleParam = (RuleParameter)RuleParametersEnum.Current; Console.WriteLine("Number = " + DORuleParam.Num.ToString()); Console.WriteLine("Name = " + DORuleParam.Name); Console.WriteLine("Type = " + DORuleParam.Type); Console.WriteLine("Value = " + DORuleParam.Value); } } } } // The Fps_PostXmlData is returned as an Xml string. This is converted into Data Objects // with the object hierarchy as shown below: // FpsXmlData // >>>>>>>>> List of Rule objects // >>>>>>>>>>>>>>>>>> List of RuleVendorParm objects. FpsXmlData PostXmlData = FraudResp.Fps_PostXmlData; if (PostXmlData != null) { // Get the list of Rules. ArrayList PostRulesList = PostXmlData.Rules; if (PostRulesList != null && PostRulesList.Count > 0) { IEnumerator RulesEnum = PostRulesList.GetEnumerator(); Rule DORule = null; // Loop through the list of Rules. while (RulesEnum.MoveNext()) { DORule = (Rule)RulesEnum.Current; Console.WriteLine("------------------------------------------------------"); Console.WriteLine("POST-XML DATA"); Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Rule Number = " + DORule.Num.ToString()); Console.WriteLine("Rule Id = " + DORule.RuleId); Console.WriteLine("Rule Alias = " + DORule.RuleAlias); Console.WriteLine("Rule Description = " + DORule.RuleDescription); Console.WriteLine("Action = " + DORule.Action); Console.WriteLine("Triggered Message = " + DORule.TriggeredMessage); // Get the list of Rule Vendor Parameters. ArrayList RuleVendorParmsList = DORule.RuleVendorParms; if (RuleVendorParmsList != null && RuleVendorParmsList.Count > 0) { IEnumerator RuleParametersEnum = RuleVendorParmsList.GetEnumerator(); // Loop through the list of Rule Parameters. while (RuleParametersEnum.MoveNext()) { RuleParameter DORuleParam = (RuleParameter)RuleParametersEnum.Current; Console.WriteLine("Number = " + DORuleParam.Num.ToString()); Console.WriteLine("Name = " + DORuleParam.Name); Console.WriteLine("Type = " + DORuleParam.Type); Console.WriteLine("Value = " + DORuleParam.Value); } } } } } } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); } } }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOSecureTokenAuth.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. // UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. The amount cannot be changed once submitted. Currency Amt = new Currency(new decimal(25.00), "USD"); Inv.Amt = Amt; Inv.InvNum = "INV12345"; // Set the Billing Address details. You can also send the shipping information. Both the Billing // and Shipping information can be changed if the functionality is allowed in the Configuration section // of Manager. No other information submitted using a secure token call can be changed. BillTo Bill = new BillTo(); Bill.BillToFirstName = "Sam"; Bill.BillToLastName = "Smith"; Bill.BillToStreet = "123 Main St."; Bill.BillToCity = "Anytown"; Bill.BillToState = "CA"; Bill.BillToZip = "12345"; Bill.BillToPhone = "408-123-1234"; Bill.BillToEmail = "*****@*****.**"; Bill.BillToCountry = "124"; Inv.BillTo = Bill; // Create a new Payment Device - Credit Card data object. // The input parameters are Credit Card Number and Expiration Date of the Credit Card. //CreditCard CC = new CreditCard("5105105105105100", "0110"); //CC.Cvv2 = "023"; // Create a new Tender - Card Tender data object. //CardTender Card = new CardTender(CC); /////////////////////////////////////////////////////////////////// // Since we are using the hosted payment pages, you will not be sending the credit card data with the // Secure Token Request. You just send all other 'sensitive' data within this request and when you // call the hosted payment pages, you'll only need to pass the SECURETOKEN; which is generated and returned // and the SECURETOKENID that was created and used in the request. // // Create a new Secure Token Authorization Transaction. Even though this example is performing // an authorization, you can create a secure token using SaleTransaction too. Only Authorization and Sale // type transactions are permitted. // // Remember, all data submitted as part of the Secure Token call cannot be modified at a later time. The only exception // is the billing and shipping information if these items are selection in the Setup section in PayPal Manager. AuthorizationTransaction Trans = new AuthorizationTransaction(User, Connection, Inv, null, PayflowUtility.RequestId); // Set VERBOSITY to High Trans.Verbosity = "High"; // Set the flag to create a Secure Token. Trans.CreateSecureToken = "Y"; // The Secure Token Id must be a unique id up to 36 characters. Using the RequestID object to // generate a random id, but any means to create an id can be used. Trans.SecureTokenId = PayflowUtility.RequestId; // Set the extended data value. ExtendData ExtData = new ExtendData("SILENTTRAN", "True"); // Add extended data to transaction. Trans.AddToExtendData(ExtData); // IMPORTANT NOTE: // // Remember, the Secure Token can only be used once. Once it is redeemed by a valid transaction it cannot be used again and you will // need to generate a new token. Also, the token has a life time of 30 minutes. // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("SECURETOKEN = " + TrxnResponse.SecureToken); Console.WriteLine("SECURETOKENID = " + TrxnResponse.SecureTokenId); // If value is true, then the Request ID has not been changed and the original response // of the original transction is returned. Console.WriteLine("DUPLICATE = " + TrxnResponse.Duplicate); } if (TrxnResponse.Result == 0) { Console.WriteLine(Environment.NewLine + "Transaction was successful."); Console.WriteLine(Environment.NewLine + "The next step would be to redirect to PayPal to display the hosted"); Console.WriteLine("checkout page to allow your customer to select and enter payment."); Console.WriteLine(Environment.NewLine + "This is only a simple example, which does not take into account things like"); Console.WriteLine(Environment.NewLine + "RETURN or SILENT POST URL, etc."); Console.WriteLine(Environment.NewLine + "Press <Enter> to redirect to PayPal."); Console.ReadLine(); // Simple way to pass token data to Payflow Link Servers. String PayPalUrl = "https://payflowlink.paypal.com?securetoken=" + TrxnResponse.SecureToken + "&securetokenid=" + TrxnResponse.SecureTokenId + "&MODE=test&USER1=testuser1&ACCT=5105105105105100&EXPDATE=1212&CVV2=123"; //Process.Start(PayPalUrl); // Open default browser. Process.Start("iexplore.exe", PayPalUrl); //Process.Start("C:\\Program Files\\Mozilla Firefox\\firefox.exe", PayPalUrl); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DORecurringModify.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); RecurringInfo RecurInfo = new RecurringInfo(); RecurInfo.OrigProfileId = "<PROFILE_ID>"; // RT0000001350 RecurInfo.ProfileName = "<PROFILE_NAME>"; // Test_Profile // Create a new Invoice data object with the Amount, Billing Address etc. details for the data you // want to change. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.12)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Bill.BillToEmail = "*****@*****.**"; Bill.BillToPhone = "123-123-1234"; Inv.BillTo = Bill; // If you want to modify the credit card information, create a new Payment Device - Credit Card data object. // The input parameters are Credit Card Number and Expiration Date of the Credit Card. CreditCard CC = new CreditCard("5105105105105100", "0115"); // Create a new Tender - Card Tender data object. CardTender Card = new CardTender(CC); // If NO card details available and want to modify only information like E-Mail or Phone Number, use following: //RecurringModifyTransaction Trans = new RecurringModifyTransaction(User, Connection, RecurInfo, Inv, null, PayflowUtility.RequestId); // If you want to modify the RecurringInfo information only, use the following: //RecurringModifyTransaction Trans = new RecurringModifyTransaction(User, Connection, RecurInfo, PayflowUtility.RequestId); // Create a new Recurring Modify Transaction. RecurringModifyTransaction Trans = new RecurringModifyTransaction(User, Connection, RecurInfo, Inv, Card, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); } // Get the Recurring Response parameters. RecurringResponse RecurResponse = Resp.RecurringResponse; if (RecurResponse != null) { Console.WriteLine("RPREF = " + RecurResponse.RPRef); Console.WriteLine("PROFILEID = " + RecurResponse.ProfileId); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOReferenceCredit.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); /////////////////////////////////////////////////////////////////// // If you want to change the amount being credited, you'll need to set the Amount object. //Invoice Inv = new Invoice(); // Set the amount object if you want to change the amount from the original transaction. // Currency Code USD is US ISO currency code. If no code passed, USD is default. // See the Developer's Guide for the list of three-character currency codes available. //Currency Amt = new Currency(new decimal(10.00)); //Inv.Amt = Amt; //CreditTransaction trans = new CreditTransaction("<ORIGINAL_PNREF>", User, Connection, Inv, PayflowUtility.getRequestId()); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.12)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Create a new Credit Transaction from the original transaction. See above if you // need to change the amount. CreditTransaction Trans = new CreditTransaction("<ORIGINAL_PNREF>", User, Connection, Inv, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); Console.WriteLine("IAVS = " + TrxnResponse.IAVS); } // Get the Fraud Response parameters. FraudResponse FraudResp = Resp.FraudResponse; // Display Fraud Response parameter if (FraudResp != null) { Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg); Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: XMLPayCommandLine_File.cs"); Console.WriteLine("------------------------------------------------------"); if (Args.Length < 4) { Console.WriteLine(Environment.NewLine + "Incorrect number of arguments. Usage:" + Environment.NewLine + "SamplesCS <hostAddress> <hostPort> <xml filename> <timeout> <proxyAddress> <proxyPort> <proxyLogon> <proxyPassword>"); Console.WriteLine(Environment.NewLine + "Example transaction:" + Environment.NewLine + "SamplesCS pilot-payflowpro.paypal.com 443 \"C:" + System.IO.Path.DirectorySeparatorChar + "Sale.xml\" 45"); Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); System.Environment.Exit(-1); } PayflowNETAPI PayflowNETAPI; if (Args.Length == 4) { PayflowNETAPI = new PayflowNETAPI(Args[0], System.Convert.ToInt32(Args[1]), System.Convert.ToInt32(Args[3])); } else { PayflowNETAPI = new PayflowNETAPI(Args[0], System.Convert.ToInt32(Args[1]), System.Convert.ToInt32(Args[3]), Args[4], System.Convert.ToInt32(Args[5]), Args[6], Args[7]); } String XmlFile = ReadFile(Args[2]); if (XmlFile != null) { String ResponseStr = PayflowNETAPI.SubmitTransaction(XmlFile, PayflowUtility.RequestId); // To write the Response on to the console. Console.WriteLine(Environment.NewLine + "Request = " + PayflowNETAPI.TransactionRequest); Console.WriteLine(Environment.NewLine + "Response = " + ResponseStr); // Following lines of code are optional. // Begin optional code for displaying SDK errors ... // It is used to read any errors that might have occurred in the SDK. // Get the transaction errors. String TransErrors = PayflowNETAPI.TransactionContext.ToString(); if (TransErrors != null && TransErrors.Length > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors from SDK = " + TransErrors); } Console.WriteLine(Environment.NewLine + "Status: " + PayflowUtility.GetStatus(ResponseStr)); Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); } else { Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); } }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DODataUpload.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // Values of connection details can also be passed in the constructor of // PayflowConnectionData. This will override the values passed in the App config file. // Example values passed below are as follows: // Payflow Pro Host address : pilot-payflowpro.paypal.com // Payflow Pro Host Port : 443 // Timeout : 45 ( in seconds ) PayflowConnectionData Connection = new PayflowConnectionData("pilot-payflowpro.paypal.com", 443, 45); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Remember, we do not send in an amount. Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Inv.BillTo = Bill; // Create a new Payment Device - Credit Card data object. // The input parameters are Credit Card Number and Expiration Date of the Credit Card. CreditCard CC = new CreditCard("5105105105105100", "0115"); // Create a new Tender - Card Tender data object. CardTender Card = new CardTender(CC); // Create a new Base Transaction. BaseTransaction Trans = new BaseTransaction("L", User, Connection, Inv, Card, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("TRANSTIME = " + TrxnResponse.TransTime); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("---------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DO_TeleCheck.cs"); Console.WriteLine("---------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.12)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Bill.BillToCity = "New York"; Bill.BillToState = "PA"; Bill.BillToZip = "12345"; Bill.BillToPhone = "123-4546-7890"; Bill.BillToEmail = "*****@*****.**"; Bill.BillToCountry = "US"; Inv.BillTo = Bill; // Set the IP address of the customer CustomerInfo custInfo = new CustomerInfo(); custInfo.CustIP = "111.111.11.111"; Inv.CustomerInfo = custInfo; // Create a new Payment Device - Check Payment data object. // The input parameters is MICR. Magnetic Ink Check Reader. This is the entire line // of numbers at the bottom of all checks. It includes the transit number, account // number, and check number. CheckPayment ChkPayment = new CheckPayment("1234567804390850001234"); // Name property needs to be set for the Check Payment. ChkPayment.Name = "Ivan Smith"; // Create a new Tender - Check Tender data object. CheckTender ChkTender = new CheckTender(ChkPayment); // Account holder’s next unused (available) check number. Up to 7 characters. ChkTender.ChkNum = "1234"; // DL or SS is required for a TeleCheck transaction. // If CHKTYPE=P, a value for either DL or SS must be passed as an identifier. // If CHKTYPE=C, the Federal Tax ID must be passed as the SS value. ChkTender.ChkType = "P"; // Driver’s License number. If CHKTYPE=P, a value for either DL or SS must be passed as an identifier. // Format: XXnnnnnnnn // XX = State Code, nnnnnnnn = DL Number - up to 31 characters. ChkTender.DL = "CAN85452345"; // Social Security number. Needed if ChkType = P ChkTender.SS = "456765833"; // AuthType = I-Internet Check, P-Checks by Phone, D-Prearranged Deposit ChkTender.AuthType = "I"; // Create a new TeleCheck - Authorization Transaction. AuthorizationTransaction Trans = new AuthorizationTransaction( User, Connection, Inv, ChkTender, PayflowUtility.RequestId); //Want VERBOSITY=HIGH to get all the response values back. Trans.Verbosity = "HIGH"; // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); Console.WriteLine("HOSTCODE = " + TrxnResponse.HostCode); Console.WriteLine("TRACEID = " + TrxnResponse.TraceId); Console.WriteLine("ACHSTATUS = " + TrxnResponse.AchStatus); } // Display the response. Console.WriteLine(PayflowUtility.GetStatus(Resp) + Environment.NewLine); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine("Transaction Errors = " + TransCtx.ToString() + Environment.NewLine); } if (TrxnResponse.Result == 0) { // Transaction approved, display acceptance verbiage, after consumer accepts, capture the // transaction to finalize it. CaptureTransaction capTrans = new CaptureTransaction(TrxnResponse.Pnref, User, Connection, null, ChkTender, PayflowUtility.RequestId); // Set the transaction verbosity to HIGH to display most details. capTrans.Verbosity = "HIGH"; // Submit the Transaction Response capResp = capTrans.SubmitTransaction(); // Display the transaction response parameters. if (capResp != null) { // Get the Transaction Response parameters. TransactionResponse capTrxnResponse = capResp.TransactionResponse; if (capTrxnResponse != null) { Console.WriteLine("RESULT = " + capTrxnResponse.Result); Console.WriteLine("PNREF = " + capTrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + capTrxnResponse.RespMsg); Console.WriteLine("HOSTCODE = " + capTrxnResponse.HostCode); Console.WriteLine("TRACEID = " + capTrxnResponse.TraceId); } // Display the response. Console.WriteLine(PayflowUtility.GetStatus(capResp) + Environment.NewLine); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context capTransCtx = capResp.TransactionContext; if (capTransCtx != null && capTransCtx.getErrorCount() > 0) { Console.WriteLine("Transaction Errors = " + capTransCtx.ToString() + Environment.NewLine); } } else { Console.WriteLine("Unable to capture transaction as it declined or failed." + Environment.NewLine); } } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOCapture.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); /////////////////////////////////////////////////////////////////// // If you want to change the amount being captured, you'll need to set the Amount object. // Invoice Inv = new Invoice(); // Set the amount object if you want to change the amount from the original authorization. // Currency Code USD is US ISO currency code. If no code passed, USD is default. // See the Developer//s Guide for the list of three-character currency codes available. // Currency Amt = new Currency(new decimal(25.12)); // Inv.Amt = Amt; // CaptureTransaction Trans = new CaptureTransaction("<ORIGINAL_PNREF>", User, Connection, Inv, PayflowUtility.RequestId); // Create a new Capture Transaction for the original amount of the authorization. See above if you // need to change the amount. CaptureTransaction Trans = new CaptureTransaction("<ORIGINAL_PNREF>", User, Connection, PayflowUtility.RequestId); // Indicates if this Delayed Capture transaction is the last capture you intend to make. // The values are: Y (default) / N // NOTE: If CAPTURECOMPLETE is Y, any remaining amount of the original reauthorized transaction // is automatically voided. Also, this is only used for UK and US accounts where PayPal is acting // as your bank. // Trans.CaptureComplete = "N"; // Set the transaction verbosity to HIGH to display most details. Trans.Verbosity = "HIGH"; // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); Console.WriteLine("IAVS = " + TrxnResponse.IAVS); // If value is true, then the Request ID has not been changed and the original response // of the original transction is returned. Console.WriteLine("DUPLICATE = " + TrxnResponse.Duplicate); } // Get the Fraud Response parameters. FraudResponse FraudResp = Resp.FraudResponse; // Display Fraud Response parameter if (FraudResp != null) { Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg); Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOEncryptedSwipe.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(1.00)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; Inv.Comment1 = "Magtek Encrypted Swipe Example"; // Create a new Payment Device - Swipe data object. The input parameter is Swipe Data. // The data passed in this example will be extracted from a Magtek Encrypted Card reader. Please refer // to the Magtek SDK and documentation on how to obtain the data from the reader. // The parameter data for the SwipeCard object is usually obtained with a card reader and this shows // how to send data obtained from a Magtek Encrypted reader. // NOTE: The SWIPE parameter is not supported on accounts where PayPal is the Processor. // Create a new Magtek data object with the device serial number, track data, etc. MagtekInfo MT = new MagtekInfo(); // The data below CANNOT be used for Testing. It is only here to show what the data fields look like once you // obtain them from the reader itself. Refer to the Payflow Pro Developers Guide and the Appendix related to processing // with Magtek card readers for more information. // The Payflow Gateway Developer Guide and Reference found at https://developer.paypal.com/docs/classic/payflow/integration-guide/ MT.DeviceSN = "B32XXXXXXXXXXAA"; MT.EncMP = "34F29380E6AFED395472A63063B6XXXXXXXXXXXXXXXXXXXXXXXXXC987D2A1F7A50554DFC4A0D215A8AA0591D82B6DB13516F220C4CB93899"; MT.EncryptionBlockType = "1"; MT.EncTrack1 = "80BC13515EF76421FCXXXXXXXXXXXXXXXXXXXXXXXXX02E53C0ECCC83B1787DE05BB5D8C7FA679D0C40CC989F7FAF307FE7FD0B588261DDA0"; MT.EncTrack2 = "4CDD6BC521B397CD2DB1324199XXXXXXXXXXXXXXXXXXXXXXXXX83A9044B397C1D14AFEE2C0BA1002"; MT.EncTrack3 = ""; MT.KSN = "901188XXXXXXXXXX00F4"; MT.MagtekCardType = "1"; MT.MPStatus = "61403000"; MT.RegisteredBy = "PayPal"; MT.SwipedECRHost = "MAGT"; // When using Encrypted Card Readers you do not populate the SwipeCard object as the data from the Magtek object // will be used instead. SwipeCard Swipe = new SwipeCard(""); Swipe.MagtekInfo = MT; // Create a new Tender - Swipe Tender data object. CardTender Card = new CardTender(Swipe); // Create a new Sale Transaction using Swipe data. SaleTransaction Trans = new SaleTransaction(User, Connection, Inv, Card, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); // Magtek Response will only be available if a failure or error in the request. Console.WriteLine("MAGTRESPONSE = " + TrxnResponse.MagTResponse); // If value is true, then the Request ID has not been changed and the original response // of the original transaction is returned. Console.WriteLine("DUPLICATE = " + TrxnResponse.Duplicate); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOPartialAuth.cs"); Console.WriteLine("------------------------------------------------------"); // Refer to the DOSaleComplete.cs sample for a more detailed explaination of fields. // //Create the Data Objects. // Creates a CultureInfo for English in the U.S. // Not necessary, just here for example of using currency formatting. CultureInfo us = new CultureInfo("en-US"); String usCurrency = "USD"; // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set the amount and currency being used. // See the Developer's Guide for the list of the three-digit currency codes. // Refer to the Payflow Pro Developer's Guide on testing parameters for Partial Authorization. // In this example, sending $120.00 will generate a partial approval of only $100.00. Currency Amt = new Currency(new decimal(120.00), usCurrency); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToFirstName = "Sam"; Bill.BillToLastName = "Smith"; Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Inv.BillTo = Bill; // Create a new Payment Device - Credit Card data object. // The input parameters are Credit Card Number and Expiration Date of the Credit Card. CreditCard CC = new CreditCard("5105105105105100", "0115"); CC.Cvv2 = "123"; // Create a new Tender - Card Tender data object. CardTender Card = new CardTender(CC); // Create a new Auth Transaction. AuthorizationTransaction Trans = new AuthorizationTransaction(User, Connection, Inv, Card, PayflowUtility.RequestId); // Set the flag to request that Partial Authorizations be accepted. Trans.PartialAuth = "Y"; // You must set the transaction verbosity to HIGH to display the appropriate response. Trans.Verbosity = "HIGH"; // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; // Refer to the Payflow Pro .NET API Reference Guide and the Payflow Pro Developer's Guide // for explanation of the items returned and for additional information and parameters available. if (TrxnResponse != null) { Console.WriteLine("Transaction Response:"); Console.WriteLine("Result Code (RESULT) = " + TrxnResponse.Result); Console.WriteLine("Transaction ID (PNREF) = " + TrxnResponse.Pnref); // If the amount is partially authorized the RESPMSG will be "Partial Approval". // If the amount is fully authorized the RESPMSG will be "Approved". Console.WriteLine("Response Message (RESPMSG) = " + TrxnResponse.RespMsg); Console.WriteLine("Authorization (AUTHCODE) = " + TrxnResponse.AuthCode); Console.WriteLine("Street Address Match (AVSADDR) = " + TrxnResponse.AVSAddr); Console.WriteLine("Streep Zip Match (AVSZIP) = " + TrxnResponse.AVSZip); Console.WriteLine("International Card (IAVS) = " + TrxnResponse.IAVS); Console.WriteLine("CVV2 Match (CVV2MATCH) = " + TrxnResponse.CVV2Match); Console.WriteLine("------------------------------------------------------"); // These are all new items returned when VERBOSITY=HIGH. Console.WriteLine("Credit Card Information:"); Console.WriteLine("Last 4-digits Credit Card Number (ACCT) = " + TrxnResponse.Acct); if (TrxnResponse.CardType != null) { Console.Write("Card Type (CARDTYPE) = "); switch (TrxnResponse.CardType) { case "0": Console.WriteLine("Visa"); break; case "1": Console.WriteLine("MasterCard"); break; case "2": Console.WriteLine("Discover"); break; case "3": Console.WriteLine("American Express"); break; case "4": Console.WriteLine("Diner's Club"); break; case "5": Console.WriteLine("JCB"); break; case "6": Console.WriteLine("Maestro"); break; default: Console.WriteLine("Unknown: " + TrxnResponse.CardType); // new or unknown card type break; } } Console.WriteLine("Expiration Date (EXPDATE) = " + TrxnResponse.ExpDate); Console.WriteLine("Billing Name (FIRSTNAME, LASTNAME) = " + TrxnResponse.FirstName + " " + TrxnResponse.LastName); Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Verbosity Response:"); Console.WriteLine("Processor AVS (PROCAVS) = " + TrxnResponse.ProcAVS); Console.WriteLine("Processor CSC (PROCCVV2) = " + TrxnResponse.ProcCVV2); Console.WriteLine("Processor Result (HOSTCODE) = " + TrxnResponse.HostCode); Console.WriteLine("Transaction Date/Time (TRANSTIME) = " + TrxnResponse.TransTime); // For Partial Authorization you will need to check the following 3 items to see if the card was // fully authorized or partially authorized. // // For example, if you send in a request of $120.00 (AMT=120.00) and the card only has $100.00 of available credit on it, // the card will be authorized for $100.00, the AMT field will be changed from 120 to 100 (AMT=100.00 to reflect this. // The balance of $20.00 which is still due will be returned in the BALAMT (BALAMT=-20.00) field and the ORIGAMT field // will contain the original requested amount (ORIGAMT=120.00). Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Partial Payment Response:"); Console.WriteLine("Original Amount (ORIGAMT) = " + TrxnResponse.OrigAmt); Console.WriteLine("Amount of Transaction (AMT) = " + TrxnResponse.Amt); if (Convert.ToDecimal(TrxnResponse.BalAmt) == 0 & (Convert.ToDecimal(TrxnResponse.OrigAmt) > Convert.ToDecimal(TrxnResponse.Amt))) { decimal BalDue = Convert.ToDecimal(TrxnResponse.OrigAmt) - Convert.ToDecimal(TrxnResponse.Amt); if (BalDue > 0) { // Seems a balance is still due, collect the difference. Console.WriteLine("Please provide additional payment of: " + BalDue.ToString("c", us)); } else if (BalDue == 0) { Console.WriteLine("Transaction is Paid in Full."); } else { // Card still has available balance on it. Console.WriteLine("Balance Amount (BALAMT) = " + TrxnResponse.BalAmt); } } Console.WriteLine("------------------------------------------------------"); Console.WriteLine("DUPLICATE = " + TrxnResponse.Duplicate); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine(Environment.NewLine + "Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DORecurring.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.12)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Inv.BillTo = Bill; // Create a new Payment Device - Credit Card data object. // The input parameters are Credit Card Number and Expiration Date of the Credit Card. CreditCard CC = new CreditCard("5105105105105100", "0125"); CC.Cvv2 = "123"; // Create a new Tender - Card Tender data object. CardTender Card = new CardTender(CC); RecurringInfo RecurInfo = new RecurringInfo(); // The date that the first payment will be processed. // This will be of the format mmddyyyy. RecurInfo.Start = "<MMDDYYYY>"; RecurInfo.ProfileName = "<TestProfileName>"; // Specifies how often the payment occurs. All PAYPERIOD values must use // capital letters and can be any of DAY / WEEK / BIWK / SMMO / FRWK / ] // MONT / QTER / SMYR / YEAR RecurInfo.PayPeriod = "MONT"; // Create a new Recurring Transaction. RecurringTransaction Trans = new RecurringTransaction("A", RecurInfo, User, Connection, Inv, Card, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); } // Get the Recurring Response parameters. RecurringResponse RecurResponse = Resp.RecurringResponse; if (RecurResponse != null) { Console.WriteLine("RPREF = " + RecurResponse.RPRef); Console.WriteLine("PROFILEID = " + RecurResponse.ProfileId); } } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } Console.WriteLine(Environment.NewLine + "Press Enter to Continue ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOSetEC.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // See the DoSaleComplete sample for more information on setting the Connection object. PayflowConnectionData Connection = new PayflowConnectionData(); // Create the invoice object and set the amount value. Invoice Inv = new Invoice(); Inv.Amt = new Currency(new decimal(21.98), "USD"); Inv.OrderDesc = "This is my Order Description"; // **** PayPal Pay Later Service **** // PayPal Pay Later is a new, convenient, and secure service that allows you to offer your // customers promotional financing. Buyers that choose the promotional offer can defer // payments for purchases on participating merchant web sites, allowing them to shop now and // pay later. // The PayPal Pay Later service allows online merchants to offer promotional financing to // buyers at checkout - even if a buyer doesn't have a PayPal account. Promotional offers, such as // no payments for 90 days, give merchants new and powerful ways to market to online // shoppers. // The PayPal Pay Later service is issued by GE Money Bank, one of the world's leading // providers of consumer credit. // **** Signing Up for PayPal Pay Later **** // PayPal's new promotional financing is currently available to consumers and select merchants // in the U.S. If you are a merchant and would like to add this service, please contact your sales // representative for information and additional documentation. // //PayLater setPayLater = new PayLater(); //setPayLater.ShippingMethod = "UPSGround"; //setPayLater.ProductCategory = "E"; // Camera and Photos //setPayLater.PayPalCheckoutBtnType = "P"; // You can combine up to 10 promotions for PayPal Promotional Financing. // L_PROMOCODE0 //PayLaterLineItem setPayLaterLineItem = new PayLaterLineItem(); //setPayLaterLineItem.PromoCode = "101"; //setPayLater.PayLaterAddLineItem(setPayLaterLineItem); // L_PROMOCODE1 //PayLaterLineItem setPayLaterLineItem1 = new PayLaterLineItem(); //setPayLaterLineItem1.PromoCode = "102"; //setPayLater.PayLaterAddLineItem(setPayLaterLineItem1); // **** Performing a Standard Transaction using Express Checkout **** // // Express Checkout offers your customers an easy, convenient checkout experience. It lets them // use shipping and billing information stored securely at PayPal to check out, so they don’t have // to re-enter it on your site. // // From the perspective of website development, Express Checkout works like other Payflow Pro // features. You submit transaction information to the server as name-value pair parameter // strings. // // Create the data object for Express Checkout SET operation using ECSetRequest Data Object. ECSetRequest SetRequest = new ECSetRequest("http://www.myreturnurl.com", "http://www.mycancelurl.com"); // If using Pay Later, you would create the data object as below. //ECSetRequest setRequest = new ECSetRequest("http://www.myreturnurl.com", "http://www.mycancelurl.com", setPayLater); // **** Performing a Reference Transaction using Express Checkout **** // // NOTE: You must be enabled by PayPal to use reference transactions. Contact your account manager // or the sales department for more details. // // See the "Using Reference Transactions with Express Checkout" guide that is supplied to you // once your account is active with the feature. // *** With Making a Purchase *** // Say that you have implemented Express Checkout on your website. The customer logs in to // purchase an item of merchandise and chooses PayPal to pay for it. In the normal Express // Checkout flow, the customer is then redirected to PayPal to log in to verify their billing // information. If the customer approves payment on the Confirmation page when you are using // a reference transaction, you receive the billing agreement as part of the transaction.You can // use that billing agreement later to bill the customer a set amount on a recurring basis, such as // once-a-month, for future purchases. The customer doesn’t need to log into PayPal each time to // make a payment. // // Create the data object for Express Checkout Reference Transaction SET operation // with Purchase using ECSetRequest Data Object. //ECSetRequest SetRequest = new ECSetRequest("http://www.myreturnurl.com", "http://www.mycancelurl.com", // "MerchantInitiatedBilling", "Test Description", "any", "BACustom"); // *** Without Making a Purchase *** // Typically, the customer chooses a billing agreement without making a purchase when they // subscribe for merchandise they will pay for on a recurring schedule. If, for example, the // customer logs in to your website to order a magazine subscription, you set up an agreement to // bill the customer on a scheduled basis, say, once a month. In the billing agreement flow // without purchase, the customer is redirected to PayPal to log in. On the PayPal site, they // consent to the billing agreement. Next month, when you send the customer the first magazine // issue, the billing agreement authorizes you to start charging the customer’s PayPal account on // the agreed upon recurring basis without having the customer log in to PayPal. // // Create the data object for Express Checkout Reference Transaction SET operation // without Purchase using ECSetBARequest Data Object. //ECSetBARequest SetRequest = new ECSetBARequest("http://www.myreturnurl.com", "http://www.mycancelurl.com", // "MerchantInitiatedBilling", "Test Description", "any", "BACustom"); // Create the Tender object. PayPalTender Tender = new PayPalTender(SetRequest); // Create the transaction object. AuthorizationTransaction Trans = new AuthorizationTransaction (User, Connection, Inv, Tender, PayflowUtility.RequestId); // Create an Order Transaction. An Order transaction represents an agreement to pay one or more // authorized amounts up to the specified total over a maximum of 29 days. // Refer to the Express Checkout for Payflow Pro Developer's Guide regarding Orders. //OrderTransaction Trans = new OrderTransaction(User, Connection, Inv, Tender, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result.ToString()); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("TOKEN = " + Trans.Response.ExpressCheckoutSetResponse.Token); Console.WriteLine("CORRELATIONID = " + TrxnResponse.CorrelationId); // If value is true, then the Request ID has not been changed and the original response // of the original transction is returned. Console.WriteLine("DUPLICATE = " + TrxnResponse.Duplicate); } if (TrxnResponse.Result == 0) { Console.WriteLine(Environment.NewLine + "Transaction was Approved."); Console.WriteLine(Environment.NewLine + "The next step would be to redirect to PayPal to allow customer to log"); Console.WriteLine("into their account to select payment. For this demo, DO NOT CLOSE the browser"); Console.WriteLine("as you will need the TOKEN and/or PAYER ID from the URL for the GET and DO"); Console.WriteLine("samples."); Console.WriteLine(Environment.NewLine + "Make sure you are logged into Developer Central (https://developer.paypal.com) before continuing."); Console.WriteLine(Environment.NewLine + "Press <Enter> to redirect to PayPal."); Console.ReadLine(); // Using the PayPal SandBox for Express Checkout: // Before you can use the PayPal Sandbox with a Gateway account you'll need to do the following: // To setup a PayPal Sandbox account to work with a Payflow Pro account you will need to go to // https://developer.paypal.com and create an account. Once you have access to the Sandbox then // you will be able to set up test business accounts, premier accounts and personal accounts. Please // set up a test business account and personal account so you can test Express Checkout. // // Once you have a test business account created, create a ticket at http://www.paypal.com/mts // under Contact Support and request to have your Payflow Pro (US, AU) or Websites Payments Pro // Payflow Edition (UK) account modified to use the PayPal Sandbox. Provide the e-mail ID you // used when you created your account on the Sandbox. // // Once you are notified that your account has been updated you will then need to modify the host // URLs of the Payflow Pro Express Checkout test servers to the URLs used by the Sandbox. // For example, https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=<token>. // If the SET operation succeeds, you will get a secure session token id in the response of this // operation. Using this token, redirect the user's browser as follows: // For Regular Express Checkout or Express Checkout (Reference) with Purchase. String PayPalUrl = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="; // For Express Checkout (Reference) without Purchase. //String PayPalUrl = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_customer-billing-agreement&token="; PayPalUrl += Trans.Response.ExpressCheckoutSetResponse.Token; //Process.Start(PayPalUrl); // Open default browser. //Process.Start("iexplore.exe", PayPalUrl); Process.Start("C:\\Program Files\\Mozilla Firefox\\firefox.exe", PayPalUrl); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press <Enter> to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOSale_Base.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // Values of connection details can also be passed in the constructor of // PayflowConnectionData. This will override the values passed in the App config file. // Example values passed below are as follows: // Payflow Pro Host address : pilot-payflowpro.paypal.com // Payflow Pro Host Port : 443 // Timeout : 45 ( in seconds ) PayflowConnectionData Connection = new PayflowConnectionData("pilot-payflowpro.paypal.com", 443, 45); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.1256)); Inv.Amt = Amt; // Truncate the Amount value using the truncate feature of // the Currency Data Object. // Note: Currency Data Object also has the Round feature // which will round the amount value to desired number of decimal // digits ( default 2 ). However, round and truncate cannot be used // at the same time. You can set one of round or truncate true. Inv.Amt.Truncate = true; // Set the truncation decimal digit to 2. Inv.Amt.NoOfDecimalDigits = 2; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Inv.BillTo = Bill; // Create a new Payment Device - Credit Card data object. // The input parameters are Credit Card Number and Expiration Date of the Credit Card. CreditCard CC = new CreditCard("5105105105105100", "0115"); CC.Cvv2 = "123"; // Create a new Tender - Card Tender data object. CardTender Card = new CardTender(CC); /////////////////////////////////////////////////////////////////// // Create a new Base Transaction. BaseTransaction Trans = new BaseTransaction("S", User, Connection, Inv, Card, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); Console.WriteLine("IAVS = " + TrxnResponse.IAVS); Console.WriteLine("CVV2MATCH = " + TrxnResponse.CVV2Match); } // Get the Fraud Response parameters. FraudResponse FraudResp = Resp.FraudResponse; // Display Fraud Response parameter if (FraudResp != null) { Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg); Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
protected void btnSubmit_Click(object sender, EventArgs e) { try { string PayPalRequest = "TRXTYPE=S" //S - sale transaction + "&TENDER=C" //C - Credit card + "&ACCT=" + txtCardNumber.Text //card number + "&EXPDATE=" + ddlMonth.SelectedValue + ddlYear.SelectedValue.Substring(2, 2) + "&CVV2=" + txtCvv.Text //card validation value (card security code) + "&AMT=" + txtAmount.Text + "&COMMENT1=My Product Sale" + "&USER="******"USER"] + "&VENDOR=" + ConfigurationManager.AppSettings["VENDOR"] + "&PARTNER=" + ConfigurationManager.AppSettings["PARTNER"] + "&PWD=" + ConfigurationManager.AppSettings["PWD"]; // Create an instantce of PayflowNETAPI. PayflowNETAPI PayflowNETAPI = new PayflowNETAPI(); // RequestId is a unique string that is required for each & every transaction. // The merchant can use her/his own algorithm to generate this unique request id or // use the SDK provided API to generate this as shown below (PayflowUtility.RequestId). string PayPalResponse = PayflowNETAPI.SubmitTransaction(PayPalRequest, PayflowUtility.RequestId); //place data from PayPal into a namevaluecollection NameValueCollection RequestCollection = GetPayPalCollection(PayflowNETAPI.TransactionRequest); NameValueCollection ResponseCollection = GetPayPalCollection(PayPalResponse); //show request lblResult.Text = "<span class=\"heading\">PayPal Payflow Pro transaction request</span><br />"; lblResult.Text += ShowPayPalInfo(RequestCollection); //show response lblResult.Text += "<br /><br /><span class=\"heading\">PayPal Payflow Pro transaction response</span><br />"; lblResult.Text += ShowPayPalInfo(ResponseCollection); //show transaction errors if any string TransErrors = PayflowNETAPI.TransactionContext.ToString(); if (TransErrors != null && TransErrors.Length > 0) { lblResult.Text += "<br /><br /><span class=\"bold-text\">Transaction Errors:</span> " + TransErrors; } //show transaction status lblResult.Text += "<br /><br /><span class=\"bold-text\">Status:</span> " + PayflowUtility.GetStatus(PayPalResponse); } catch (Exception ex) { lblError.Text = ex.Message.ToString(); } }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOCredit.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.12)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Inv.BillTo = Bill; // Create a new Payment Device - Credit Card data object. // The input parameters are Credit Card Number and Expiration Date of the Credit Card. CreditCard CC = new CreditCard("5105105105105100", "0115"); // Create a new Tender - Card Tender data object. CardTender Card = new CardTender(CC); /////////////////////////////////////////////////////////////////// // Create a new Credit Transaction. // Following is an example of a independent credit type of transaction. CreditTransaction Trans = new CreditTransaction(User, Connection, Inv, Card, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); Console.WriteLine("IAVS = " + TrxnResponse.IAVS); Console.WriteLine("CVV2MATCH = " + TrxnResponse.CVV2Match); // If value is true, then the Request ID has not been changed and the original response // of the original transction is returned. Console.WriteLine("DUPLICATE = " + TrxnResponse.Duplicate); } // Get the Fraud Response parameters. FraudResponse FraudResp = Resp.FraudResponse; // Display Fraud Response parameter if (FraudResp != null) { Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg); Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOSale_ACH.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.12)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Inv.BillTo = Bill; // Create a new Payment Device - Bank Account data object. // The input parameters are Account No. and ABA. BankAcct BA = new BankAcct("1111111111", "111111118"); // The Account Type can be "C" for Checking and "S" for Saving. BA.AcctType = "C"; BA.Name = "John Doe"; // Create a new Tender - ACH Tender data object. ACHTender ACH = new ACHTender(BA); ACH.AuthType = "WEB"; // Sending as a Web transaction. ACH.ChkNum = "1234"; // Create a new ACH - Sale Transaction. SaleTransaction Trans = new SaleTransaction(User, Connection, Inv, ACH, PayflowUtility.RequestId); // Setting verbosity to HIGH to get full response. Trans.Verbosity = "HIGH"; // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("HOSTCODE = " + TrxnResponse.HostCode); Console.WriteLine("TRANSTIME = " + TrxnResponse.TransTime); Console.WriteLine("CHECK NAME (FIRSTNAME) = " + TrxnResponse.FirstName); Console.WriteLine("AMOUNT = " + TrxnResponse.Amt); Console.WriteLine("ACCT = " + TrxnResponse.Acct); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOUpdateEC.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // You can use the Update Billing Agreement request to cancel the billing agreement or update // the billing agreement description. // // For more information on Reference Transactions, see the DOSetEC Sample for more details. // For Express Checkout Reference Transaction without Purchase. ECUpdateBARequest UpdateRequest = new ECUpdateBARequest("<BAID>", "<BA_STATUS>", "<BA_DESC>"); // Create the Tender object. PayPalTender Tender = new PayPalTender(UpdateRequest); // Create the transaction object. We do not pass a Transaction Type for an update call. BaseTransaction Trans = new BaseTransaction( null, User, Connection, null, Tender, PayflowUtility.RequestId); // Submit the transaction. Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { // PNREF is not returned with an Update call. Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); if (TrxnResponse.Result == 0) { Console.WriteLine("CORRELATIONID = " + TrxnResponse.CorrelationId); Console.WriteLine("PAYERID = " + Trans.Response.ExpressCheckoutGetResponse.PayerId); Console.WriteLine("PAYERSTATUS = " + Trans.Response.ExpressCheckoutGetResponse.PayerStatus); Console.WriteLine("FIRST = " + Trans.Response.ExpressCheckoutGetResponse.FirstName); Console.WriteLine("LAST = " + Trans.Response.ExpressCheckoutGetResponse.LastName); Console.WriteLine("EMAIL = " + Trans.Response.ExpressCheckoutGetResponse.EMail); Console.WriteLine("BAID = " + Trans.Response.ExpressCheckoutDoResponse.BAId); Console.WriteLine("BA_STATUS = " + Trans.Response.ExpressCheckoutUpdateResponse.BA_Status); Console.WriteLine("BA_DESC = " + Trans.Response.ExpressCheckoutUpdateResponse.BA_Desc); } } // If value is true, then the Request ID has not been changed and the original response // of the original transction is returned. Console.WriteLine(Environment.NewLine + "DUPLICATE = " + TrxnResponse.Duplicate); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOSwipe.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.25)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; Inv.Comment1 = "Swipe Example"; // Create a new Payment Device - Swipe data object. The input parameter is Swipe Data. // Used to pass the Track 1 or Track 2 data (the card’s magnetic stripe information) for card-present // transactions. Include either Track 1 or Track 2 data—not both. If Track 1 is physically damaged, // the POS application can send Track 2 data instead. // The parameter data for the SwipeCard object is usually obtained with a card reader. // NOTE: The SWIPE parameter is not supported on accounts where PayPal is the Processor. SwipeCard Swipe = new SwipeCard(";5105105105105100=20121011000012345678?"); // Create a new Tender - Swipe Tender data object. CardTender Card = new CardTender(Swipe); // Create a new Sale Transaction using Swipe data. SaleTransaction Trans = new SaleTransaction(User, Connection, Inv, Card, PayflowUtility.RequestId); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); // If value is true, then the Request ID has not been changed and the original response // of the original transction is returned. Console.WriteLine("DUPLICATE = " + TrxnResponse.Duplicate); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOSaleComplete.cs"); Console.WriteLine("------------------------------------------------------"); // // PLEASE READ ALL COMMENTS BELOW: // All information regarding the available objects within payflow_dotNET.dll can be found in the API doc // found under the "Docs" directory of the installed SDK. You will also need to refer to the // Payflow Gateway Developer Guide and Reference found at // https://developer.paypal.com/docs/classic/payflow/integration-guide/ // // Regarding the Request ID: // // The request Id is a unique id that you send with your transaction data. This Id if not changed // will help prevent duplicate transactions. The idea is to set this Id outside the loop or if on a page, // prior to the final confirmation page. // // Once the transaction is sent and if you don't receive a response you can resend the transaction and the // server will respond with the response data of the original submission. Also, the object, // Trans.Response.TransactionResponse.Duplicate will be set to "1" if the transaction is a duplicate. // // This allows you to resend transaction requests should there be a network or user issue without re-charging // a customers credit card. // // COMMON ISSUES: // // Result Code 1: // Is usually caused by one of the following: // ** Invalid login information, see result code 26 below. // ** IP Restrictions on the account. Verify there are no IP restrictions in Manager under Service Settings. // // Result Code 26: // Verify USER, VENDOR, PARTNER and PASSWORD. Remember, USER and VENDOR are both the merchant login // ID unless a Payflow Pro USER was created. All fields are case-sensitive. // // Receiving Communication Exceptions or No Response: // Since this service is based on HTTPS it is possible that due to network issues either on PayPal's side or // yours that you can not process a transaction. If this is the case, what is suggested is that you put some // type of loop in your code to try up to X times before "giving up". This example will try to get a response // up to 3 times before it fails and by using the Request ID as described above, you can do these attempts without // the chance of causing duplicate charges on your customer's credit card. // // END COMMENTS // Begin Application // // Set the Request ID // Uncomment the line below and run two concurrent transactions to show how duplicate works. You will notice on // the second transaction that the response returned is identical to the first, but the duplicate object will be set. // String strRequestID = "123456"; // Comment out this line if testing duplicate response. String RequestID = PayflowUtility.RequestId; // *** Create the Data Objects. *** // // *** Create the User data object with the required user details. *** // // Should you choose to store the login information (Vendor, User, Partner and Password) in // app.config, you can retrieve the data using PayflowUtility.AppSettings. // // For Example: // // App.Config Entry: <add key="PayflowPartner" value="PayPal"/> // // String mUser = PayflowUtility.AppSettings("PayflowUser"); // String mVendor = PayflowUtility.AppSettings("PayflowVendor"); // String mPartner = PayflowUtility.AppSettings("PayflowPartner"); // String mPassword = PayflowUtility.AppSettings("PayflowPassword"); // // UserInfo User = new UserInfo (mUser, mVendor, mPartner, mPassword); // Remember: <vendor> = your merchant (login id), <user> = <vendor> unless you created a separate <user> for Payflow Pro. // Result code 26 will be issued if you do not provide both the <vendor> and <user> fields. // The other most common error with authentication is result code 1, user authentication failed. This is usually // due to invalid account information or IP restriction on the account. You can verify IP restriction by logging // into Manager. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // *** Create the Payflow Connection data object with the required connection details. *** // // To allow the ability to change easily between the live and test servers, the PFPRO_HOST // property is defined in the App.config (or web.config for a web site) file. However, // you can also pass these fields and others directly from the PayflowConnectionData constructor. // This will override the values passed in the App.config file. // // For Example: // // Example values passed below are as follows: // Payflow Pro Host address : pilot-payflowpro.paypal.com // Payflow Pro Host Port : 443 // Timeout : 45 ( in seconds ) // // PayflowConnectionData Connection = new PayflowConnectionData("pilot-payflowpro.paypal.com", 443, 45, "",0,"",""); // // Obtain Host address from the app.config file and use default values for // timeout and proxy settings. PayflowConnectionData Connection = new PayflowConnectionData(); // *** Create a new Invoice data object *** // Set Invoice object with the Amount, Billing & Shipping Address, etc. *** Invoice Inv = new Invoice(); // Creates a CultureInfo for English in the U.S. // Not necessary, just here for example of using currency formatting. //CultureInfo us = new CultureInfo("en-US"); //String usCurrency = "USD"; // Set the amount object. For Partial Authorizations, refer to the DoPartialAuth example. // Currency Code 840 (USD) is US ISO currency code. If no code passed, 840 is default. // See the Developer's Guide for the list of the three-digit currency codes. //Currency Amt = new Currency(new decimal(0.00), usCurrency); Currency Amt = new Currency(new decimal(25.00), "USD"); // A valid amount has either no decimal value or only a two decimal value. // An invalid amount will generate a result code 4. // // For values which have more than two decimal places such as: // Currency Amt = new Currency(new Decimal(25.1214)); // You will either need to truncate or round as needed using the following property: Amt.NoOfDecimalDigits // // If the NoOfDecimalDigits property is used then it is mandatory to set one of the following // properties to true. // //Amt.Round = true; //Amt.Truncate = true; // // For Currencies without a decimal, you'll need to set the NoOfDecimalDigits = 0. //Amt.NoOfDecimalDigits = 0; Inv.Amt = Amt; Currency TaxAmt = new Currency(new decimal(0.00), "USD"); Inv.TaxAmt = TaxAmt; // PONum, InvNum and CustRef are sent to the processors and could show up on a customers // or your bank statement. These fields are reportable but not searchable in PayPal Manager. Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; Inv.CustRef = "CustRef1"; // Merchant information is detailed data about a merchant such as the merchant's name, business address, business location identifier, // and contact information and is used to change the merchant's information on a customer's credit card. // See the section, "Submitting Soft Merchant Information" in the Payflow Pro Developer's Guide for more information. //MerchantInfo Merchant = new MerchantInfo(); //Merchant.MerchantName = "MerchantXXXXX"; //Merchant.MerchantCity = "Somewhere"; //Inv.MerchantInfo = Merchant; Inv.VatTaxAmt = new Currency(new decimal(25.00), "USD"); // Comment1 and Comment2 fields are search-able within PayPal Manager . // You may want to populate these fields with any of the above three fields or any other data. // However, the search is a case-sensitive and is a non-wild card search, so plan accordingly. Inv.Comment1 = "Comment1"; Inv.Comment2 = "Comment2"; // There are additional Invoice parameters that could assist you in obtaining a better rate // from your merchant bank. Refer to the Payflow Pro Developer’s Guide1 // and consult your Internet Merchant Bank on what parameters (if any) you can use. // Some of the parameters could include: // Inv.Recurring = "Y"; // Inv.TaxExempt = "Y"; // *** Create Level 2/3 Data for Purchase Card *** // PayPal Payment Services supports passing Purchasing Card Level 2 information (such as // purchase order number, tax amount, and charge description) in the settlement file. // If additional required invoice information and line item details are included in the transaction, // PayPal formats Purchasing Card Level 3 information in an appropriate format, for example, // EDI (Electronic Data Interchange) 810 format as required by American Express during // settlement processing. // // Discuss with your merchant acquiring bank to determine if you should be passing this data and // refer to the Payflow Gateway Developer's Guide under your processor for all valid and required // parameters. // //Create a line item. //LineItem Item = new LineItem(); //Add info to line item. //Item.Amt = new Currency(new Decimal(100.00)); //Item.Cost = new Currency(new Decimal(49.99)); //Add line item to invoice. //Inv.AddLineItem(Item); // To add additional line items, just repeat the same statements above changing the values. // *** Set the Billing Address details. *** // // The billing details below except for Street and Zip are for reporting purposes only. // It is suggested that you pass all the billing details for enhanced reporting and as data backup. // Create the BillTo object. BillTo Bill = new BillTo(); // Set the customer name. Bill.BillToFirstName = "Joe"; Bill.BillToMiddleName = "M"; Bill.BillToLastName = "Smith"; Bill.BillToCompanyName = "Joe's Hardware"; // It is highly suggested that you pass at minimum Street and Zip for AVS response. // However, AVS is only supported by US banks and some foreign banks. See the Payflow // Developer's Guide for more information. Sending these fields could help in obtaining // a lower discount rate from your Internet merchant Bank. Consult your bank for more information. Bill.BillToStreet = "123 Main St."; Bill.BillToStreet2 = "Suite A"; Bill.BillToCity = "San Jose"; Bill.BillToState = "CA"; Bill.BillToZip = "12345"; // BillToCountry code is based on numeric ISO country codes. (e.g. 840 = USA) // For more information, refer to the Payflow Developer's Guide. Bill.BillToCountry = "840"; Bill.BillToPhone = "555-243-7689"; // Secondary phone numbers (could be mobile number etc). Bill.BillToPhone2 = "222-222-2222"; Bill.BillToHomePhone = "555-123-9867"; Bill.BillToFax = "555-343-5444"; Bill.BillToEmail = "*****@*****.**"; // Set the BillTo object into invoice. Inv.BillTo = Bill; // Shipping details may not be necessary if providing a service or downloadable product such as software etc. // // Set the Shipping Address details. // The shipping details are for reporting purposes only. // It is suggested that you pass all the shipping details for enhanced reporting. // // Create the ShipTo object. ShipTo Ship = new ShipTo(); // To prevent an 'Address Mismatch' fraud trigger, we are shipping to the billing address. However, // shipping parameters are listed. // Comment line below if you want a separate Ship To address. //Ship = Bill.Copy(); // Uncomment statements below to send to separate Ship To address. // Set the recipient's name. // Ship.ShipToFirstName = "Sam"; // Ship.ShipToMiddleName = "J"; // Ship.ShipToLastName = "Spade"; // Ship.ShipToStreet = "456 Shipping St."; // Ship.ShipToStreet2 = "Apt A"; // Ship.ShipToCity = "Las Vegas"; // Ship.ShipToState = "NV"; // Ship.ShipToZip = "99999"; // ShipToCountry code is based on numeric ISO country codes. (e.g. 840 = USA) // For more information, refer to the Payflow Pro Developer's Guide. // Ship.ShipToCountry = "840"; // Ship.ShipToPhone = "555-123-1233"; // Secondary phone numbers (could be mobile number etc). // Ship.ShipToPhone2 = "555-333-1222"; // Ship.ShipToEmail = "*****@*****.**"; // Ship.ShipFromZip = Bill.BillToZip; // Following 2 items are just for reporting purposes and are not required. // Ship.ShipCarrier = "UPS"; // Ship.ShipMethod = "Ground"; //Inv.ShipTo = Ship; // ECHODATA allows you to trigger data sent in the request to be returned in the request. // "ADDRESS" will return both shipping and billing address data, if sent. // "USER" will return User Information, set below. // "CUSTDATA" returns miscellaneous fields. Refer to the developer guide. //Inv.EchoData = "USER"; // *** Create Customer Data *** // There are additional CustomerInfo parameters that are used for Level 2 Purchase Cards. // Refer to the Payflow Pro Developer’s Guide and consult with your Internet // Merchant Bank regarding what parameters to send. // Some of the parameters could include: // //CustomerInfo CustInfo = new CustomerInfo(); //CustInfo.CustCode = "CustCode123"; // Customer Code //CustInfo.CustId = "CustId123"; //CustInfo.CustIP = "255.255.255.255"; // Customer's IP Address //Inv.CustomerInfo = CustInfo; // *** Send User fields *** // You can send up to ten string type parameters to store temporary data (for example, variables, // session IDs, order numbers, and so on). These fields will be echoed back either via API response // or as part of the Silent / Return post if using the hosted checkout page. // // Note: UserItem1 through UserItem10 are not displayed to the customer and are not stored in // the PayPal transaction database. // // For these fields to echoed back in the response, you need to set the ECHODATA object. //UserItem nUser = new UserItem(); //nUser.UserItem1 = "TUSER1"; //nUser.UserItem2 = "TUSER2"; //Inv.UserItem = nUser; // *** Create Soft Descriptor Data *** // There are additional MerchantInfo parameters that are used for Level 2 Purchase Cards // to change the Merchant Name and other information that is shown on a card holders statement. // Refer to the Payflow Gateway Developer's Guide for more information. // //MerchantInfo MerchInfo = new MerchantInfo(); //MerchInfo.MerchantName = "My Company Name"; //MerchInfo.MerchantCity = "My Company City"; //Inv.MerchantInfo = MerchInfo; // *** Create a new Payment Device - Credit Card data object. *** // The input parameters are Credit Card Number and Expiration Date of the Credit Card. // Note: Expiration date is in the format MMYY. CreditCard CC = new CreditCard("4111111111111111", "0125"); // Example of Swipe Transaction. // See DOSwipe.cs example for more information. //SwipeCard Swipe = new SwipeCard(";5105105105105100=15121011000012345678?"); // *** Card Security Code *** // This is the 3 or 4 digit code on either side of the Credit Card. // It is highly suggested that you obtain and pass this information to help prevent fraud. // Sending this fields could help in obtaining a lower discount rate from your Internet merchant Bank. // CVV2 is not required when performing a Swipe transaction as the card is present. CC.Cvv2 = "123"; // Name on Credit Card is optional and not used as part of the authorization. // Also, this field populates the NAME field which is the same as FIRSTNAME, so if you // are already populating first name, do not use this field. //CC.Name = "Joe Smith"; // Card on File: Stored Credential // A stored credential is information, including, but not limited to, an account number or a payment token. // It is stored by a merchant, its agent, a payment facilitator or a staged digital wallet operator to process future transactions for a cardholder. // Refer to the Payflow Gateway Developer Guide for more information. // // Example: // CITI (CIT Initial) - Signifies that the merchant is storing the cardholder credentials for the first time in anticipation of future // stored credential transactions. Example: A cardholder sets up a customer profile for future purchases. //CC.CardonFile = "CITI"; // *** Create a new Tender - Card Tender data object. *** CardTender Card = new CardTender(CC); // credit card // If you are doing card-present (retail)type transactions you will want to use the swipe object. Before doing so, verify with // your merchant bank that you are setup to process card-present transactions and contact Payflow support to request your account // be setup to process these types of transactions. You will need to request your market seqment be changed from e-commerce (default) // to retail. //CardTender Card = new CardTender(Swipe); // *** Create a new Sale Transaction. *** // The Request Id is the unique id necessary for each transaction. If you are performing an authorization // - delayed capture transaction, make sure that you pass two different unique request ids for each of the // transaction. // If you pass a non-unique request id, you will receive the transaction details from the original request. // The only difference is you will also receive a parameter DUPLICATE indicating this request id has been used // before. // The Request Id can be any unique number such order id, invoice number from your implementation or a random // id can be generated using the PayflowUtility.RequestId. SaleTransaction Trans = new SaleTransaction(User, Connection, Inv, Card, RequestID); // Used to store client information; such as your cart name, version, etc. Only informational. //ClientInfo cInfo = new ClientInfo(); //cInfo.IntegrationProduct = "Shopping Cart"; //cInfo.IntegrationVersion = "1.0"; //Trans.ClientInfo = cInfo; // Transaction results (especially values for declines and error conditions) returned by each PayPal-supported // processor vary in detail level and in format. The Payflow Verbosity parameter enables you to control the kind // and level of information you want returned. // // By default, Verbosity is set to LOW. A LOW setting causes PayPal to normalize the transaction result values. // Normalizing the values limits them to a standardized set of values and simplifies the process of integrating // the Payflow SDK. // // By setting Verbosity to HIGH, you can view the processor's raw response values along with card information. This // setting is more verbose than the LOW or MEDIUM setting in that it returns more detailed, processor and card specific // information. // // Review the chapter in the Payflow Pro Developer's Guide regarding VERBOSITY and the INQUIRY function for more details. // Set the transaction verbosity to HIGH to display most details. Trans.Verbosity = "HIGH"; // Try to submit the transaction up to 3 times with 5 second delay. This can be used // in case of network issues. The idea here is since you are posting via HTTPS behind the scenes there // could be general network issues, so try a few times before you tell customer there is an issue. int trxCount = 1; bool RespRecd = false; while (trxCount <= 3 && !RespRecd) { // Notice we set the request id earlier in the application and outside our loop. This way if a response was not received // but PayPal processed the original request, you'll receive the original response with DUPLICATE set. // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Uncomment line below to simulate "No Response" //Resp = null; // Display the transaction response parameters. if (Resp != null) { RespRecd = true; // Got a response. // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; // Refer to the Payflow Pro .NET API Reference Guide and the Payflow Pro Developer's Guide // for explanation of the items returned and for additional information and parameters available. if (TrxnResponse != null) { Console.WriteLine("Transaction Response:"); Console.WriteLine("Result Code (RESULT) = " + TrxnResponse.Result); Console.WriteLine("Transaction ID (PNREF) = " + TrxnResponse.Pnref); Console.WriteLine("Response Message (RESPMSG) = " + TrxnResponse.RespMsg); Console.WriteLine("Authorization (AUTHCODE) = " + TrxnResponse.AuthCode); Console.WriteLine("Street Address Match (AVSADDR) = " + TrxnResponse.AVSAddr); Console.WriteLine("Street Zip Match (AVSZIP) = " + TrxnResponse.AVSZip); Console.WriteLine("International Card (IAVS) = " + TrxnResponse.IAVS); Console.WriteLine("CVV2 Match (CVV2MATCH) = " + TrxnResponse.CVV2Match); Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Credit Card Information:"); Console.WriteLine("Last 4-digits Credit Card Number (ACCT) = " + TrxnResponse.Acct); if (TrxnResponse.CardType != null) { Console.Write("Card Type (CARDTYPE) = "); switch (TrxnResponse.CardType) { case "0": Console.WriteLine("Visa"); break; case "1": Console.WriteLine("MasterCard"); break; case "2": Console.WriteLine("Discover"); break; case "3": Console.WriteLine("American Express"); break; case "4": Console.WriteLine("Diner's Club"); break; case "5": Console.WriteLine("JCB"); break; case "6": Console.WriteLine("Maestro"); break; case "S": Console.WriteLine("Solo"); break; } } Console.WriteLine("Billing Name (FIRSTNAME, LASTNAME) = " + TrxnResponse.FirstName + " " + TrxnResponse.LastName); Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Verbosity Response:"); // Displays amount formatted as currency for the CurrentCulture. // Due to operating system differences, you cannot be sure what currency // symbol will be used. //Console.WriteLine("Amount of Transaction (AMT) = " + Convert.ToDecimal(TrxnResponse.Amt).ToString("c", us)); Console.WriteLine("Amount of Transaction (AMT) = " + TrxnResponse.Amt); Console.WriteLine("Processor AVS (PROCAVS) = " + TrxnResponse.ProcAVS); Console.WriteLine("Processor CSC (PROCCVV2) = " + TrxnResponse.ProcCVV2); Console.WriteLine("Processor Result (HOSTCODE) = " + TrxnResponse.HostCode); Console.WriteLine("Transaction Date/Time (TRANSTIME) = " + TrxnResponse.TransTime); Console.WriteLine("Expiration Date (EXPDATE) = " + TrxnResponse.ExpDate); if (TrxnResponse.TxId != null) { // If card is flagged as Card on file (Stored Credential) a transaction ID will be returned that is used on future reference/recurring transactions. Console.WriteLine("Transaction ID (TXID) = " + TrxnResponse.TxId); } } // Get the Fraud Response parameters. // All trial accounts come with basic Fraud Protection Services enabled. // Review the PayPal Manager guide to set up your Fraud Filters prior to // running this sample code. // If Fraud Filters are not set, you will receive a RESULT code 126. FraudResponse FraudResp = Resp.FraudResponse; if (FraudResp != null) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Fraud Response:"); Console.WriteLine("Pre-Filters (PREFPSMSG) = " + FraudResp.PreFpsMsg); Console.WriteLine("Post-Filters (POSTFPSMSG) = " + FraudResp.PostFpsMsg); } // The details below describe what you'd see in the raw response which can be seen in the log file. // // Was this a duplicate transaction, i.e. the request ID was NOT changed. // Remember, a duplicate response will return the results of the original transaction which // could be misleading if you are debugging your software. // For Example, let's say you got a result code 4, Invalid Amount from the original request because // you were sending an amount like: 1,050.98. Since the comma is invalid, you'd receive result code 4. // RESULT=4&PNREF=V18A0C24920E&RESPMSG=Invalid amount&PREFPSMSG=No Rules Triggered // Now, let's say you modified your code to fix this issue and ran another transaction but did not change // the request ID. Notice the PNREF below is the same as above, but DUPLICATE=1 is now appended. // RESULT=4&PNREF=V18A0C24920E&RESPMSG=Invalid amount&DUPLICATE=1 // This would tell you that you are receiving the results from a previous transaction. This goes for // all transactions even a Sale transaction. In this example, let's say a customer ordered something and got // a valid response and now a different customer with different credit card information orders something, but again // the request ID is NOT changed, notice the results of these two sales. In this case, you would have not received // funds for the second order. // First order: RESULT=0&PNREF=V79A0BC5E9CC&RESPMSG=Approved&AUTHCODE=166PNI&AVSADDR=X&AVSZIP=X&CVV2MATCH=Y&IAVS=X // Second order: RESULT=0&PNREF=V79A0BC5E9CC&RESPMSG=Approved&AUTHCODE=166PNI&AVSADDR=X&AVSZIP=X&CVV2MATCH=Y&IAVS=X&DUPLICATE=1 // Again, notice the PNREF is from the first transaction, this goes for all the other fields as well. // It is suggested that your use this to your benefit to prevent duplicate transaction from the same customer, but you want // to check for DUPLICATE=1 to ensure it is not the same results as a previous one. // // Since we are using objects instead of the raw name-value-pairs, you'd check the Duplicate parameter of the TrxnResponse object. Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Duplicate Response:"); string DupMsg; if (TrxnResponse.Duplicate == "1") { DupMsg = "Duplicate Transaction"; } else { DupMsg = "Not a Duplicate Transaction"; } Console.WriteLine(("Duplicate Transaction (DUPLICATE) = " + DupMsg)); // Part of accepting credit cards or PayPal is to determine what your business rules are. Basically, what risk are you // willing to take, especially with credit cards. The code below gives you an idea of how to check the results returned // so you can determine how to handle the transaction. // // This is not an exhaustive list of failures or issues that could arise. Review the list of Result Code's in the // Developer Guide and add logic as you deem necessary. // These responses are just an example of what you can do and how you handle the response received // from the bank/PayPal is dependent on your own business rules and needs. string RespMsg; // Evaluate Result Code if (TrxnResponse.Result < 0) { // Transaction failed. RespMsg = "There was an error processing your transaction. Please contact Customer Service." + Environment.NewLine + "Error: " + TrxnResponse.Result.ToString(); } else if (TrxnResponse.Result == 1 || TrxnResponse.Result == 26) { // This is just checking for invalid login credentials. You normally would not display this type of message. // Result code 26 will be issued if you do not provide both the <vendor> and <user> fields. // Remember: <vendor> = your merchant (login id), <user> = <vendor> unless you created a seperate <user> for Payflow Pro. // // The other most common error with authentication is result code 1, user authentication failed. This is usually // due to invalid account information or ip restriction on the account. You can verify ip restriction by logging // into Manager. See Service Settings >> Allowed IP Addresses. Lastly it could be you forgot the path "/transaction" // on the URL. RespMsg = "Account configuration issue. Please verify your login credentials."; } else if (TrxnResponse.Result == 0) { // Example of a message you might want to display with an approved transaction. RespMsg = "Your transaction was approved. Will ship in 24 hours."; // Even though the transaction was approved, you still might want to check for AVS or CVV2(CSC) prior to // accepting the order. Do realize that credit cards are approved (charged) regardless of the AVS/CVV2 results. // Should you decline (void) the transaction, the card will still have a temporary charge (approval) on it. // // Check AVS - Street/Zip // In the message below it shows what failed, ie street, zip or cvv2. To prevent fraud, it is suggested // you only give a generic billing error message and not tell the card-holder what is actually wrong. However, // that decision is yours. // // Also, it is totally up to you on if you accept only "Y" or allow "N" or "X". You need to decide what // business logic and liability you want to accept with cards that either don't pass the check or where // the bank does not participate or return a result. Remember, AVS is mostly used in the US but some foreign // banks do participate. // // Remember, this just an example of what you might want to do. if (TrxnResponse.AVSAddr != "Y") { // Display message that transaction was not accepted. At this time, you // could display message that information is incorrect and redirect user // to re-enter STREET and ZIP information. However, there should be some sort of // 3 strikes your out check. RespMsg = "Your billing (street) information does not match. Please re-enter."; // Here you might want to put in code to flag or void the transaction depending on your needs. } if (TrxnResponse.AVSZip != "Y") { // Display message that transaction was not accepted. At this time, you // could display message that information is incorrect and redirect user // to re-enter STREET and ZIP information. However, there should be some sort of // 3 strikes your out check. RespMsg = "Your billing (zip) information does not match. Please re-enter."; // Here you might want to put in code to flag or void the transaction depending on your needs. } if (TrxnResponse.CVV2Match != "Y") { // Display message that transaction was not accepted. At this time, you // could display message that information is incorrect. Normally, to prevent // fraud you would not want to tell a customer that the 3/4 digit number on // the credit card was invalid. RespMsg = "Your billing (cvv2) information does not match. Please re-enter."; // Here you might want to put in code to flag or void the transaction depending on your needs. } } else if (TrxnResponse.Result == 12) { // Hard decline from bank. Customer will need to use another card or payment type. RespMsg = "Your transaction was declined."; } else if (TrxnResponse.Result == 13) { // Voice authorization required. You would need to contact your merchant bank to obtain a voice authorization. If authorization is // given, you can manually enter it via Virtual Terminal in PayPal Manager or via the VoiceAuthTransaction object. RespMsg = "Your Transaction is pending. Contact Customer Service to complete your order."; } else if (TrxnResponse.Result == 23 || TrxnResponse.Result == 24) { // Issue with credit card number or expiration date. RespMsg = "Invalid credit card information. Please re-enter."; } else if (TrxnResponse.Result == 125) { // Using the Fraud Protection Service. // This portion of code would be is you are using the Fraud Protection Service, this is for US merchants only. // 125, 126 and 127 are Fraud Responses. // Refer to the Payflow Pro Fraud Protection Services User's Guide or Website Payments Pro Payflow Edition - Fraud Protection Services User's Guide. RespMsg = "Your Transactions has been declined. Contact Customer Service."; } else if (TrxnResponse.Result == 126) { // One of more filters were triggered. Here you would check the fraud message returned if you // want to validate data. For example, you might have 3 filters set, but you'll allow 2 out of the // 3 to consider this a valid transaction. You would then send the request to the server to modify the // status of the transaction. Performing this function is outside the scope of this sample, refer // to the Fraud Developer's Guide. // // Decline transaction if AVS fails. if (TrxnResponse.AVSAddr != "Y" || TrxnResponse.AVSZip != "Y") { // Display message that transaction was not accepted. At this time, you // could display message that information is incorrect and redirect user // to re-enter STREET and ZIP information. However, there should be some sort of // strikes your out check. RespMsg = "Your billing information does not match. Please re-enter."; } else { RespMsg = "Your Transaction is Under Review. We will notify you via e-mail if accepted."; } RespMsg = "Your Transaction is Under Review. We will notify you via e-mail if accepted."; } else if (TrxnResponse.Result == 127) { // There is an issue with checking this transaction through the fraud service. // You will need to manually approve. RespMsg = "Your Transaction is Under Review. We will notify you via e-mail if accepted."; } else { // Error occurred, display normalized message returned. RespMsg = TrxnResponse.RespMsg; } // Display Message Console.WriteLine("------------------------------------------------------"); Console.WriteLine("User/System Response:"); Console.WriteLine("User Message (RESPMSG) = " + RespMsg); Console.WriteLine("System Message (TRXNRESPONSE.RESPMSG) = " + TrxnResponse.RespMsg); // Display the status response of the transaction. // This is just additional information and normally would not be used in production. // Your business logic should be built around the result code returned as shown above. Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Overall Transaction Status: " + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). // This is not normally used in production. Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Transaction Context Errors: " + TransCtx.ToString()); } Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); } else { Thread.Sleep(5000); // let's wait 5 seconds to see if this is a temporary network issue. Console.WriteLine("Retry #: " + trxCount.ToString()); trxCount++; } } if (!RespRecd) { Console.WriteLine("There is a problem obtaining an authorization for your order."); Console.WriteLine("Please contact Customer Support."); Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); } }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOVerbosity.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.12)); Inv.Amt = Amt; Inv.PoNum = "PO12345"; Inv.InvNum = "INV12345"; // Set the Billing Address details. BillTo Bill = new BillTo(); Bill.BillToStreet = "123 Main St."; Bill.BillToZip = "12345"; Inv.BillTo = Bill; // Create a new Payment Device - Credit Card data object. // The input parameters are Credit Card Number and Expiration Date of the Credit Card. CreditCard CC = new CreditCard("5105105105105100", "0115"); CC.Cvv2 = "123"; // Create a new Tender - Card Tender data object. CardTender Card = new CardTender(CC); /////////////////////////////////////////////////////////////////// // Create a new Sale Transaction. SaleTransaction Trans = new SaleTransaction( User, Inv, Card, PayflowUtility.RequestId); // Set the transaction verbosity to MEDIUM. Trans.Verbosity = "MEDIUM"; // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); Console.WriteLine("IAVS = " + TrxnResponse.IAVS); Console.WriteLine("HOSTCODE = " + TrxnResponse.HostCode); Console.WriteLine("PROCAVS = " + TrxnResponse.ProcAVS); Console.WriteLine("CVV2MATCH = " + TrxnResponse.CVV2Match); Console.WriteLine("PROCCVV2 = " + TrxnResponse.ProcCVV2); Console.WriteLine("RESPTEXT = " + TrxnResponse.RespText); Console.WriteLine("ADDLMSGS = " + TrxnResponse.AddlMsgs); } // Get the Fraud Response parameters. FraudResponse FraudResp = Resp.FraudResponse; // Display Fraud Response parameter if (FraudResp != null) { Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg); Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOReference.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Invoice data object with the Amount, Billing Address etc. details. Invoice Inv = new Invoice(); // Set Amount. Currency Amt = new Currency(new decimal(25.12)); Inv.Amt = Amt; // Create a new Tender - Base Tender data object and set the Tender Type to "C". // We do not pass any payment device BaseTender Tender = new BaseTender("C", null); // To modify the expiration date, we wil also need to create a CreditCard object // without passing the credit card number. //CreditCard CC = new CreditCard(null, "1215"); //CardTender Card = new CardTender(CC); // Create a new Reference Transaction. ReferenceTransaction Trans = new ReferenceTransaction("S", "<PNREF>", User, Connection, Inv, PayflowUtility.RequestId); // If expiration date is changed too. //ReferenceTransaction Trans = new ReferenceTransaction("S", "<PNREF>", User, Connection, Inv, Card, PayflowUtility.RequestId); // You can also change the expiration date of the new reference transaction, by passing the EXPDATE via the ExtendData object. //ExtendData ExpDate = new ExtendData("EXPDATE", "1215"); //Trans.AddToExtendData(ExpDate); // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); Console.WriteLine("IAVS = " + TrxnResponse.IAVS); } // Get the Fraud Response parameters. FraudResponse FraudResp = Resp.FraudResponse; // Display Fraud Response parameter if (FraudResp != null) { Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg); Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }
public static void Main(string[] Args) { Console.WriteLine("------------------------------------------------------"); Console.WriteLine("Executing Sample from File: DOInquiry.cs"); Console.WriteLine("------------------------------------------------------"); // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>"); // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); // Create a new Inquiry Transaction. //Replace <PNREF> with a previous transaction ID that you processed on your account. InquiryTransaction Trans = new InquiryTransaction("<PNREF>", User, Connection, PayflowUtility.RequestId); // To use CUSTREF or SECURETOKEN instead of PNREF you need to set the CustRef or SecureToken and include the INVOICE object in your // request. Since you will be using CUSTREF or SECURETOKEN instead of PNREF, PNREF will be "" (null). // Create a new Invoice data object with the Amount, Billing Address etc. details. //Invoice Inv = new Invoice(); //Inv.CustRef = "CUSTREF"; // Can also use Inv.SecureToken //InquiryTransaction Trans = new InquiryTransaction("", User, Connection, Inv, PayflowUtility.RequestId); // Refer to the Payflow Pro Developer's Guide for more information regarding the parameters returned // when VERBOSITY is set. Trans.Verbosity = "HIGH"; // Set to HIGH to see all available data available. // Submit the Transaction Response Resp = Trans.SubmitTransaction(); // Display the transaction response parameters. if (Resp != null) { // Get the Transaction Response parameters. TransactionResponse TrxnResponse = Resp.TransactionResponse; // Display the transaction response parameters. Refer to the Payflow Pro Developer's Guide for explanations. if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); Console.WriteLine("PNREF = " + TrxnResponse.Pnref); Console.WriteLine("--------------------------------------------"); Console.WriteLine("Original Response Data"); Console.WriteLine("--------------------------------------------"); Console.WriteLine("RESULT = " + TrxnResponse.OrigResult); Console.WriteLine("PNREF = " + TrxnResponse.OrigPnref); Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); Console.WriteLine("CVV2MATCH = " + TrxnResponse.CVV2Match); Console.WriteLine("IAVS = " + TrxnResponse.IAVS); Console.WriteLine("HOSTCODE = " + TrxnResponse.HostCode); Console.WriteLine("RESPTEXT = " + TrxnResponse.RespText); Console.WriteLine("PROCAVS = " + TrxnResponse.ProcAVS); Console.WriteLine("PROCCVV2 = " + TrxnResponse.ProcCVV2); Console.WriteLine("PROCCARDSECURE = " + TrxnResponse.ProcCardSecure); Console.WriteLine("ADDLMSGS = " + TrxnResponse.AddlMsgs); Console.WriteLine("TRANSSTATE = " + TrxnResponse.TransState); Console.WriteLine("DATE_TO_SETTLE = " + TrxnResponse.DateToSettle); Console.WriteLine("BATCHID = " + TrxnResponse.BatchId); Console.WriteLine("SETTLE_DATE = " + TrxnResponse.SettleDate); } // Display the response. Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp)); // Get the Transaction Context and check for any contained SDK specific errors (optional code). Context TransCtx = Resp.TransactionContext; if (TransCtx != null && TransCtx.getErrorCount() > 0) { Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString()); } } Console.WriteLine("Press Enter to Exit ..."); Console.ReadLine(); }