Paypal Wizard

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 10

2b. Download these files to your shopping cart web directory.

Put your API Username, API Password, and Signature in the paypalfunctions code file
where the comments instruct you to do so.

2c. Save the total payment amount in a Session variable named "Payment_Amount". The
code inside the ExpressCheckout file is designed to read from this session variable and
pass as input to the API call.

3a. Insert this code snippet into the section of your code that handles billing.*

<!-- #include file ="paypalfunctions.asp" -->


<%
if PaymentOption = "PayPal" then

' ==================================
' PayPal Express Checkout Module
' ==================================
On Error Resume Next

'------------------------------------
' The currencyCodeType and paymentType
' are set to the selections made on the Integration Assistant
'------------------------------------
currencyCodeType = "USD"
paymentType = "Sale"

'------------------------------------
' The returnURL is the location where buyers return to when a
' payment has been succesfully authorized.
'
' This is set to the value entered on the Integration Assistant
'------------------------------------
returnURL = "http://www.dubaidirectorypages.com/entilaq1/conferm.asp"

'------------------------------------
' The cancelURL is the location buyers are sent to when they click the
' return to XXXX site where XXX is the merhcant store name
' during payment review on PayPal
'
' This is set to the value entered on the Integration Assistant
'------------------------------------
cancelURL =
"http://www.dubaidirectorypages.com/entilaq1/delegatebooking.asp"
'------------------------------------
' The paymentAmount is the total value of
' the shopping cart, that was set
' earlier in a session variable
' by the shopping cart page
'------------------------------------
paymentAmount = Session("Payment_Amount")

'------------------------------------
' When you integrate this code
' set the variables below with
' shipping address details
' entered by the user on the
' Shipping page.
'------------------------------------
shipToName = "<<ShiptoName>>"
shipToStreet = "<<ShipToStreet>>"
shipToStreet2 = "<<ShipToStreet2>>" 'Leave it blank if there is no value
shipToCity = "<<ShipToCity>>"
shipToState = "<<ShipToState>>"
shipToCountryCode = "<<ShipToCountryCode>>" ' Please refer to the PayPal
country codes in the API documentation
shipToZip = "<<ShipToZip>>"
phoneNum = "<<PhoneNumber>>"

'------------------------------------
' Calls the SetExpressCheckout API call
'
' The CallMarkExpressCheckout function is defined in PayPalFunctions.asp
' included at the top of this file.
'-------------------------------------------------
Set resArray = CallMarkExpressCheckout (paymentAmount, currencyCodeType,
paymentType, returnURL, cancelURL, shipToName,
shipToStreet, shipToCity, shipToState,
shipToCountryCode, shipToZip, shipToStreet2, phoneNum )

ack = UCase(resArray("ACK"))

If ack="SUCCESS" Then
' Redirect to paypal.com
SESSION("token") = resArray("TOKEN")
ReDirectURL( resArray("TOKEN") )
Else
'Display a user friendly Error on the page using any of the following error
information returned by PayPal
ErrorCode = URLDecode( resArray("L_ERRORCODE0"))
ErrorShortMsg = URLDecode( resArray("L_SHORTMESSAGE0"))
ErrorLongMsg = URLDecode( resArray("L_LONGMESSAGE0"))
ErrorSeverityCode = URLDecode( resArray("L_SEVERITYCODE0"))
End If

Else If (((PaymentOption = "Visa") Or (PaymentOption = "MasterCard") Or


(PaymentOption = "Amex") or (PaymentOption = "Discover"))
and ( PaymentProcessorSelected = "PayPal Direct Payment"))

'------------------------------------
' The paymentAmount is the total value of
' the shopping cart, that was set
' earlier in a session variable
' by the shopping cart page
'------------------------------------
paymentAmount = Session("Payment_Amount")

'------------------------------------
' The paymentType that was selected earlier
'------------------------------------
paymentType = "Sale"

' Set these values based on what was selected by the user on the Billing page Html
form

creditCardType = "<<Visa/MasterCard/Amex/Discover>>" '


