Option Explicit On Option Strict On Imports PPSvc.PayPalSvc Imports System Imports System.Security.Cryptography.X509Certificates Public Class PPClass Private msUserid As String Private msUserPassword As String Private msCertFilePathName As String Private msURL As String Public Function TransactionSearch(ByVal dtStartDate As Date, _ ByVal dtEndDate As Date, _ ByRef Payments() As PaymentClass, _ ByRef sErrorMessage As String) As Boolean Dim oPayPalSvc As PayPalAPIInterfaceService Dim bReturn As Boolean = True bReturn = SetupUpSecurityHeader(oPayPalSvc) ' set up security header Debug.Assert(bReturn) ' request Dim request As TransactionSearchReq = New TransactionSearchReq Dim TF As TransactionSearchRequestType = New TransactionSearchRequestType request.TransactionSearchRequest = TF request.TransactionSearchRequest.StartDate = dtStartDate request.TransactionSearchRequest.EndDate = dtEndDate request.TransactionSearchRequest.Version = "1.0" ' Response Dim response As TransactionSearchResponseType = New TransactionSearchResponseType Try response = oPayPalSvc.TransactionSearch(request) Catch ex As Exception Debug.Assert(False) sErrorMessage = ex.Message bReturn = False End Try If bReturn Then ReDim Payments(response.PaymentTransactions.GetLength(0) - 1) Dim sAuctionBuyerID As String Dim sAuctionNumbers As String Dim dGrossAmount As Double Dim sMemo As String Dim iMultiItem As Integer Dim sPayerAddress As String Dim dtPaymentDate As Date Dim sPaymentName As String Dim sPaymentType As String Dim sTransactionID As String Dim sTransactionType As String Dim i As Integer = 0 For Each t As PaymentTransactionSearchResultType In response.PaymentTransactions bReturn = GetTransactionDetails(t.TransactionID, Payments(i), sErrorMessage) i += 1 Next End If Return bReturn End Function Public Function GetTransactionDetails(ByVal sTransactionID As String, _ ByRef p As PaymentClass, _ ByRef sErrorMessage As String) As Boolean Dim oPayPalSvc As PayPalAPIInterfaceService Dim bReturn As Boolean = True Dim sAddress As String = "" bReturn = SetupUpSecurityHeader(oPayPalSvc) Debug.Assert(bReturn) p = New PaymentClass ' Declare and create a Tell Fortune Request Declare a create Tell Fortune Onject Dim request As GetTransactionDetailsReq request = New GetTransactionDetailsReq Dim TF As GetTransactionDetailsRequestType TF = New GetTransactionDetailsRequestType request.GetTransactionDetailsRequest = TF request.GetTransactionDetailsRequest.TransactionID = sTransactionID request.GetTransactionDetailsRequest.Version = "1.0" 'Create a Response Object Dim response As GetTransactionDetailsResponseType response = New GetTransactionDetailsResponseType 'Pass the request Try response = oPayPalSvc.GetTransactionDetails(request) Catch ex As Exception Debug.Assert(False) sErrorMessage = ex.Message bReturn = False End Try If bReturn Then If response.Errors Is Nothing Then With response.PaymentTransactionDetails If IsNumeric(.PaymentItemInfo.Auction.multiItem) Then p.MultiItem = CType(.PaymentItemInfo.Auction.multiItem, Integer) Else p.MultiItem = 0 End If sAddress = .PayerInfo.Address.Name & vbCrLf If .PayerInfo.Address.Street1 <> "" Then sAddress &= .PayerInfo.Address.Street1 & vbCrLf End If If .PayerInfo.Address.Street2 <> "" Then sAddress &= .PayerInfo.Address.Street2 & vbCrLf End If sAddress &= .PayerInfo.Address.CityName & ", " & .PayerInfo.Address.StateOrProvince & " " & .PayerInfo.Address.PostalCode & vbCrLf If (.PayerInfo.Address.CountryName.ToLower & "") <> "united states" Then sAddress &= .PayerInfo.Address.CountryName End If p.AuctionNumbers = .PaymentItemInfo.PaymentItem(0).Number ' auction p.AuctionBuyerID = .PaymentItemInfo.Auction.BuyerID p.PaymentName = .PaymentItemInfo.PaymentItem(0).Name ' always (0)?? p.GrossAmount = CType(.PaymentInfo.GrossAmount.Value, Double) p.Memo = .PaymentItemInfo.Memo p.PayerAddress = sAddress p.PaymentDate = .PaymentInfo.PaymentDate p.PaymentType = .PaymentInfo.PaymentType.ToString p.TransactionID = .PaymentInfo.TransactionID p.TransactionType = .PaymentInfo.TransactionType.ToString End With Else Debug.Assert(False) sErrorMessage = response.Errors(0).LongMessage End If End If Return bReturn End Function Public Sub New(ByVal sCertFilePathName As String, _ ByVal sUserID As String, _ ByVal sUserPassword As String, _ ByVal sPayPalURL As String) msUserid = sUserID msUserPassword = sUserPassword msCertFilePathName = sCertFilePathName msURL = sPayPalURL End Sub Private Function SetupUpSecurityHeader(ByRef PayPalSvc As PayPalAPIInterfaceService) As Boolean Dim bReturn As Boolean = True Try System.Net.ServicePointManager.CertificatePolicy = New MyCertification PayPalSvc = New PayPalAPIInterfaceService PayPalSvc.Url = msURL 'Setting up the Certificate Dim certificate As X509Certificate = X509Certificate.CreateFromCertFile(msCertFilePathName) PayPalSvc.ClientCertificates.Add(certificate) ' Add certificate to the Service ' Add user name and password Dim UsrPass As UserIdPasswordType = New UserIdPasswordType UsrPass.Username = msUserid UsrPass.Password = msUserPassword Dim securityHeader As CustomSecurityHeaderType = New CustomSecurityHeaderType securityHeader.Credentials = UsrPass securityHeader.MustUnderstand = True PayPalSvc.RequesterCredentials = securityHeader Catch ex As Exception Debug.Assert(False) bReturn = False End Try Return bReturn End Function End Class Public Class MyCertification Implements System.Net.ICertificatePolicy Public Sub MyCertification() End Sub Public Function CheckValidationResult(ByVal srvPoint As System.Net.ServicePoint, ByVal certificate As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal request As System.Net.WebRequest, ByVal certificateProblem As Integer) As Boolean Implements System.Net.ICertificatePolicy.CheckValidationResult Return True End Function End Class Public Class PaymentClass Public TransactionID As String Public TransactionType As String Public PaymentDate As Date Public PaymentType As String Public PayerAddress As String Public GrossAmount As Double Public AuctionBuyerID As String Public MultiItem As Integer Public Memo As String Public PaymentName As String Public AuctionNumbers As String End Class