Ruby Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Ruby
Examples

Quick Start
Unicode
Byte Array
Bz2
Certificates
CSV
Email
Encryption
FTP
HTML Conversion
HTTP
IMAP
MHT
MIME
POP3
RSA
S/MIME
Signatures
SFTP
SMTP
Socket / SSL
Spider
SSH
SSH Key
SSH Tunnel
Tar
HTTP Upload
XML
XMP
Zip

More Examples...
String
Amazon S3
Email Object
DKIM / DomainKey
NTLM
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
DH Key Exchange
DSA
LZW

 

 

 

 

 

 

 

Submit Credit Card Transaction to PayPal

Submits 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.

Downloads for Windows/Linux and Install Instructions

require 'rubygems'
require 'chilkat'

req = Chilkat::CkHttpRequest.new()
http = Chilkat::CkHttp.new()

#  Any string unlocks the component for the 1st 30-days.
success = http.UnlockComponent("Anything for 30-day trial")
if (success != true)
    print http.lastErrorText() + "\n"
    exit
end

#  These are obviously not real credentials...
username = "seller_1999999893_biz_api1.chilkatsoft.com"
password = "1992299958"
signature = "ALgNZbbbUgjlBaRnvTKJg8-C6AGpAepaaa1rysDXe1OnF7pJcaccccmN"
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.

domain = "api-3t.sandbox.paypal.com"
port = 443
ssl = true

#  120-second non-activity timeout.
http.put_ReadTimeout(15)

resp = http.SynchronousRequest(domain,port,ssl,req)
if (resp == nil )
    print http.lastErrorText() + "\n";
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...

    fakeUrl = "http://www.test.com/abc.asp?" + resp.bodyStr()

    #  We're only using this request object to parse the NVP-formatted response body.
    req2 = Chilkat::CkHttpRequest.new()
    req2.SetFromUrl(fakeUrl)

    #  The ACK param can have these values:
    #  Successful responses:
    #  Success
    #  SuccessWithWarning
    #  Error responses:
    #  Failure
    #  FailureWithWarning
    #  Warning
    print "ACK: " + req2.getParam("ACK") + "\n";

    #  Assuming success, we'll have these params:
    print "AMT: " + req2.getParam("AMT") + "\n";
    print "CURRENCYCODE: " + req2.getParam("CURRENCYCODE") + "\n";
    print "AVSCODE: " + req2.getParam("AVSCODE") + "\n";
    print "CVV2MATCH: " + req2.getParam("CVV2MATCH") + "\n";
    print "TRANSACTIONID: " + req2.getParam("TRANSACTIONID") + "\n";
    print "TIMESTAMP: " + req2.getParam("TIMESTAMP") + "\n";
    print "CORRELATIONID: " + req2.getParam("CORRELATIONID") + "\n";
    print "VERSION: " + req2.getParam("VERSION") + "\n";
    print "BUILD: " + req2.getParam("BUILD") + "\n";

    #  On failure, some of the above params will be set, but these
    #  params will also be present:
    print "L_ERRORCODE0: " + req2.getParam("L_ERRORCODE0") + "\n";
    print "L_SHORTMESSAGE0: " + req2.getParam("L_SHORTMESSAGE0") + "\n";
    print "L_LONGMESSAGE0: " + req2.getParam("L_LONGMESSAGE0") + "\n";
    print "L_SEVERITYCODE0: " + req2.getParam("L_SEVERITYCODE0") + "\n";

end

 

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.