Set this to one of the acceptable values (Visa/MasterCard/Amex/Discover) match it to
what was selected on your Billing page
creditCardNumber = "<<CC number>>" ' Set this to the string entered
as the credit card number on the Billing page
expDate = "<<Expiry Date>>" ' Set this to the credit
card expiry date entered on the Billing page
cvv2 = "<<cvv2>>" ' Set this to the CVV2 string
entered on the Billing page
firstName = "<<firstName>>" ' Set this to the
customer's first name that was entered on the Billing page
lastName = "<<lastName>>" ' Set this to the
customer's last name that was entered on the Billing page
street = "<<street>>" ' Set this to the customer's
street address that was entered on the Billing page
city = "<<city>>" ' Set this to the customer's city
that was entered on the Billing page
state = "<<state>>" ' Set this to the customer's
state that was entered on the Billing page
zip = "<<zip>>" ' Set this to the zip code of the
customer's address that was entered on the Billing page
countryCode = "<<PayPal Country Code>>" ' Set this to the
PayPal code for the Country of the customer's address that was entered on the Billing
page
currencyCode = "<<PayPal Currency Code>>" ' Set this to the
PayPal code for the Currency used by the customer

'------------------------------------------------
' Calls the DoDirectPayment API call
'
' The DirectPayment function is defined in PayPalFunctions.asp included at the
top of this file.
'-------------------------------------------------
Set resArray = DirectPayment (paymentType, paymentAmount, creditCardType,
creditCardNumber,
expDate, cvv2, firstName, lastName,
street, city, state, zip,
countryCode, currencyCode )

ack = UCase(resArray("ACK"))

If ack <> "SUCCESS" Then


'Display a user friendly Error on the page using any of the following error
information returned by PayPal
ErrorCode = URLDecode( resArray("L_ERRORCODE0"))
ErrorShortMsg = URLDecode( resArray("L_SHORTMESSAGE0"))
ErrorLongMsg = URLDecode( resArray("L_LONGMESSAGE0"))
ErrorSeverityCode = URLDecode( resArray("L_SEVERITYCODE0"))

' DirectPayment related error information


ErrorAVSCode = URLDecode( resArray("AVSCODE"))
ErrorCVV2Match = URLDecode( resArray("CVV2MATCH"))
ErrorTransactionId = URLDecode( resArray("TRANSACTIONID"))

End If

End If
%>

3b. To pass the shipping address entered, replaced the shipping address placeholders in
the code snippet with variables representing the shipping address from PayPal.
3c. Save the total payment amount in a session variable named "Payment_Amount". The
code inside the ExpressCheckout file is designed to read from this session variable and
pass as input to the API call.

Order Review - get shipping address from


PayPal
4a. Insert this code snippet into the section of your code that handles order review.*

<!-- #include file ="paypalfunctions.asp" -->


<%
On Error Resume Next

'---- Get the token value from the Request string


token = Request("token")

'-- This indicates that the directed flow to this page is originating from PayPal, if this
value is not present then user is not
'-- coming from PayPal.
if token <> "" then

'------------------------------------
' Calls the GetExpressCheckoutDetails API call
'
' The GetShippingDetails function is defined in PayPalFunctions.asp
' included at the top of this file.
'-------------------------------------------------

set resArray = GetShippingDetails( token )

ack = UCase(resArray("ACK"))

If ack <> "SUCCESS" Then


'Display a user friendly Error on the page using any of the following error
information returned by PayPal
ErrorCode = URLDecode( resArray("L_ERRORCODE0"))
ErrorShortMsg = URLDecode( resArray("L_SHORTMESSAGE0"))
ErrorLongMsg = URLDecode( resArray("L_LONGMESSAGE0"))
ErrorSeverityCode = URLDecode( resArray("L_SEVERITYCODE0"))

