From 4a823c35fe191a367ae7f219da9b52dd48a70dd0 Mon Sep 17 00:00:00 2001 From: Todd Sieber Date: Tue, 12 Apr 2022 12:11:56 -0700 Subject: [PATCH] Updates for v5.02 * Fixed issue where `RecurringResponse` object was not returning all available values in the response. * Added `SCAExemption`, `CitDate` and `VMaid` under the `Invoice` object to support Strong Customer Authentication. --- .gitignore | 70 ++- dotNET/CHANGELOG.md | 6 + dotNET/PFProSDK/PFProSDK.csproj | 2 +- dotNET/PFProSDK/Properties/AssemblyInfo.cs | 6 +- dotNET/PFProSDK/ndoc.xml | 249 +++++++- .../Common/Utility/PayflowConstants.cs | 39 +- .../PayPal/Payments/DataObjects/ACHTender.cs | 3 +- .../PayPal/Payments/DataObjects/Invoice.cs | 65 ++- .../Payments/DataObjects/NamespaceDoc.cs | 17 +- .../Payments/DataObjects/PaymentCard.cs | 51 +- .../Payments/DataObjects/RecurringResponse.cs | 213 +++++-- .../DataObjects/TransactionResponse.cs | 50 +- dotNET/Payflow SDK Docs/.editorconfig | 5 + dotNET/Payflow SDK Docs/Content/GPL.aml | 110 ++++ .../Content/VersionHistory/.editorconfig | 5 + .../Content/VersionHistory/VersionHistory.aml | 35 ++ .../Content/VersionHistory/v5.0.0.aml | 66 +++ .../Content/VersionHistory/v5.0.2.aml | 29 + dotNET/Payflow SDK Docs/Content/Welcome.aml | 27 + dotNET/Payflow SDK Docs/ContentLayout.content | 28 + .../Payflow SDK Docs/PayflowSDKDocs.shfbproj | 103 ++++ dotNET/Payflow SDK Docs/README.md | 5 + dotNET/Payflow SDK Docs/icons/Help.png | Bin 0 -> 4942 bytes dotNET/Payflow dotNET SDK.sln | 6 +- dotNET/README.md | 9 +- dotNET/SamplesCS/App.config | 2 +- dotNET/SamplesCS/SamplesCS.csproj | 4 +- .../BasicTransactions/DOSaleComplete.cs | 4 +- .../Recurring/DORecurringInquiry.cs | 17 +- dotNET/SamplesVB/SamplesVB.vbproj | 2 +- .../BasicTransactions/DOSaleComplete.vb | 4 +- java/.idea/Payflow Java SDK.iml | 2 +- java/.idea/workspace.xml | 46 +- java/CHANGELOG.md | 6 + .../basictransactions/DOSaleComplete.java | 57 +- .../recurring/DORecurringInquiry.java | 15 +- .../base/paypal/payflow/PayflowConstants.java | 50 +- .../dataobjects/paypal/payflow/Invoice.java | 536 ++++++++++-------- .../paypal/payflow/PaymentCard.java | 60 +- .../paypal/payflow/RecurringResponse.java | 198 +++++-- .../paypal/payflow/TransactionResponse.java | 26 +- 41 files changed, 1756 insertions(+), 472 deletions(-) create mode 100644 dotNET/Payflow SDK Docs/.editorconfig create mode 100644 dotNET/Payflow SDK Docs/Content/GPL.aml create mode 100644 dotNET/Payflow SDK Docs/Content/VersionHistory/.editorconfig create mode 100644 dotNET/Payflow SDK Docs/Content/VersionHistory/VersionHistory.aml create mode 100644 dotNET/Payflow SDK Docs/Content/VersionHistory/v5.0.0.aml create mode 100644 dotNET/Payflow SDK Docs/Content/VersionHistory/v5.0.2.aml create mode 100644 dotNET/Payflow SDK Docs/Content/Welcome.aml create mode 100644 dotNET/Payflow SDK Docs/ContentLayout.content create mode 100644 dotNET/Payflow SDK Docs/PayflowSDKDocs.shfbproj create mode 100644 dotNET/Payflow SDK Docs/README.md create mode 100644 dotNET/Payflow SDK Docs/icons/Help.png diff --git a/.gitignore b/.gitignore index f458d74..acdccee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,9 @@ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore -## .NET Help Files +## .NET Help Files dotNET/Payflow SDK Docs/Help/ # User-specific files @@ -12,7 +12,6 @@ dotNET/Payflow SDK Docs/Help/ *.user *.userosscache *.sln.docstates -workspace.xml # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs @@ -27,6 +26,7 @@ mono_crash.* [Rr]eleases/ x64/ x86/ +[Ww][Ii][Nn]32/ [Aa][Rr][Mm]/ [Aa][Rr][Mm]64/ bld/ @@ -65,6 +65,9 @@ project.lock.json project.fragment.lock.json artifacts/ +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + # StyleCop StyleCopReport.xml @@ -90,6 +93,7 @@ StyleCopReport.xml *.tmp_proj *_wpftmp.csproj *.log +*.tlog *.vspscc *.vssscc .builds @@ -141,6 +145,11 @@ _TeamCity* .axoCover/* !.axoCover/settings.json +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + # Visual Studio code coverage results *.coverage *.coveragexml @@ -288,6 +297,17 @@ node_modules/ # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts @@ -344,6 +364,9 @@ ASALocalRun/ # Local History for Visual Studio .localhistory/ +# Visual Studio History (VSHistory) files +.vshistory/ + # BeatPulse healthcheck temp database healthchecksdb @@ -352,5 +375,42 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ -/dotNET/SamplesCS/src/PayPal/Payments/Samples/CS/DataObjects/BasicTransactions/DOTest.cs -/dotNET/SamplesVB/src/PayPal/Payments/Samples/VB/DataObjects/BasicTransactions/DOTest.vb + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +© 2022 GitHub, Inc. +Terms +Privacy +Security +Status +Docs +Contact GitHub +Pricing +API +Training +Blog +About + +# Ignore built Help directory and files +dotNET/Payflow SDK Docs/Help/* diff --git a/dotNET/CHANGELOG.md b/dotNET/CHANGELOG.md index a9d378e..3e92b1d 100644 --- a/dotNET/CHANGELOG.md +++ b/dotNET/CHANGELOG.md @@ -1,3 +1,9 @@ +## 5.0.2 (2022-03-30) + +#### Changes +* Fixed issue where `RecurringResponse` object was not returning all available values in the response. +* Added `SCAExemption`, `CitDate` and `VMaid` under the `Invoice` object to support Strong Customer Authentication. + ## 5.0.0 (2020-09-13) ### IMPORTANT:

