Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
Submit Credit Card Transaction to PayPalSubmits a credit card transaction to PayPal. The response parameters are displayed for both success and error responses. This example communicates directly with PayPal's Payflow servers via HTTPS.
#include <CkHttpRequest.h> #include <CkHttp.h> #include <CkString.h> #include <CkHttpResponse.h> void ChilkatSample(void) { CkHttpRequest req; CkHttp http; bool success; // Any string unlocks the component for the 1st 30-days. success = http.UnlockComponent("Anything for 30-day trial"); if (success != true) { printf("%s\n",http.lastErrorText()); return; } // These are obviously not real credentials... CkString username; username = "seller_1999999893_biz_api1.chilkatsoft.com"; CkString password; password = "1992299958"; CkString signature; signature = "ALgNZbbbUgjlBaRnvTKJg8-C6AGpAepaaa1rysDXe1OnF7pJcaccccmN"; CkString version; version = "3.2"; // The PayPal NVP sandbox server for API Signature Security is: // https://api-3t.sandbox.paypal.com/nvp // Build an HTTPS POST Request: req.UsePost(); req.put_Path("/nvp"); // The content-type should be text/namevalue req.AddHeader("content-type","text/namevalue"); req.AddParam("METHOD","doDirectPayment"); req.AddParam("PAYMENTACTION","Sale"); req.AddParam("AMT","1.00"); req.AddParam("IPADDRESS","37.174.133.150"); // Visa, Discover, Mastercard, or Amex req.AddParam("CREDITCARDTYPE","Visa"); req.AddParam("ACCT","4397920706128982"); // expiration date should be formatted MMYYYY req.AddParam("EXPDATE","022010"); req.AddParam("CVV2","382"); req.AddParam("FIRSTNAME","Test"); req.AddParam("LASTNAME","User"); req.AddParam("STREET","1 Main St"); req.AddParam("CITY","San Jose"); req.AddParam("STATE","CA"); req.AddParam("ZIP","95131"); req.AddParam("COUNTRYCODE","US"); req.AddParam("CURRENCYCODE","USD"); // Credentials and version: req.AddParam("VERSION",version); req.AddParam("USER",username); req.AddParam("PWD",password); req.AddParam("SIGNATURE",signature); // Send the HTTPS POST and get the response. Note: This is a blocking call. // The method does not return until the full HTTP response is received. CkString domain; int port; bool ssl; domain = "api-3t.sandbox.paypal.com"; port = 443; ssl = true; CkHttpResponse *resp = 0; // 120-second non-activity timeout. http.put_ReadTimeout(15); resp = http.SynchronousRequest(domain,port,ssl,req); if (resp == 0 ) { printf("%s\n",http.lastErrorText()); } else { // The response body is in NVP format -- which is nothing more than URL-encoded name/value pairs. // One easy way to parse it is to use the HttpRequest // object in an unorthodox way. // We'll create a fake URL that contains the name/value pairs // found in the body of the response. // Then we'll load it into a temporary HTTP request object. // The HTTP request object does the parsing for us, and we // can look at the params... CkString fakeUrl; fakeUrl = "http://www.test.com/abc.asp?"; fakeUrl.append(resp->bodyStr()); // We're only using this request object to parse the NVP-formatted response body. CkHttpRequest req2; req2.SetFromUrl(fakeUrl); // The ACK param can have these values: // Successful responses: // Success // SuccessWithWarning // Error responses: // Failure // FailureWithWarning // Warning printf("ACK: %s\n",req2.getParam("ACK")); // Assuming success, we'll have these params: printf("AMT: %s\n",req2.getParam("AMT")); printf("CURRENCYCODE: %s\n",req2.getParam("CURRENCYCODE")); printf("AVSCODE: %s\n",req2.getParam("AVSCODE")); printf("CVV2MATCH: %s\n",req2.getParam("CVV2MATCH")); printf("TRANSACTIONID: %s\n",req2.getParam("TRANSACTIONID")); printf("TIMESTAMP: %s\n",req2.getParam("TIMESTAMP")); printf("CORRELATIONID: %s\n",req2.getParam("CORRELATIONID")); printf("VERSION: %s\n",req2.getParam("VERSION")); printf("BUILD: %s\n",req2.getParam("BUILD")); // On failure, some of the above params will be set, but these // params will also be present: printf("L_ERRORCODE0: %s\n",req2.getParam("L_ERRORCODE0")); printf("L_SHORTMESSAGE0: %s\n",req2.getParam("L_SHORTMESSAGE0")); printf("L_LONGMESSAGE0: %s\n",req2.getParam("L_LONGMESSAGE0")); printf("L_SEVERITYCODE0: %s\n",req2.getParam("L_SEVERITYCODE0")); } } |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2009 Chilkat Software, Inc. All Rights Reserved.