Else
email = resArray("EMAIL") ' Email address of payer.
payerId = resArray("PAYERID") ' Unique PayPal customer
account identification number.
payerStatus = resArray("PAYERSTATUS") ' Status of payer.
Character length and limitations: 10 single-byte alphabetic characters.
salutation = resArray("SALUTATION") ' Payer's salutation.
firstName = resArray("FIRSTNAME") ' Payer's first name.
middleName = resArray("MIDDLENAME") ' Payer's middle
name.
lastName = resArray("LASTNAME") ' Payer's last name.
suffix = resArray("SUFFIX") ' Payer's suffix.
cntryCode = resArray("COUNTRYCODE") ' Payer's country
of residence in the form of ISO standard 3166 two-character country codes.
business = resArray("BUSINESS") ' Payer's business name.
shipToName = resArray("SHIPTONAME") ' Person's name
associated with this address.
shipToStreet = resArray("SHIPTOSTREET") ' First street address.
shipToStreet2 = resArray("SHIPTOSTREET2") ' Second street address.
shipToCity = resArray("SHIPTOCITY") ' Name of city.
shipToState = resArray("SHIPTOSTATE") ' State or province
shipToCntryCode = resArray("SHIPTOCOUNTRYCODE") ' Country
code.
shipToZip = resArray("SHIPTOZIP") ' U.S. Zip code or other
country-specific postal code.
addressStatus = resArray("ADDRESSSTATUS") ' Status of street
address on file with PayPal
invoiceNumber = resArray("INVNUM") ' Your own invoice or
tracking number, as set by you in the element of the same name in SetExpressCheckout
request .
phonNumber = resArray("PHONENUM") ' Payer's contact
telephone number. Note: PayPal returns a contact telephone number only if your
Merchant account profile settings require that the buyer enter one.

' This is just an example of what can be displayed on the Order Review
page. You can use this code as sample to integrate into your Order Review page the
information returned
' by PayPal

strFormattedOutput = "<table><tr>"
strFormattedOutput = strFormattedOutput + "<td> First Name </td><td>"
+ firstName + "</td></tr>"
strFormattedOutput = strFormattedOutput + "<td> Last Name </td><td>"
+ lastName + "</td></tr>"
strFormattedOutput = strFormattedOutput + "<td colspan='2'> Shipping
Address</td></tr>"
strFormattedOutput = strFormattedOutput + "<td> Name </td><td>" +
shipToName + "</td></tr>"
strFormattedOutput = strFormattedOutput + "<td> Street1 </td><td>" +
shipToStreet + "</td></tr>"
strFormattedOutput = strFormattedOutput + "<td> Street2 </td><td>" +
shipToStreet2 + "</td></tr>"
strFormattedOutput = strFormattedOutput + "<td> City </td><td>" +
shipToCity + "</td></tr>"
strFormattedOutput = strFormattedOutput + "<td> State </td><td>" +
shipToState + "</td></tr>"
strFormattedOutput = strFormattedOutput + "<td> Zip </td><td>" +
shipToZip + "</td></tr>"

Response.Write strFormatted

End If
End If
%>

4b. Display the shipping address returned in the code variables on your order review
page.

4c. Save the total payment amount in a session variable named "Payment_Amount". The
code inside the ExpressCheckout file is designed to read from this session variable and
pass as input to the API call.

Order Confirmation - confirm payment


from PayPal

5a. Insert this code snippet into the section of your code that handles order confirmation.*

<!-- #include file ="paypalfunctions.asp" -->


<%
if PaymentOption = "PayPal" then

On Error Resume Next

'------------------------------------
' The paymentAmount is the total value of
' the shopping cart, that was set
' earlier in a session variable
' by the shopping cart page
'------------------------------------
finalPaymentAmount = Session("Payment_Amount")

'------------------------------------
' Calls the GetExpressCheckoutDetails API call
'
' The GetShippingDetails function is defined in PayPalFunctions.asp
' included at the top of this file.
'-------------------------------------------------
set resArray = ConfirmPayment( finalPaymentAmount )

ack = UCase(resArray("ACK"))

If ack <> "SUCCESS" Then