THIS VERSION IS NOT 100% COMPATIBLE WITH OLDER VERSIONS AS SOME OF THE OBJECTS AND THEIR LOCATIONS HAVE MOVED. diff --git a/dotNET/PFProSDK/PFProSDK.csproj b/dotNET/PFProSDK/PFProSDK.csproj index 5e03b9b..65f2c51 100644 --- a/dotNET/PFProSDK/PFProSDK.csproj +++ b/dotNET/PFProSDK/PFProSDK.csproj @@ -21,7 +21,7 @@ - v4.6.1 + v4.8 0.0 diff --git a/dotNET/PFProSDK/Properties/AssemblyInfo.cs b/dotNET/PFProSDK/Properties/AssemblyInfo.cs index 0b64a74..9ef4f28 100644 --- a/dotNET/PFProSDK/Properties/AssemblyInfo.cs +++ b/dotNET/PFProSDK/Properties/AssemblyInfo.cs @@ -10,7 +10,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("PayPal Inc.")] [assembly: AssemblyProduct("Payflow_dotNET.dll")] -[assembly: AssemblyCopyright("Copyright 2020 PayPal Inc.")] +[assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("Payflow")] [assembly: AssemblyCulture("")] @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("5.0.0.0")] -[assembly: AssemblyFileVersion("5.0.0.0")] +[assembly: AssemblyVersion("5.0.2.0")] +[assembly: AssemblyFileVersion("5.0.2.0")] diff --git a/dotNET/PFProSDK/ndoc.xml b/dotNET/PFProSDK/ndoc.xml index 3dfd9c8..db54342 100644 --- a/dotNET/PFProSDK/ndoc.xml +++ b/dotNET/PFProSDK/ndoc.xml @@ -3278,6 +3278,51 @@ Payflow Param MISCDATA + + + Payflow Param CREATIONDATE + + + + + Payflow Param LASTCHANGED + + + + + Payflow Param RPSTATE + + + + + Payflow Param NEXTPAYMENTNUM + + + + + Payflow Param SCAEXEMPTION + + + + + Payflow Param CITDATE + + + + + Payflow Param VMAID + + + + + Payflow Param VMAID + + + + + Payflow Param VMAID + + Magtek Param ENCMP @@ -10237,6 +10282,26 @@ Miscellaneous Data + + + Secure Token, used for Inquiry transaction + + + + + SCA Exemption + + + + + CitiDate + + + + a + MVaid + + Constructor. @@ -11008,7 +11073,16 @@ ECHODATA - + + + Gets, Sets VAT Invoice Number. + + + Value added tax invoice number. + Maps to Payflow Parameter: + VATINVNUM + + Gets, Sets VAT Tax Rate. @@ -11071,6 +11145,34 @@ MISCDATA + + + Gets, Sets SecureToken. + + + Merchant-defined identifier used in the Secure Token flow. + + You can use SECURETOKEN when performing Inquiry transactions. To ensure that you can always access + the correct transaction when performing an Inquiry, you must use CREATESECURETOKEN when + submitting any transaction. + Maps to Payflow Parameter: + SECURETOKEN + + + + + Gets, Sets SCAExemption. + + + Value to flag exemption status. + + Only one of the following values can be sent: TM, SCP, TRA, LVP, MIT, RP, SD, TM + Maps to Payflow Parameter: + SCAEXEMPTION + + + + Used for advice detail items. @@ -11958,7 +12060,16 @@ L_CARRIERSERVICELEVELCODE - + + + Gets, Sets line item extended amount + + Item ExtAmt + Maps to Payflow Parameter: + L_EXTAMT + + + ------------------------------------------------------ @@ -12756,6 +12867,7 @@ CCTRANS_POSDATATransactionResponseCCTrans_POSDataString CHKNUMACHTender, CheckTender, CardTenderChkNumString CHKTYPEACHTender, CheckTender, CardTenderChkTypeString + CITDATEInvoiceCitDateString COMMCARDPurchaseCardString COMMCODEInvoiceCommCodeString COMMENT1InvoiceComment1String @@ -12880,8 +12992,10 @@ P_TRANSTATEnRecurringResponseInquiryParamsString P_TRANSTIMEnRecurringResponseInquiryParamsString PAGESTYLEECSetRequestPageStyleString + PARCreditCardString PAREQBuyerAuthResponsePaReqString PARESBuyerAuthVATransactionString + PARIDTransactionResponseParIdString PARTIALAUTHAuthorizationTransactionString PARTNERUserInfoString PAYERIDECDoRequest ,ECGetResponsePayerIdString @@ -12931,6 +13045,7 @@ RETURNURLECSetRequestReturnURLString RPREFRecurringResponseRPRefString RRNTransactionResponseRrnString + SCAEXEMPTIONInvoiceSCAExemptionString SECURETOKENTransactionResponseSecureTokenString SECURETOKENIDTransactionResponseSecureTokenIdString SETTLEAMTECDoResponseSettleAmtString @@ -13000,7 +13115,14 @@ VIT_PROXYInternal to the SDK.String VIT_SDKRUNTIMEVERSIONInternal to the SDK.String XIDBuyerAuthResponseXIDString + VMAIDInvoiceVMaidString PAYFLOW-REQUEST-ID (Header)Value is set from all the transactions:SaleTransaction, CaptureTransaction, VoidTransaction etc.RequestIdString + NEXTPAYMENTNUMRecurringResponseNEXTPAYMENTNUMString + RPSTATERecurringResponseRPSTATEString + NEXTPAYMENTRecurringResponseNextPaymentString + CREATIONDATERecurringResponseCREATIONDATEString + LASTCHANGEDRecurringResponseLASTCHANGEString + FREQUENCYRecurringResponseFREQUENCYString @@ -13803,6 +13925,11 @@ Card on File Transaction ID + + + Payment Account Reference + + Constructor @@ -13862,6 +13989,16 @@ TXID + + + Gets, Sets PAR + + + Reference number assigned to each unique Primary Account Number (PAN). + Maps to Payflow Parameter: + PAR + + Generates the transaction request. @@ -14825,6 +14962,36 @@ Inquiry Response Array list. + + + Creation Date + + + + + Last Changed Date + + + + + Recurring Profile State + + + + + Next Payment Number + + + + + Frequency + + + + + Currency + + Gets ProfileId @@ -15250,6 +15417,66 @@ SHIPTOCOUNTRY + + + Gets Creation Date + + + Creation Date + Maps to Payflow Parameter: + CREATIONDATE + + + + + Gets Last Changed Date + + + Last Changed Date + Maps to Payflow Parameter: + LASTCHANGED + + + + + Gets Recurring Profile State + + + Recurring Profile State + Maps to Payflow Parameter: + RPSTATE + + + + + Gets Next Payment Number + + + Next Payment Number + Maps to Payflow Parameter: + NEXTPAYMENTNUM + + + + + Gets Frequency + + + Frequency + Maps to Payflow Parameter: + FREQUENCY + + + + + Gets Currency + + + Frequency + Maps to Payflow Parameter: + CURRENCY + + Gets recurring inquiry @@ -16530,6 +16757,11 @@ CCTrans_POSData + + + ParId + + Gets Result @@ -17294,6 +17526,17 @@ CCTRAN_POSDATA + + + Gets the Payment Account Reference + + Value returned by some processors that is a non-financial reference number assigned to each unique + Primary Account Number (PAN) and mapped to all its affiliated Payment Tokens. + + Maps to Payflow Parameter: + PARID + + Constructor for Transaction response. @@ -25886,7 +26129,7 @@ - Gets, Sets OrgiPpref + Gets, Sets OrigPpref Maps to Payflow Parameter: diff --git a/dotNET/PFProSDK/src/PayPal/Payments/Common/Utility/PayflowConstants.cs b/dotNET/PFProSDK/src/PayPal/Payments/Common/Utility/PayflowConstants.cs index 8d18260..295ffaf 100644 --- a/dotNET/PFProSDK/src/PayPal/Payments/Common/Utility/PayflowConstants.cs +++ b/dotNET/PFProSDK/src/PayPal/Payments/Common/Utility/PayflowConstants.cs @@ -53,7 +53,7 @@ private PayflowConstants() /// /// SDK Client Version (400 --> V4 protocol) /// - internal const String CLIENT_VERSION = "500"; + internal const String CLIENT_VERSION = "502"; /// /// SDK User Agent (Payflow SDK for .NET) /// @@ -2205,6 +2205,43 @@ private static Hashtable PopulateErrorMessages() /// internal const String PARAM_MISCDATA = "MISCDATA"; + // added DTPAYFLOW-1691 - March 2022 - v5.02 + /// + /// Payflow Param CREATIONDATE + /// + internal const String PARAM_CREATIONDATE = "CREATIONDATE"; + /// + /// Payflow Param LASTCHANGED + /// + internal const String PARAM_LASTCHANGED = "LASTCHANGED"; + /// + /// Payflow Param RPSTATE + /// + internal const String PARAM_RPSTATE = "RPSTATE"; + /// + /// Payflow Param NEXTPAYMENTNUM + /// + internal const String PARAM_NEXTPAYMENTNUM = "NEXTPAYMENTNUM"; + /// + /// Payflow Param SCAEXEMPTION + /// + internal const String PARAM_SCAEXEMPTION = "SCAEXEMPTION"; + /// + /// Payflow Param CITDATE + /// + internal const String PARAM_CITDATE = "CITDATE"; + /// + /// Payflow Param VMAID + /// + internal const String PARAM_VMAID = "VMAID"; + /// + /// Payflow Param VMAID + /// + internal const String PARAM_PAR = "PAR"; + /// + /// Payflow Param VMAID + /// + internal const String PARAM_PARID = "PARID"; diff --git a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/ACHTender.cs b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/ACHTender.cs index b996ef5..a005c61 100644 --- a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/ACHTender.cs +++ b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/ACHTender.cs @@ -150,7 +150,8 @@ public String TermState set { mTermState = value; } } - #endregion + + #endregion #region "Core functions" diff --git a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/Invoice.cs b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/Invoice.cs index 2239bc5..3909a2e 100644 --- a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/Invoice.cs +++ b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/Invoice.cs @@ -329,10 +329,22 @@ public class Invoice : BaseRequestDataObject /// Miscellaneous Data /// private String mMiscData; - ///a + /// ///Secure Token, used for Inquiry transaction /// private String mSecureToken; + /// + ///SCA Exemption + /// + private String mSCAExemption; + /// + ///CitiDate + /// + private String mCitDate; + ///a + /// MVaid + /// + private String mVMaid; #endregion @@ -1395,6 +1407,52 @@ public String SecureToken get { return mSecureToken; } set { mSecureToken = value; } } + + /// + /// Gets, Sets SCAExemption. + /// + /// + /// Value to flag exemption status. + /// + /// Only one of the following values can be sent: TM, SCP, TRA, LVP, MIT, RP, SD, TM + /// Maps to Payflow Parameter: + /// SCAEXEMPTION + /// + public String SCAExemption + { + get { return mSCAExemption; } + set { mSCAExemption = value; } + } + + /// Gets, Sets CitDate. + /// + /// + /// Original transaction date of the CIT transaction. + /// + /// MasterCard only. Merchant initiated(MIT) and recurring(RP) transactions must contain the original settlement date which is received from the initial Cardholder Initiated(CITI) transaction response. + /// Maps to Payflow Parameter: + /// CITDATE + /// + public String CitDate + { + get { return mCitDate; } + set { mCitDate = value; } + } + + /// Gets, Sets VMaid. + /// + /// + /// Visa Merchant Authentication ID + /// + /// Visa only. Visa Merchant Authentication ID assigned by Visa EU. + /// Maps to Payflow Parameter: + /// VMaid + /// + public String VMaid + { + get { return mVMaid; } + set { mVMaid = value; } + } #endregion #region "AdviceDetailItem related Methods" @@ -1689,7 +1747,10 @@ internal override void GenerateRequest() RequestBuffer.Append(PayflowUtility.AppendToRequest(PayflowConstants.PARAM_VATTAXRATE, mVatTaxRate)); RequestBuffer.Append(PayflowUtility.AppendToRequest(PayflowConstants.PARAM_REPORTGROUP, mReportGroup)); RequestBuffer.Append(PayflowUtility.AppendToRequest(PayflowConstants.PARAM_MISCDATA, mMiscData)); - RequestBuffer.Append(PayflowUtility.AppendToRequest(PayflowConstants.PARAM_SECURETOKEN, mSecureToken)); + RequestBuffer.Append(PayflowUtility.AppendToRequest(PayflowConstants.PARAM_SECURETOKEN, mSecureToken)); + RequestBuffer.Append(PayflowUtility.AppendToRequest(PayflowConstants.PARAM_SCAEXEMPTION, mSCAExemption)); + RequestBuffer.Append(PayflowUtility.AppendToRequest(PayflowConstants.PARAM_CITDATE, mCitDate)); + RequestBuffer.Append(PayflowUtility.AppendToRequest(PayflowConstants.PARAM_VMAID, mVMaid)); diff --git a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/NamespaceDoc.cs b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/NamespaceDoc.cs index 241f9a8..0568671 100644 --- a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/NamespaceDoc.cs +++ b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/NamespaceDoc.cs @@ -24,7 +24,7 @@ namespace PayPal.Payments.DataObjects /// AUTHCODEVoiceAuthTransaction, TransactionResponseAuthCodeString /// AUTHENTICATION_IDBuyerAuthResponseAuthentication_IdString /// AUTHENTICATION_STATUSBuyerAuthResponseAuthentication_StatusString - /// AUTHTYPEACHTenderAuthTypeString + /// AUTHTYPEACHTenderAuthTypeString /// AVSADDRTransactionResponseAVSAddrString /// AVSZIPTransactionResponseAVSZipString /// BA_CUSTOMECSetRequestBA_CustomString @@ -60,10 +60,11 @@ namespace PayPal.Payments.DataObjects /// CARDTYPETransactionResponseCardTypeString /// CATTYPEDevicesCatTypeString /// CAVVBuyerAuthResponseCAVVString - /// CCTRANSIDTransactionResponseCCTransIdString + /// CCTRANSIDTransactionResponseCCTransIdString /// CCTRANS_POSDATATransactionResponseCCTrans_POSDataString /// CHKNUMACHTender, CheckTender, CardTenderChkNumString /// CHKTYPEACHTender, CheckTender, CardTenderChkTypeString + /// CITDATEInvoiceCitDateString /// COMMCARDPurchaseCardString /// COMMCODEInvoiceCommCodeString /// COMMENT1InvoiceComment1String @@ -188,8 +189,10 @@ namespace PayPal.Payments.DataObjects /// P_TRANSTATEnRecurringResponseInquiryParamsString /// P_TRANSTIMEnRecurringResponseInquiryParamsString /// PAGESTYLEECSetRequestPageStyleString + /// PARCreditCardString /// PAREQBuyerAuthResponsePaReqString /// PARESBuyerAuthVATransactionString + /// PARIDTransactionResponseParIdString /// PARTIALAUTHAuthorizationTransactionString /// PARTNERUserInfoString /// PAYERIDECDoRequest ,ECGetResponsePayerIdString @@ -239,6 +242,7 @@ namespace PayPal.Payments.DataObjects /// RETURNURLECSetRequestReturnURLString /// RPREFRecurringResponseRPRefString /// RRNTransactionResponseRrnString + /// SCAEXEMPTIONInvoiceSCAExemptionString /// SECURETOKENTransactionResponseSecureTokenString /// SECURETOKENIDTransactionResponseSecureTokenIdString /// SETTLEAMTECDoResponseSettleAmtString @@ -280,7 +284,7 @@ namespace PayPal.Payments.DataObjects /// TRXRESPMSGRecurringResponseTrxRespMsgString /// TRXRESULTRecurringResponseTrxResultString /// TRXTYPEValue is set based on the Transaction object used:SaleTransaction, CreditTransaction, VoidTransaction, CaptureTransaction etc.TrxTypeString - /// TXIDBuyerAuthResponseTxIdString + /// TXIDBuyerAuthResponseTxIdString /// USERUserInfoString /// USER1UserItemUserItem1String /// USER2UserItemUserItem2String @@ -308,7 +312,14 @@ namespace PayPal.Payments.DataObjects /// VIT_PROXYInternal to the SDK.String /// VIT_SDKRUNTIMEVERSIONInternal to the SDK.String /// XIDBuyerAuthResponseXIDString + /// VMAIDInvoiceVMaidString /// PAYFLOW-REQUEST-ID (Header)Value is set from all the transactions:SaleTransaction, CaptureTransaction, VoidTransaction etc.RequestIdString + /// NEXTPAYMENTNUMRecurringResponseNEXTPAYMENTNUMString + /// RPSTATERecurringResponseRPSTATEString + /// NEXTPAYMENTRecurringResponseNextPaymentString + /// CREATIONDATERecurringResponseCREATIONDATEString + /// LASTCHANGEDRecurringResponseLASTCHANGEString + /// FREQUENCYRecurringResponseFREQUENCYString /// /// diff --git a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/PaymentCard.cs b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/PaymentCard.cs index bbe3cd2..f5a18b4 100644 --- a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/PaymentCard.cs +++ b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/PaymentCard.cs @@ -47,18 +47,25 @@ public class PaymentCard : PaymentDevice /// private String mTxId; + /// + /// Payment Account Reference + /// + private String mParId; - #endregion - #region "Constructors" - /// - /// Constructor - /// - /// Card number - /// Card expiry date - /// Abstract class. Instance cannot be created directly. - public PaymentCard(String Acct, String ExpDate) : base(Acct) + + #endregion + + #region "Constructors" + + /// + /// Constructor + /// + /// Card number + /// Card expiry date + /// Abstract class. Instance cannot be created directly. + public PaymentCard(String Acct, String ExpDate) : base(Acct) { mExpDate = ExpDate; } @@ -136,14 +143,28 @@ public String TxId set { mTxId = value; } } - #endregion + /// + /// Gets, Sets PAR + /// + /// + /// Reference number assigned to each unique Primary Account Number (PAN). + /// Maps to Payflow Parameter: + /// PAR + /// + public String ParId + { + get { return mParId; } + set { mParId = value; } + } - #region "Core functions" + #endregion - /// - /// Generates the transaction request. - /// - internal override void GenerateRequest() + #region "Core functions" + + /// + /// Generates the transaction request. + /// + internal override void GenerateRequest() { try { diff --git a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/RecurringResponse.cs b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/RecurringResponse.cs index cc11bcd..6b2ce34 100644 --- a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/RecurringResponse.cs +++ b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/RecurringResponse.cs @@ -294,6 +294,38 @@ public sealed class RecurringResponse : BaseResponseDataObject /// private Hashtable mInquiryParams; + /// + /// Creation Date + /// + private String mCreationDate; + + /// + /// Last Changed Date + /// + private String mLastChangedDate; + + /// + /// Recurring Profile State + /// + private String mRPState; + + /// + /// Next Payment Number + /// + private String mNextPaymentNumber; + + /// + /// Frequency + /// + private String mFrequency; + + /// + /// Currency + /// + private String mCurrency; + + + #endregion #region "Properties" @@ -850,6 +882,84 @@ public String ShipToCountry get { return mShipToCountry; } } + /// + /// Gets Creation Date + /// + /// + /// Creation Date + /// Maps to Payflow Parameter: + /// CREATIONDATE + /// + public String CreationDate + { + get { return mCreationDate; } + } + + /// + /// Gets Last Changed Date + /// + /// + /// Last Changed Date + /// Maps to Payflow Parameter: + /// LASTCHANGED + /// + public String LastChangedDate + { + get { return mLastChangedDate; } + } + + /// + /// Gets Recurring Profile State + /// + /// + /// Recurring Profile State + /// Maps to Payflow Parameter: + /// RPSTATE + /// + public String RPState + { + get { return mRPState; } + } + + /// + /// Gets Next Payment Number + /// + /// + /// Next Payment Number + /// Maps to Payflow Parameter: + /// NEXTPAYMENTNUM + /// + public String NextPaymentNumber + { + get { return mNextPaymentNumber; } + } + + /// + /// Gets Frequency + /// + /// + /// Frequency + /// Maps to Payflow Parameter: + /// FREQUENCY + /// + public String Frequency + { + get { return mFrequency; } + } + + /// + /// Gets Currency + /// + /// + /// Frequency + /// Maps to Payflow Parameter: + /// CURRENCY + /// + public String Currency + { + get { return mCurrency; } + } + /// /// Gets recurring inquiry @@ -922,54 +1032,62 @@ internal void SetParams(ref Hashtable ResponseHashTable) { try { - mProfileId = (String) ResponseHashTable[PayflowConstants.PARAM_PROFILEID]; - mRPRef = (String) ResponseHashTable[PayflowConstants.PARAM_RPREF]; - mTrxPNRef = (String) ResponseHashTable[PayflowConstants.PARAM_TRXPNREF]; - mTrxResult = (String) ResponseHashTable[PayflowConstants.PARAM_TRXRESULT]; - mTrxRespMsg = (String) ResponseHashTable[PayflowConstants.PARAM_TRXRESPMSG]; + mProfileId = (String)ResponseHashTable[PayflowConstants.PARAM_PROFILEID]; + mRPRef = (String)ResponseHashTable[PayflowConstants.PARAM_RPREF]; + mTrxPNRef = (String)ResponseHashTable[PayflowConstants.PARAM_TRXPNREF]; + mTrxResult = (String)ResponseHashTable[PayflowConstants.PARAM_TRXRESULT]; + mTrxRespMsg = (String)ResponseHashTable[PayflowConstants.PARAM_TRXRESPMSG]; //Additional fields for Inquiry transaction - mProfileName = (String) ResponseHashTable[PayflowConstants.PARAM_PROFILENAME]; - mStart = (String) ResponseHashTable[PayflowConstants.PARAM_START]; - mTerm = (String) ResponseHashTable[PayflowConstants.PARAM_TERM]; - mPayPeriod = (String) ResponseHashTable[PayflowConstants.PARAM_PAYPERIOD]; - mStatus = (String) ResponseHashTable[PayflowConstants.PARAM_STATUS]; - mTenderType = (String) ResponseHashTable[PayflowConstants.PARAM_TENDER]; - mPaymentsLeft = (String) ResponseHashTable[PayflowConstants.PARAM_PAYMENTSLEFT]; - mNxtPayment = (String) ResponseHashTable[PayflowConstants.PARAM_NEXTPAYMENT]; - mEnd = (String) ResponseHashTable[PayflowConstants.PARAM_END]; - mAggregateAmt = (String) ResponseHashTable[PayflowConstants.PARAM_AGGREGATEAMT]; - mAggregateOptionalAmt = (String) ResponseHashTable[PayflowConstants.PARAM_AGGREGATEOPTIONALAMT]; - mAmt = (String) ResponseHashTable[PayflowConstants.PARAM_AMT]; - mAcct = (String) ResponseHashTable[PayflowConstants.PARAM_ACCT]; - mExpDate = (String) ResponseHashTable[PayflowConstants.PARAM_EXPDATE]; - mMaxFailPayments = (String) ResponseHashTable[PayflowConstants.PARAM_MAXFAILPAYMENTS]; - mNumFailPayments = (String) ResponseHashTable[PayflowConstants.PARAM_NUMFAILPAYMENTS]; - mRetryNumDays = (String) ResponseHashTable[PayflowConstants.PARAM_RETRYNUMDAYS]; - mEmail = (String) ResponseHashTable[PayflowConstants.PARAM_EMAIL]; - mCompanyName = (String) ResponseHashTable[PayflowConstants.PARAM_COMPANYNAME]; - mName = (String) ResponseHashTable[PayflowConstants.PARAM_NAME]; - mFirstName = (String) ResponseHashTable[PayflowConstants.PARAM_FIRSTNAME]; - mMiddleName = (String) ResponseHashTable[PayflowConstants.PARAM_MIDDLENAME]; - mLastName = (String) ResponseHashTable[PayflowConstants.PARAM_LASTNAME]; - mStreet = (String) ResponseHashTable[PayflowConstants.PARAM_STREET]; - mCity = (String) ResponseHashTable[PayflowConstants.PARAM_CITY]; - mState = (String) ResponseHashTable[PayflowConstants.PARAM_STATE]; - mZip = (String) ResponseHashTable[PayflowConstants.PARAM_ZIP]; - mCountry = (String) ResponseHashTable[PayflowConstants.PARAM_COUNTRY]; - mPhoneNum = (String) ResponseHashTable[PayflowConstants.PARAM_PHONENUM]; - mShipToFName = (String) ResponseHashTable[PayflowConstants.PARAM_SHIPTOFIRSTNAME]; - mShipToMName = (String) ResponseHashTable[PayflowConstants.PARAM_SHIPTOMIDDLENAME]; - mShipToLName = (String) ResponseHashTable[PayflowConstants.PARAM_SHIPTOLASTNAME]; - mShipToStreet = (String) ResponseHashTable[PayflowConstants.PARAM_SHIPTOSTREET]; - mShipToCity = (String) ResponseHashTable[PayflowConstants.PARAM_SHIPTOCITY]; - mShipToState = (String) ResponseHashTable[PayflowConstants.PARAM_SHIPTOSTATE]; - mShipToZip = (String) ResponseHashTable[PayflowConstants.PARAM_SHIPTOZIP]; - mShipToCountry = (String) ResponseHashTable[PayflowConstants.PARAM_SHIPTOCOUNTRY]; + mProfileName = (String)ResponseHashTable[PayflowConstants.PARAM_PROFILENAME]; + mStatus = (String)ResponseHashTable[PayflowConstants.PARAM_STATUS]; + mStart = (String)ResponseHashTable[PayflowConstants.PARAM_START]; + mTerm = (String)ResponseHashTable[PayflowConstants.PARAM_TERM]; + mPayPeriod = (String)ResponseHashTable[PayflowConstants.PARAM_PAYPERIOD]; + mStatus = (String)ResponseHashTable[PayflowConstants.PARAM_STATUS]; + mTenderType = (String)ResponseHashTable[PayflowConstants.PARAM_TENDER]; + mPaymentsLeft = (String)ResponseHashTable[PayflowConstants.PARAM_PAYMENTSLEFT]; + mNxtPayment = (String)ResponseHashTable[PayflowConstants.PARAM_NEXTPAYMENT]; + mCreationDate = (String)ResponseHashTable[PayflowConstants.PARAM_CREATIONDATE]; + mLastChangedDate = (String)ResponseHashTable[PayflowConstants.PARAM_LASTCHANGED]; + mRPState = (String)ResponseHashTable[PayflowConstants.PARAM_RPSTATE]; + mNextPaymentNumber = (String)ResponseHashTable[PayflowConstants.PARAM_NEXTPAYMENTNUM]; + mFrequency = (String)ResponseHashTable[PayflowConstants.PARAM_FREQUENCY]; + mEnd = (String)ResponseHashTable[PayflowConstants.PARAM_END]; + mAggregateAmt = (String)ResponseHashTable[PayflowConstants.PARAM_AGGREGATEAMT]; + mAggregateOptionalAmt = (String)ResponseHashTable[PayflowConstants.PARAM_AGGREGATEOPTIONALAMT]; + mAmt = (String)ResponseHashTable[PayflowConstants.PARAM_AMT]; + mCurrency = (String)ResponseHashTable[PayflowConstants.PARAM_CURRENCY]; + mAcct = (String)ResponseHashTable[PayflowConstants.PARAM_ACCT]; + mExpDate = (String)ResponseHashTable[PayflowConstants.PARAM_EXPDATE]; + mMaxFailPayments = (String)ResponseHashTable[PayflowConstants.PARAM_MAXFAILPAYMENTS]; + mNumFailPayments = (String)ResponseHashTable[PayflowConstants.PARAM_NUMFAILPAYMENTS]; + mRetryNumDays = (String)ResponseHashTable[PayflowConstants.PARAM_RETRYNUMDAYS]; + mEmail = (String)ResponseHashTable["EMAIL"]; + mCompanyName = (String)ResponseHashTable[PayflowConstants.PARAM_COMPANYNAME]; + // mName = (String) ResponseHashTable[PayflowConstants.PARAM_NAME]; + mFirstName = (String)ResponseHashTable[PayflowConstants.PARAM_NAME]; + mMiddleName = (String)ResponseHashTable[PayflowConstants.PARAM_MIDDLENAME]; + mLastName = (String)ResponseHashTable["LASTNAME"]; + mStreet = (String)ResponseHashTable["STREET"]; + mCity = (String)ResponseHashTable["CITY"]; + mState = (String)ResponseHashTable["STATE"]; + mZip = (String)ResponseHashTable["ZIP"]; + mCountry = (String)ResponseHashTable["COUNTRY"]; + mPhoneNum = (String)ResponseHashTable["PHONENUM"]; + mShipToFName = (String)ResponseHashTable[PayflowConstants.PARAM_SHIPTOFIRSTNAME]; + mShipToMName = (String)ResponseHashTable[PayflowConstants.PARAM_SHIPTOMIDDLENAME]; + mShipToLName = (String)ResponseHashTable[PayflowConstants.PARAM_SHIPTOLASTNAME]; + mShipToStreet = (String)ResponseHashTable[PayflowConstants.PARAM_SHIPTOSTREET]; + mShipToCity = (String)ResponseHashTable[PayflowConstants.PARAM_SHIPTOCITY]; + mShipToState = (String)ResponseHashTable[PayflowConstants.PARAM_SHIPTOSTATE]; + mShipToZip = (String)ResponseHashTable[PayflowConstants.PARAM_SHIPTOZIP]; + mShipToCountry = (String)ResponseHashTable[PayflowConstants.PARAM_SHIPTOCOUNTRY]; ResponseHashTable.Remove(PayflowConstants.PARAM_PROFILEID); ResponseHashTable.Remove(PayflowConstants.PARAM_RPREF); + ResponseHashTable.Remove(PayflowConstants.PARAM_STATUS); ResponseHashTable.Remove(PayflowConstants.PARAM_TRXPNREF); ResponseHashTable.Remove(PayflowConstants.PARAM_TRXRESULT); ResponseHashTable.Remove(PayflowConstants.PARAM_TRXRESPMSG); @@ -985,6 +1103,7 @@ internal void SetParams(ref Hashtable ResponseHashTable) ResponseHashTable.Remove(PayflowConstants.PARAM_AGGREGATEAMT); ResponseHashTable.Remove(PayflowConstants.PARAM_AGGREGATEOPTIONALAMT); ResponseHashTable.Remove(PayflowConstants.PARAM_AMT); + ResponseHashTable.Remove(PayflowConstants.PARAM_CURRENCY); ResponseHashTable.Remove(PayflowConstants.PARAM_ACCT); ResponseHashTable.Remove(PayflowConstants.PARAM_EXPDATE); ResponseHashTable.Remove(PayflowConstants.PARAM_MAXFAILPAYMENTS); @@ -995,11 +1114,11 @@ internal void SetParams(ref Hashtable ResponseHashTable) ResponseHashTable.Remove(PayflowConstants.PARAM_NAME); ResponseHashTable.Remove(PayflowConstants.PARAM_FIRSTNAME); ResponseHashTable.Remove(PayflowConstants.PARAM_MIDDLENAME); - ResponseHashTable.Remove(PayflowConstants.PARAM_LASTNAME); - ResponseHashTable.Remove(PayflowConstants.PARAM_STREET); - ResponseHashTable.Remove(PayflowConstants.PARAM_CITY); - ResponseHashTable.Remove(PayflowConstants.PARAM_STATE); - ResponseHashTable.Remove(PayflowConstants.PARAM_ZIP); + ResponseHashTable.Remove("LASTNAME"); + ResponseHashTable.Remove("STREET"); + ResponseHashTable.Remove("CITY"); + ResponseHashTable.Remove("STATE"); + ResponseHashTable.Remove("ZIP"); ResponseHashTable.Remove(PayflowConstants.PARAM_COUNTRY); ResponseHashTable.Remove(PayflowConstants.PARAM_PHONENUM); ResponseHashTable.Remove(PayflowConstants.PARAM_SHIPTOFIRSTNAME); diff --git a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/TransactionResponse.cs b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/TransactionResponse.cs index cf808ce..df4dad0 100644 --- a/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/TransactionResponse.cs +++ b/dotNET/PFProSDK/src/PayPal/Payments/DataObjects/TransactionResponse.cs @@ -350,7 +350,11 @@ public sealed class TransactionResponse : BaseResponseDataObject /// CCTrans_POSData /// private String mCCTrans_POSData; - + /// + /// ParId + /// + private String mParId; + #endregion #region "Properties" @@ -1278,7 +1282,7 @@ public String CCTransId { get { return mCCTransId; } } - /// + /// /// Gets the Credit Card Transaction POS Data /// /// Value returned by some processors for all credit card transactions. @@ -1290,14 +1294,28 @@ public String CCTrans_POSData { get { return mCCTrans_POSData; } } - #endregion - #region "Constructors" + /// + /// Gets the Payment Account Reference + /// + /// Value returned by some processors that is a non-financial reference number assigned to each unique + /// Primary Account Number (PAN) and mapped to all its affiliated Payment Tokens. + /// + /// Maps to Payflow Parameter: + /// PARID + /// + public String ParId + { + get { return mParId; } + } + #endregion - /// - /// Constructor for Transaction response. - /// - internal TransactionResponse () + #region "Constructors" + + /// + /// Constructor for Transaction response. + /// + internal TransactionResponse () { } @@ -1380,6 +1398,7 @@ internal void SetParams(ref Hashtable ResponseHashTable) mValidationCode = (String)ResponseHashTable[PayflowConstants.PARAM_VALIDATIONCODE]; mCCTransId = (String)ResponseHashTable[PayflowConstants.PARAM_CCTRANSID]; mCCTrans_POSData = (String)ResponseHashTable[PayflowConstants.PARAM_CCTRANS_POSDATA]; + mParId = (String)ResponseHashTable[PayflowConstants.PARAM_PARID]; // Remove the used response params from hash table. // ResponseHashTable.Remove(PayflowConstants.INTL_PARAM_FULLRESPONSE); @@ -1416,13 +1435,8 @@ internal void SetParams(ref Hashtable ResponseHashTable) ResponseHashTable.Remove(PayflowConstants.PARAM_BALAMT); ResponseHashTable.Remove(PayflowConstants.PARAM_AMEXID); ResponseHashTable.Remove(PayflowConstants.PARAM_AMEXPOSDATA); - ResponseHashTable.Remove(PayflowConstants.PARAM_ACCT); - ResponseHashTable.Remove(PayflowConstants.PARAM_LASTNAME); - ResponseHashTable.Remove(PayflowConstants.PARAM_FIRSTNAME); // This is here to deal with FIRSTNAME returned in ACH, not BILLTOFIRSTNAME. ResponseHashTable.Remove("FIRSTNAME"); - ResponseHashTable.Remove(PayflowConstants.PARAM_AMT); - ResponseHashTable.Remove(PayflowConstants.PARAM_EXPDATE); ResponseHashTable.Remove(PayflowConstants.PARAM_TRANSTIME); ResponseHashTable.Remove(PayflowConstants.PARAM_CARDTYPE); ResponseHashTable.Remove(PayflowConstants.PARAM_ORIGAMT); @@ -1446,9 +1460,15 @@ internal void SetParams(ref Hashtable ResponseHashTable) ResponseHashTable.Remove(PayflowConstants.PARAM_VALIDATIONCODE); ResponseHashTable.Remove(PayflowConstants.PARAM_CCTRANSID); ResponseHashTable.Remove(PayflowConstants.PARAM_CCTRANS_POSDATA); - - // Commented Line below to reserve Status for Recurring Inquiry + ResponseHashTable.Remove(PayflowConstants.PARAM_PARID); + + // Commented lines below to reserve Status for Recurring Inquiry // ResponseHashTable.Remove(PayflowConstants.PARAM_STATUS); + // ResponseHashTable.Remove(PayflowConstants.PARAM_AMT); + // ResponseHashTable.Remove(PayflowConstants.PARAM_EXPDATE); + // ResponseHashTable.Remove(PayflowConstants.PARAM_ACCT); + // ResponseHashTable.Remove(PayflowConstants.PARAM_LASTNAME); + // ResponseHashTable.Remove(PayflowConstants.PARAM_FIRSTNAME); } #endregion diff --git a/dotNET/Payflow SDK Docs/.editorconfig b/dotNET/Payflow SDK Docs/.editorconfig new file mode 100644 index 0000000..967ab94 --- /dev/null +++ b/dotNET/Payflow SDK Docs/.editorconfig @@ -0,0 +1,5 @@ +# Rules in this file were initially inferred by Visual Studio IntelliCode from the C:\Users\tsieber\GitHub\payflow-gateway\dotNET\Payflow SDK Docs\Content\VersionHistory\ codebase based on best match to current usage at 2/8/2022 +# You can modify the rules from these initially generated values to suit your own policies +# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference +[*.cs] + diff --git a/dotNET/Payflow SDK Docs/Content/GPL.aml b/dotNET/Payflow SDK Docs/Content/GPL.aml new file mode 100644 index 0000000..499b2ee --- /dev/null +++ b/dotNET/Payflow SDK Docs/Content/GPL.aml @@ -0,0 +1,110 @@ + + + + + + + + + + Copyright for Payflow .NET SDK for Payflow Pro and PayPal Payments Pro + + + +
+ Copyright + + + + + The Payflow .NET SDK is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or any later version. + + + The Payflow .NET SDK is is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANT ABILITY or + FITNESS FOR A PARTICULAR PURPOSE. + + + See the GNU General Public License for more details. + + + You should have received a copy of the GNU General Public License along with the Payflow .NET SDK. If not, click here. + + + + +
+ + + + GNU General Public License + http://www.gnu.org/licenses + + + + + + + +
+
diff --git a/dotNET/Payflow SDK Docs/Content/VersionHistory/.editorconfig b/dotNET/Payflow SDK Docs/Content/VersionHistory/.editorconfig new file mode 100644 index 0000000..967ab94 --- /dev/null +++ b/dotNET/Payflow SDK Docs/Content/VersionHistory/.editorconfig @@ -0,0 +1,5 @@ +# Rules in this file were initially inferred by Visual Studio IntelliCode from the C:\Users\tsieber\GitHub\payflow-gateway\dotNET\Payflow SDK Docs\Content\VersionHistory\ codebase based on best match to current usage at 2/8/2022 +# You can modify the rules from these initially generated values to suit your own policies +# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference +[*.cs] + diff --git a/dotNET/Payflow SDK Docs/Content/VersionHistory/VersionHistory.aml b/dotNET/Payflow SDK Docs/Content/VersionHistory/VersionHistory.aml new file mode 100644 index 0000000..80611c9 --- /dev/null +++ b/dotNET/Payflow SDK Docs/Content/VersionHistory/VersionHistory.aml @@ -0,0 +1,35 @@ + + + + + The topics in this section describe the various changes made to the Payflow Gateway .NET SDK over the +life of the project. + + +
+ Version History + + Select a version below to see a description of its changes. + + + + + + + + + + + + + + + +
+ + + + + +
+
diff --git a/dotNET/Payflow SDK Docs/Content/VersionHistory/v5.0.0.aml b/dotNET/Payflow SDK Docs/Content/VersionHistory/v5.0.0.aml new file mode 100644 index 0000000..2cbde05 --- /dev/null +++ b/dotNET/Payflow SDK Docs/Content/VersionHistory/v5.0.0.aml @@ -0,0 +1,66 @@ + + + + + July 31, 2019 + + +
+ Changes in This Release + + + + IMPORTANT: THIS VERSION IS NOT 100% COMPATIBLE WITH OLDER VERSIONS OF THE SDK AS SOME OF THE OBJECTS HAVE CHANGED AND/OR THEIR LOCATIONS HAVE MOVED. DO NOT COPY THE DLL INTO A PRODUCTION ENVIRONMENT WITHOUT ADJUSTING YOUR CODE AND FULLY TESTING. + + + + Objects that have moved location + + + MerchDescr and MerchSvc from Invoice object to new MerchantInfo object. + + + Objects that had name changes + + + + + Changed VATAXPERCENT to VATTAXPERCENT. + Changed FIRSTNAME, LASTNAME, STREET, CITY, STATE, PHONENUM, EMAIL, etc. to the new "BILLTO" versions. Example: BILLTOFIRSTNAME, BILLTOLASTNAME, etc. NOTE: The object names have been changed to reflect this. + + + New items added since last release + + + + MerchantInfo: This object holds the soft descriptor fields; such as, MERCHANTNAME, MERCHANTCITY, etc. + Invoice Object-ECHODATA: This parameter will allow you to "echo" back data in the response, it currently supports "ADDRESS" (Billing/Shipping Information) and "USER" in the response. + + Invoice Object-ORDERID: Order ID is used to prevent duplicate "orders" from being processed. This is NOT the same as Request ID; which is used at the transaction level. Order ID (ORDERID) is used to check for a duplicate order in the future. For example, if I pass ORDERID=10101 and in two weeks another order is processed with the same ORDERID, a duplicate condition will occur. The results you receive will be from the original order with DUPLICATE=2 to show that it was ORDERID that triggered the duplicate. The order id is stored for 3 years. + Important Note: Order ID functionality to catch duplicate orders processed withing seconds of each other + is limited. Order ID should be used in conjunction with Request ID to prevent duplicates due to processing / communication errors. DO NOT use ORDERID as your only means to check for duplicate transactions. + + + Data Upload example (DODataUpload) under Samples/Misc to show how to use transaction type "L" allowing credit card data to be removed from local servers and stored at PayPal to be used via reference transactions. This is tokenization of the data. + UserItem Object-USER1 to USER10: If populated, the data will be echoed back in the response. These values are not stored in the data base and are not available for reporting purposes. They are for your use. + Support for Magtek Encrypted Card Readers as part of the Swipe object. Refer to DOEncryptedSwipe sample for more information. + New Processor Response Parameters: PAYMENTADVICECODE, ASSOCIATIONRESPCODE, TYPE, AFFLUENT, CCUPDATED, RRN, STAN, ACI and VALIDATIONCODE for those processors who support these values. + Location Transaction Advice Addendum Parameters: MERCHANTLOCATIONID, MERCHANTID, MERCHANTCONTACTINFO. + Response Parameters: CCTRANSID, CCTRANS_POSDATA. + Request Parameters: ADDLAMT, ADDLAMTTYPE, AUTHDATE, CATTYPE, CONTACTLESS, CUSTDATA, CUSTOMERID, CUSTOMERNUMBER, MERCHANTINVNUM, MERCHANTURL, MERCHANTVATNUM, MISCDATA, REPORTGROUP, VATINVNUM, VATTAXRATE + Request Line Item Parameters: L_ALTTAXAMT, L_ALTTAXID, L_ALTTAXRATE, L_CARRIERSERVICESLEVELCODE, L-EXTAMT + BrowserInfo object-BUTTONSOURCE: Allows partners, resellers to be able to allow PayPal to track their transactions for rev-share and other reasons. + Recurring Billing Parameter: FREQUENCY + TeleCheck Parameters: AUTHTYPE to CheckTender object and TRACEID, AUTHSTATUS to TransctionResponse object. + PaymentCard object: CARDONFILE - flags if the card is to be registered or has been registered for recurring use. TransactionResponse object: TXID - The transaction ID associated with CARDONFILE request. + BuyerAuthStatus object: DSTRANSACTIONID (Directory Server Transaction ID) and THREEDSVersion (3D-Secure Version) + + +
+ + + + + +
+
diff --git a/dotNET/Payflow SDK Docs/Content/VersionHistory/v5.0.2.aml b/dotNET/Payflow SDK Docs/Content/VersionHistory/v5.0.2.aml new file mode 100644 index 0000000..4091cd0 --- /dev/null +++ b/dotNET/Payflow SDK Docs/Content/VersionHistory/v5.0.2.aml @@ -0,0 +1,29 @@ + + + + + February 8, 2022 + + +
+ Changes in This Release + + + + IMPORTANT: THIS VERSION IS NOT 100% COMPATIBLE WITH OLDER VERSIONS OF THE SDK AS SOME OF THE OBJECTS HAVE CHANGED AND/OR THEIR LOCATIONS HAVE MOVED. DO NOT COPY THE DLL INTO A PRODUCTION ENVIRONMENT WITHOUT ADJUSTING YOUR CODE AND FULLY TESTING. + + + + Fixed issue where the RecurringResponse object was not returning all the available response parameters. + Added SCAExemption, CitDate and VMaid under the Invoice object to support Strong Customer Authentication. + Added PAR and PARID under the CreditCard object. Currently only used by American Express. + + +
+ + + + + +
+
diff --git a/dotNET/Payflow SDK Docs/Content/Welcome.aml b/dotNET/Payflow SDK Docs/Content/Welcome.aml new file mode 100644 index 0000000..9edd0a3 --- /dev/null +++ b/dotNET/Payflow SDK Docs/Content/Welcome.aml @@ -0,0 +1,27 @@ + + + + + This SDK is designed to work with both Payflow Gateway accounts(Payflow Pro and Link) and PayPal Payments Pro accounts. + + +
+ Getting Started + + + + This verison of the Payflow SDK is not backwards compatible with earlier versions. + + + Please see the version history for list of the changes. + You should to refer the Payflow Gateway Developer's Guide as + well as the included sample files to assist you in your integration." + +
+ + + + + +
+
diff --git a/dotNET/Payflow SDK Docs/ContentLayout.content b/dotNET/Payflow SDK Docs/ContentLayout.content new file mode 100644 index 0000000..ff5b217 --- /dev/null +++ b/dotNET/Payflow SDK Docs/ContentLayout.content @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dotNET/Payflow SDK Docs/PayflowSDKDocs.shfbproj b/dotNET/Payflow SDK Docs/PayflowSDKDocs.shfbproj new file mode 100644 index 0000000..7501551 --- /dev/null +++ b/dotNET/Payflow SDK Docs/PayflowSDKDocs.shfbproj @@ -0,0 +1,103 @@ + + + + + Debug + AnyCPU + 2.0 + 0a65541e-8b2c-4401-9a0c-648f6b194e3b + 2017.9.26.0 + + Payflow_SDK_Docs + Payflow_SDK_Docs + PayflowSDKDocs + + .NET Framework 4.8 + .\Help\ + Payflow_SDK_Docs + en-US + + + + + + + + + + + + + Website + Standard + VS2013 + True + True + False + False + OnlyWarningsAndErrors + 100 + Payflow Gateway .NET SDK v5 + 5.0.2.0 + False + False + 2 + False + + + DL-PayPal-Payflow-SDK%40paypal.com + Blank + Guid + AboveNamespaces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OnBuildSuccess + + \ No newline at end of file diff --git a/dotNET/Payflow SDK Docs/README.md b/dotNET/Payflow SDK Docs/README.md new file mode 100644 index 0000000..d71ba38 --- /dev/null +++ b/dotNET/Payflow SDK Docs/README.md @@ -0,0 +1,5 @@ +Payflow .NET SDK +---------------- + +## SDK Documentation +The `Payflow SDK Docs` project is built using [**Sandcastle Help File Builder (SHFB)**](https://github.com/EWSoftware/SHFB). diff --git a/dotNET/Payflow SDK Docs/icons/Help.png b/dotNET/Payflow SDK Docs/icons/Help.png new file mode 100644 index 0000000000000000000000000000000000000000..945e89fb96271c85b901f1e656e9920c788c48e6 GIT binary patch literal 4942 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 M07*qoM6N<$f`j^SBme*a literal 0 HcmV?d00001 diff --git a/dotNET/Payflow dotNET SDK.sln b/dotNET/Payflow dotNET SDK.sln index ace8c4b..bd17c3e 100644 --- a/dotNET/Payflow dotNET SDK.sln +++ b/dotNET/Payflow dotNET SDK.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30428.66 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32112.339 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PFProSDK", "PFProSDK\PFProSDK.csproj", "{CE010258-E90B-4349-9BDA-C717768C9442}" EndProject @@ -17,7 +17,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution README.md = README.md EndProjectSection EndProject -Project("{7CF6DF6D-3B04-46F8-A40B-537D21BCA0B4}") = "Payflow SDK Docs", "..\..\..\Sandcastle Help\Payflow SDK Docs.shfbproj", "{0A65541E-8B2C-4401-9A0C-648F6B194E3B}" +Project("{7CF6DF6D-3B04-46F8-A40B-537D21BCA0B4}") = "PayflowSDKDocs", "Payflow SDK Docs\PayflowSDKDocs.shfbproj", "{0A65541E-8B2C-4401-9A0C-648F6B194E3B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/dotNET/README.md b/dotNET/README.md index 75aa18d..0c1575a 100644 --- a/dotNET/README.md +++ b/dotNET/README.md @@ -3,13 +3,16 @@ Payflow .NET SDK A simple SDK allowing easy integration with the Payflow Gateway for .NET. -> THIS VERSION IS NOT 100% COMPATIBLE WITH OLDER VERSIONS AS SOME OF THE OBJECTS AND THEIR LOCATIONS HAVE MOVED. +> THIS VERSION IS NOT 100% COMPATIBLE WITH OLDER VERSIONS AS SOME OF THE OBJECTS AND THEIR LOCATIONS HAVE MOVED. DO NOT COPY THE DLL INTO A PRODUCTION ENVIRONMENT WITHOUT ADJUSTING YOUR CODE IF NECESSARY AND TESTING. ## Supported Platforms -The code is compatible as-is for .NET Framework v4.x using Visual Studio 2019 and can be used in a .NET Core or .NET Standard application with minor changes to the solution/package. Should you recompile for thost platforms, feel free to open a PR to share the changes. +The code is compatible as-is for .NET Framework v4.x or higher using Visual Studio 2019/2022 and can be used in a .NET Core or .NET Standard application with minor changes to the solution/package. -## Documentation +## SDK Documentation +The `Payflow SDK Docs` project is built using [**Sandcastle Help File Builder (SHFB)**](https://github.com/EWSoftware/SHFB). + +## API Documentation See the [**Payflow Gateway Developer Guide**](https://developer.paypal.com/docs/payflow/integration-guide/). ## Development diff --git a/dotNET/SamplesCS/App.config b/dotNET/SamplesCS/App.config index 8198101..9982cb3 100644 --- a/dotNET/SamplesCS/App.config +++ b/dotNET/SamplesCS/App.config @@ -32,7 +32,7 @@ - + diff --git a/dotNET/SamplesCS/SamplesCS.csproj b/dotNET/SamplesCS/SamplesCS.csproj index f4e87c8..ef35650 100644 --- a/dotNET/SamplesCS/SamplesCS.csproj +++ b/dotNET/SamplesCS/SamplesCS.csproj @@ -19,10 +19,10 @@ Exe SamplesCS OnBuildSuccess - PayPal.Payments.Samples.CS.DataObjects.BasicTransactions.DOInquiry + PayPal.Payments.Samples.CS.DataObjects.BasicTransactions.DOSaleCompleteCS - v4.6.1 + v4.8 0.0 diff --git a/dotNET/SamplesCS/src/PayPal/Payments/Samples/CS/DataObjects/BasicTransactions/DOSaleComplete.cs b/dotNET/SamplesCS/src/PayPal/Payments/Samples/CS/DataObjects/BasicTransactions/DOSaleComplete.cs index 2ea439c..7c1c30c 100644 --- a/dotNET/SamplesCS/src/PayPal/Payments/Samples/CS/DataObjects/BasicTransactions/DOSaleComplete.cs +++ b/dotNET/SamplesCS/src/PayPal/Payments/Samples/CS/DataObjects/BasicTransactions/DOSaleComplete.cs @@ -184,7 +184,6 @@ public static void Main(string[] Args) // from your merchant bank. Refer to the Payflow Pro Developer’s Guide1 // and consult your Internet Merchant Bank on what parameters (if any) you can use. // Some of the parameters could include: - // Inv.Recurring = "Y"; // Inv.TaxExempt = "Y"; @@ -337,6 +336,7 @@ public static void Main(string[] Args) // Sending this fields could help in obtaining a lower discount rate from your Internet merchant Bank. // CVV2 is not required when performing a Swipe transaction as the card is present. CC.Cvv2 = "123"; + // Name on Credit Card is optional and not used as part of the authorization. // Also, this field populates the NAME field which is the same as FIRSTNAME, so if you // are already populating first name, do not use this field. @@ -350,7 +350,7 @@ public static void Main(string[] Args) // Example: // CITI (CIT Initial) - Signifies that the merchant is storing the cardholder credentials for the first time in anticipation of future // stored credential transactions. Example: A cardholder sets up a customer profile for future purchases. - //CC.CardonFile = "CITI"; + CC.CardonFile = "CITI"; // *** Create a new Tender - Card Tender data object. *** CardTender Card = new CardTender(CC); // credit card diff --git a/dotNET/SamplesCS/src/PayPal/Payments/Samples/CS/DataObjects/Recurring/DORecurringInquiry.cs b/dotNET/SamplesCS/src/PayPal/Payments/Samples/CS/DataObjects/Recurring/DORecurringInquiry.cs index b84fcf2..62b6bc0 100644 --- a/dotNET/SamplesCS/src/PayPal/Payments/Samples/CS/DataObjects/Recurring/DORecurringInquiry.cs +++ b/dotNET/SamplesCS/src/PayPal/Payments/Samples/CS/DataObjects/Recurring/DORecurringInquiry.cs @@ -26,7 +26,7 @@ public static void Main(string[] Args) // Create the Data Objects. // Create the User data object with the required user details. UserInfo User = new UserInfo("", "", "", ""); - + // Create the Payflow Connection data object with the required connection details. // The PAYFLOW_HOST property is defined in the App config file. PayflowConnectionData Connection = new PayflowConnectionData(); @@ -37,8 +37,6 @@ public static void Main(string[] Args) // To view "Optional Transactions", use 'O'. RecurInfo.PaymentHistory = "N"; - /////////////////////////////////////////////////////////////////// - // Create a new Recurring Inquiry Transaction. RecurringInquiryTransaction Trans = new RecurringInquiryTransaction( User, Connection, RecurInfo, PayflowUtility.RequestId); @@ -54,7 +52,6 @@ public static void Main(string[] Args) if (TrxnResponse != null) { Console.WriteLine("RESULT = " + TrxnResponse.Result); - Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); } // Get the Recurring Response parameters. @@ -68,13 +65,19 @@ public static void Main(string[] Args) { Console.WriteLine("STATUS = " + RecurResponse.Status); Console.WriteLine("PROFILENAME = " + RecurResponse.ProfileName); + Console.WriteLine("CREATIONDATE = " + RecurResponse.CreationDate); + Console.WriteLine("LASTCHANGED = " + RecurResponse.LastChangedDate); Console.WriteLine("START = " + RecurResponse.Start); Console.WriteLine("TERM = " + RecurResponse.Term); Console.WriteLine("PAYMENTSLEFT = " + RecurResponse.PaymentsLeft); Console.WriteLine("NEXTPAYMENT = " + RecurResponse.NextPayment); + Console.WriteLine("NEXTPAYMENTNUM = " + RecurResponse.NextPaymentNumber); Console.WriteLine("PAYPERIOD = " + RecurResponse.PayPeriod); + Console.WriteLine("RPSTATE = " + RecurResponse.RPState); + Console.WriteLine("FREQUENCY = " + RecurResponse.Frequency); Console.WriteLine("TENDER = " + RecurResponse.Tender); Console.WriteLine("AMT = " + RecurResponse.Amt); + Console.WriteLine("CURRENCY = " + RecurResponse.Currency); Console.WriteLine("ACCT = " + RecurResponse.Acct); Console.WriteLine("EXPDATE = " + RecurResponse.ExpDate); Console.WriteLine("AGGREGATEAMT = " + RecurResponse.AggregateAmt); @@ -83,10 +86,14 @@ public static void Main(string[] Args) Console.WriteLine("NUMFAILPAYMENTS = " + RecurResponse.NumFailPayments); Console.WriteLine("RETRYNUMDAYS = " + RecurResponse.RetryNumDays); Console.WriteLine("END = " + RecurResponse.End); - Console.WriteLine("FIRSTNAME = " + RecurResponse.Name); + Console.WriteLine("FIRSTNAME = " + RecurResponse.FirstName); Console.WriteLine("LASTNAME = " + RecurResponse.LastName); Console.WriteLine("STREET = " + RecurResponse.Street); + Console.WriteLine("CITY = " + RecurResponse.City); + Console.WriteLine("STATE = " + RecurResponse.State); Console.WriteLine("ZIP = " + RecurResponse.Zip); + Console.WriteLine("PHONENUM = " + RecurResponse.PhoneNum); + Console.WriteLine("EMAIL = " + RecurResponse.Email); } else { diff --git a/dotNET/SamplesVB/SamplesVB.vbproj b/dotNET/SamplesVB/SamplesVB.vbproj index f374b13..37ecd59 100644 --- a/dotNET/SamplesVB/SamplesVB.vbproj +++ b/dotNET/SamplesVB/SamplesVB.vbproj @@ -21,7 +21,7 @@ On Off SamplesVB - SamplesVB.PayPal.Payments.Samples.VB.DataObjects.BasicTransactions.DOTest + SamplesVB.PayPal.Payments.Samples.VB.DataObjects.BasicTransactions.DOSaleCompleteVB Console diff --git a/dotNET/SamplesVB/src/PayPal/Payments/Samples/VB/DataObjects/BasicTransactions/DOSaleComplete.vb b/dotNET/SamplesVB/src/PayPal/Payments/Samples/VB/DataObjects/BasicTransactions/DOSaleComplete.vb index 7c9b3b2..eb7ede2 100644 --- a/dotNET/SamplesVB/src/PayPal/Payments/Samples/VB/DataObjects/BasicTransactions/DOSaleComplete.vb +++ b/dotNET/SamplesVB/src/PayPal/Payments/Samples/VB/DataObjects/BasicTransactions/DOSaleComplete.vb @@ -169,7 +169,6 @@ Namespace PayPal.Payments.Samples.VB.DataObjects.BasicTransactions ' from your merchant bank. Refer to the Payflow Pro Developer’s Guide ' and consult your Internet Merchant Bank on what parameters (if any) you can use. ' Some of the parameters could include: - ' Inv.Recurring = "Y"; ' Inv.TaxExempt = "Y"; ' *** Create Level 2/3 Data for Purchase Card *** @@ -318,6 +317,7 @@ Namespace PayPal.Payments.Samples.VB.DataObjects.BasicTransactions ' Sending this fields could help in obtaining a lower discount rate from your Internet merchant Bank. ' CVV2 is not required when performing a Swipe transaction as the card is present. CC.Cvv2 = "123" + ' Name on Credit Card is optional and not used as part of the authorization. ' Also, this field populates the NAME field which is the same as FIRSTNAME, so if you ' are already populating first name, do not use this field. @@ -331,7 +331,7 @@ Namespace PayPal.Payments.Samples.VB.DataObjects.BasicTransactions ' Example: ' CITI (CIT Initial) - Signifies that the merchant Is storing the cardholder credentials for the first time in anticipation of future ' stored credential transactions. Example: A cardholder sets up a customer profile for future purchases. - 'CC.CardonFile = "CITI" + CC.CardonFile = "CITI" ' *** Create a new Tender - Card Tender data object. *** Dim Card As New CardTender(CC) ' credit card diff --git a/java/.idea/Payflow Java SDK.iml b/java/.idea/Payflow Java SDK.iml index 0a7489c..13c99c8 100644 --- a/java/.idea/Payflow Java SDK.iml +++ b/java/.idea/Payflow Java SDK.iml @@ -9,7 +9,7 @@ - + diff --git a/java/.idea/workspace.xml b/java/.idea/workspace.xml index 283f088..58cf721 100644 --- a/java/.idea/workspace.xml +++ b/java/.idea/workspace.xml @@ -31,22 +31,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + - - + + + + - +