Imports com.paypal.sdk.services Imports com.paypal.soap.api Imports com.paypal.sdk.profiles Namespace Framework Public Class ECommercePayPal Public cAddress As String = "" Public cAuthorizationCode As String = "" Public cCard As String = "" Public cCardCVV2 As String = "" Public cCity As String = "" Public cCountry As String = "" Public cPostalCode As String = "" Public cProvince As String = "" Public cEmail As String = "" Public cError As String = "" Public cFirstName As String = "" Public cIdentifier As String = "" Public cIP As String = "" Public cLastName As String = "" Public cMessage As String = "" Public cPassword As String = "" Public cReferenceNumber As String = "" Public cResponseCode As String = "" Public cTransactionID As String = "" Public cToken As String = "" Public cUsername As String = "" Public lProduction As Boolean = True Public lSuccess As Boolean = False Public nCardExpirationMonth As Integer = 0 Public nCardExpirationYear As Integer = 0 Public nNoCountry As Integer = 0 Public nNoInvoice As Integer = 0 Public nNoProvince As Integer = 0 Public nPrimaryKey As Integer = 0 Public nResponseCode As Integer = 0 Public nTotal As Double = 0 Private nLanguage As Integer = 0 Private oApp As Framework.App Private oProcess As Framework.LXProcess ' This is when we access the data provider in desktop and Web service mode Public Sub New(ByVal toApplication As Framework.App) oApp = toApplication nLanguage = oApp.nLanguage End Sub ' This is when we access the data provider in a Web mode Public Sub New(ByVal toProcess As Framework.LXProcess) oProcess = toProcess oApp = oProcess.oApp nLanguage = oProcess.nLanguage End Sub ' Payment Public Function Payment() As Boolean Dim lcEnvironment As String = "" Dim lcTotal As String = "" Dim loCaller As CallerServices = Nothing Dim loDoDirectPaymentReq As DoDirectPaymentReq = New DoDirectPaymentReq() Dim loDoDirectPaymentRequestType As DoDirectPaymentRequestType = New DoDirectPaymentRequestType() Dim loDoDirectPaymentResponseType As DoDirectPaymentResponseType = New DoDirectPaymentResponseType() Dim loPaymentDetailsItemType1 As PaymentDetailsItemType = New PaymentDetailsItemType() Dim loPaymentDetailsItemType2 As PaymentDetailsItemType = New PaymentDetailsItemType() Dim loPaymentDetailsItemTypeArray() As PaymentDetailsItemType = Nothing Dim loProfile As IAPIProfile = Nothing lcTotal = oApp.GetFormatValue(nTotal, , 2) loCaller = New CallerServices() loProfile = ProfileFactory.createSignatureAPIProfile() ' Initialization loProfile.APIUsername = cUsername loProfile.APIPassword = cPassword loProfile.APISignature = cToken ' If we use the production environment If lProduction Then lcEnvironment = "live" Else lcEnvironment = "sandbox" End If loProfile.Environment = lcEnvironment loCaller.APIProfile = loProfile loDoDirectPaymentRequestType.Version = "60.0" ' RequestDetails objects loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails = New DoDirectPaymentRequestDetailsType() ' loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.MerchantSessionId = "1X911810264059026" ' Set payment action loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentAction = PaymentActionCodeType.Sale ' Set IP loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.IPAddress = cIP ' Set CreditCard info - this is a dummy card # generated out of a PayPal Sandbox account loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard = New CreditCardDetailsType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CreditCardNumber = cCard 'loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CreditCardType = CreditCardTypeType.Visa loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CVV2 = cCardCVV2 loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.ExpMonth = nCardExpirationMonth loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.ExpYear = nCardExpirationYear loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.ExpMonthSpecified = True loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.ExpYearSpecified = True ' Set billing address loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner = New PayerInfoType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerName = New PersonNameType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerName.FirstName = cFirstName loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerName.LastName = cLastName loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address = New AddressType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Street1 = cAddress loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Street2 = "" loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.CityName = cCity loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.StateOrProvince = cProvince loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.PostalCode = cPostalCode loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.CountrySpecified = True 'loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.CountryName = "Canada" ' If this is Canada If nNoCountry = 1 Then loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Country = CountryCodeType.CA Else loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Country = CountryCodeType.US End If 'loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Phone = "5067831111" If False Then ' Item 1 loPaymentDetailsItemType1.Amount = New BasicAmountType() loPaymentDetailsItemType1.Amount.Value = "2.00" loPaymentDetailsItemType1.Amount.currencyID = CurrencyCodeType.USD loPaymentDetailsItemType1.Quantity = "1" loPaymentDetailsItemType1.Tax = New BasicAmountType() loPaymentDetailsItemType1.Tax.Value = "1.00" loPaymentDetailsItemType1.Tax.currencyID = CurrencyCodeType.USD loPaymentDetailsItemType1.Name = "Item 1" loPaymentDetailsItemType1.Number = "SKU 1" ' Item 2 loPaymentDetailsItemType2.Amount = New BasicAmountType() loPaymentDetailsItemType2.Amount.Value = "5.00" loPaymentDetailsItemType2.Amount.currencyID = CurrencyCodeType.USD loPaymentDetailsItemType2.Quantity = "1" loPaymentDetailsItemType2.Tax = New BasicAmountType() loPaymentDetailsItemType2.Tax.Value = "1.00" loPaymentDetailsItemType2.Tax.currencyID = CurrencyCodeType.USD loPaymentDetailsItemType2.Name = "Item 2" loPaymentDetailsItemType2.Number = "SKU 2" loPaymentDetailsItemTypeArray = New PaymentDetailsItemType(1) {} loPaymentDetailsItemTypeArray.SetValue(loPaymentDetailsItemType1, 0) loPaymentDetailsItemTypeArray.SetValue(loPaymentDetailsItemType2, 1) End If ' Set payment Details loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails = New PaymentDetailsType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.[Custom] = System.DateTime.Now.ToLongTimeString() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.OrderDescription = "No description" If False Then ' Add the items loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.PaymentDetailsItem = New PaymentDetailsItemType(1) {} loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.PaymentDetailsItem = loPaymentDetailsItemTypeArray loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.PaymentDetailsItem.SetValue(loPaymentDetailsItemType1, 0) loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.PaymentDetailsItem.SetValue(loPaymentDetailsItemType2, 1) End If loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.OrderTotal = New BasicAmountType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.OrderTotal.currencyID = CurrencyCodeType.CAD loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.OrderTotal.Value = lcTotal If False Then loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShippingTotal = New BasicAmountType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShippingTotal.currencyID = CurrencyCodeType.CAD loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShippingTotal.Value = "2.00" loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.TaxTotal = New BasicAmountType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.TaxTotal.currencyID = CurrencyCodeType.CAD loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.TaxTotal.Value = "2.00" loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ItemTotal = New BasicAmountType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ItemTotal.currencyID = CurrencyCodeType.CAD loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ItemTotal.Value = "7.00" End If If False Then ' Set ship to address loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress = New AddressType() loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress.Name = "Sally Tate" loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress.Street1 = "451 Happy Valley" loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress.CityName = "Oakland" loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress.StateOrProvince = "CA" loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress.PostalCode = "94603" loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress.CountrySpecified = True loDoDirectPaymentRequestType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress.Country = CountryCodeType.CA End If ' Add the request loDoDirectPaymentReq.DoDirectPaymentRequest = loDoDirectPaymentRequestType loDoDirectPaymentReq.DoDirectPaymentRequest.Version = "2.20" ' Execute the API operation and obtain the response loDoDirectPaymentResponseType = CType(loCaller.Call("DoDirectPayment", loDoDirectPaymentRequestType), DoDirectPaymentResponseType) cMessage = loDoDirectPaymentResponseType.Ack.ToString() ' If we have a success If cMessage = "Success" Or cMessage = "SuccessWithWarning" Then lSuccess = True End If ' If this is not a success If Not lSuccess Then nResponseCode = loDoDirectPaymentResponseType.Errors(0).ErrorCode cMessage = loDoDirectPaymentResponseType.Errors(0).LongMessage.ToString End If cReferenceNumber = loDoDirectPaymentResponseType.CorrelationID cTransactionID = loDoDirectPaymentResponseType.TransactionID Return lSuccess End Function End Class End NamespaceTo call it:
Dim loECommercePayPal As Framework.ECommercePayPal = Nothing ' Get the proper definition as per the current scope If oProcess Is Nothing Then loECommercePayPal = New Framework.ECommercePayPal(oApp) Else loECommercePayPal = New Framework.ECommercePayPal(oProcess) End If loECommercePayPal.cFirstName = cFirstName loECommercePayPal.cLastName = cLastName loECommercePayPal.cCard = cCard loECommercePayPal.cAddress = cAddress loECommercePayPal.cCity = cCity loECommercePayPal.nNoProvince = nNoProvince loECommercePayPal.cPostalCode = cPostalCode loECommercePayPal.nNoCountry = nNoCountry loECommercePayPal.nCardExpirationMonth = nCardExpirationMonth loECommercePayPal.nCardExpirationYear = nCardExpirationYear loECommercePayPal.cEmail = cEmail loECommercePayPal.cIdentifier = cIdentifier loECommercePayPal.nTotal = nTotal loECommercePayPal.lProduction = lProduction loECommercePayPal.cUsername = Trim(cUsername) loECommercePayPal.cPassword = Trim(cPassword) loECommercePayPal.cToken = Trim(cToken) loECommercePayPal.nPrimaryKey = nPrimaryKey loECommercePayPal.cIP = lcIP loECommercePayPal.cCardCVV2 = cCardCVV2 loECommercePayPal.cProvince = cProvince loECommercePayPal.cCountry = cCountry If Not loECommercePayPal.Payment() Then End If cError = loECommercePayPal.cError cMessage = loECommercePayPal.cMessage cReferenceNumber = loECommercePayPal.cReferenceNumber cTransactionID = loECommercePayPal.cTransactionID lSuccess = loECommercePayPal.lSuccess nResponseCode = loECommercePayPal.nResponseCode