'Display a user friendly Error on the page using any of the following error
information returned by PayPal
ErrorCode = URLDecode( resArray("L_ERRORCODE0"))
ErrorShortMsg = URLDecode( resArray("L_SHORTMESSAGE0"))
ErrorLongMsg = URLDecode( resArray("L_LONGMESSAGE0"))
ErrorSeverityCode = URLDecode( resArray("L_SEVERITYCODE0"))

Else
'***********************************************************
*********************************************************
'
' THE PARTNER SHOULD SAVE THE KEY TRANSACTION
RELATED INFORMATION LIKE
' transactionId & orderTime
' IN THEIR OWN DATABASE
' AND THE REST OF THE INFORMATION CAN BE USED TO
UNDERSTAND THE STATUS OF THE PAYMENT
'
'***********************************************************
*********************************************************
token = resArray("TOKEN") ' The timestamped token
value that was returned by SetExpressCheckout response and passed on
GetExpressCheckoutDetails request.
transactionId = resArray("TRANSACTIONID") ' Unique transaction ID
of the payment. Note: If the PaymentAction of the request was Authorization or Order,
this value is your AuthorizationID for use with the Authorization & Capture APIs.
transactionType = resArray("TRANSACTIONTYPE") ' The type of
transaction Possible values: l cart l express-checkout
paymentType = resArray("PAYMENTTYPE") ' Indicates whether
the payment is instant or delayed. Possible values: l none l echeck l instant
orderTime = resArray("ORDERTIME") ' Time/date stamp of
payment
amt = resArray("AMT") ' The final amount
charged, including any shipping and taxes from your Merchant Profile.
currencyCode = resArray("CURRENCYCODE") ' A three-character
currency code for one of the currencies listed in PayPay-Supported Transactional
Currencies. Default: USD.
feeAmt = resArray("FEEAMT") ' PayPal fee amount
charged for the transaction
settleAmt = resArray("SETTLEAMT") ' Amount deposited in
your PayPal account after a currency conversion.
taxAmt = resArray("TAXAMT") ' Tax charged on
the transaction.
exchangeRate = resArray("EXCHANGERATE") ' Exchange rate if a
currency conversion occurred. Relevant only if your are billing in their non-primary
currency. If the customer chooses to pay with a currency other than the non-primary
currency, the conversion occurs in the customer’s account.

' Status of the payment:


'Completed: The payment has been completed, and the
funds have been added successfully to your account balance.
'Pending: The payment is pending. See the PendingReason
element for more information.
paymentStatus = resArray("PAYMENTSTATUS")

'The reason the payment is pending:


' none: No pending reason
' address: The payment is pending because your customer did not include
a confirmed shipping address and your Payment Receiving Preferences is set such that
you want to manually accept or deny each of these payments. To change your preference,
go to the Preferences section of your Profile.
' echeck: The payment is pending because it was made by an eCheck that
has not yet cleared.
' intl: The payment is pending because you hold a non-U.S. account and
do not have a withdrawal mechanism. You must manually accept or deny this payment
from your Account Overview.
' multi-currency: You do not have a balance in the currency sent, and you
do not have your Payment Receiving Preferences set to automatically convert and accept
this payment. You must manually accept or deny this payment.
' verify: The payment is pending because you are not yet verified. You
must verify your account before you can accept this payment.
' other: The payment is pending for a reason other than those listed above.
For more information, contact PayPal customer service.
pendingReason = resArray("PENDINGREASON")

'The reason for a reversal if TransactionType is reversal:


' none: No reason code
' chargeback: A reversal has occurred on this transaction due to a
chargeback by your customer.
' guarantee: A reversal has occurred on this transaction due to your
customer triggering a money-back guarantee.
' buyer-complaint: A reversal has occurred on this transaction due to a
complaint about the transaction from your customer.
' refund: A reversal has occurred on this transaction because you have
given the customer a refund.
' other: A reversal has occurred on this transaction due to a reason not
listed above.
reasonCode = resArray("REASONCODE")

End If
End If
%>

5b. Save the total payment amount in a Session variable named "Payment_Amount". The
code inside the ExpressCheckout file is designed to read from this session variable and
pass as input to the API call.

5c. Process the information returned by your code and complete your order backend
processing.

You might also like