/// <summary> /// Handle AddPaymentCard API call /// </summary> /// <param name="context"></param> private void AddPaymentCard(HttpContext context) { NameValueCollection parameters = context.Request.Params; NameType nameOnCard = new NameType(parameters["firstName"], parameters["lastName"]); if (parameters["salutation"] != "") { nameOnCard.salutation = parameters["salutation"]; } if (parameters["middleName"] != "") { nameOnCard.middleName = parameters["middleName"]; } if (parameters["suffix"] != "") { nameOnCard.suffix = parameters["suffix"]; } AddressType billingAddress = new AddressType(parameters["line1"], parameters["countryCode"]); if (parameters["line2"] != "") { billingAddress.line2 = parameters["line2"]; } if (parameters["city"] != "") { billingAddress.city = parameters["city"]; } if (parameters["state"] != "") { billingAddress.state = parameters["state"]; } if (parameters["postalCode"] != "") { billingAddress.postalCode = parameters["postalCode"]; } CardTypeType cardType = (CardTypeType)Enum.Parse(typeof(CardTypeType), parameters["cardType"]); ConfirmationType confirmationType = (ConfirmationType)Enum.Parse(typeof(ConfirmationType), parameters["confirmationType"]); // Create API request object AddPaymentCardRequest req = new AddPaymentCardRequest(new RequestEnvelope(), nameOnCard, billingAddress, parameters["cardNumber"], cardType, confirmationType); // set optional parameters if (parameters["accountId"] != "") { req.accountId = parameters["accountId"]; } if (parameters["emailAddress"] != "") { req.emailAddress = parameters["emailAddress"]; } if (parameters["createAccountKey"] != "") { req.createAccountKey = parameters["createAccountKey"]; } if (parameters["cardOwnerDateOfBirth"] != "") { req.cardOwnerDateOfBirth = parameters["cardOwnerDateOfBirth"]; } if (parameters["expirationMonth"] != "" && parameters["expirationYear"] != "") { req.expirationDate = new CardDateType( Int32.Parse(parameters["expirationMonth"]), Int32.Parse(parameters["expirationYear"])); } if (parameters["cardVerificationNumber"] != "") { req.cardVerificationNumber = parameters["cardVerificationNumber"]; } if (parameters["startMonth"] != "" && parameters["startYear"] != "") { req.expirationDate = new CardDateType( Int32.Parse(parameters["startMonth"]), Int32.Parse(parameters["startYear"])); } if (parameters["issueNumber"] != "") { req.issueNumber = parameters["issueNumber"]; } if (confirmationType == ConfirmationType.WEB && (parameters["returnURL"] != "" || parameters["returnURLDescription"] != "" || parameters["cancelURL"] != "" || parameters["cancelURLDescription"] != "")) { req.webOptions = new WebOptionsType(); if (parameters["returnURL"] != "") { req.webOptions.returnUrl = parameters["returnURL"]; } if (parameters["returnURLDescription"] != "") { req.webOptions.returnUrlDescription = parameters["returnURLDescription"]; } if (parameters["cancelURL"] != "") { req.webOptions.cancelUrl = parameters["cancelURL"]; } if (parameters["cancelURLDescription"] != "") { req.webOptions.cancelUrlDescription = parameters["cancelURLDescription"]; } } // All set. Fire the request AdaptiveAccountsService service = new AdaptiveAccountsService(); AddPaymentCardResponse resp = null; try { resp = service.AddPaymentCard(req); } catch (System.Exception e) { context.Response.Write(e.Message); return; } // Display response values. Dictionary <string, string> keyResponseParams = new Dictionary <string, string>(); string redirectUrl = null; if (!(resp.responseEnvelope.ack == AckCode.FAILURE) && !(resp.responseEnvelope.ack == AckCode.FAILUREWITHWARNING)) { keyResponseParams.Add("Execution status", resp.execStatus.ToString()); keyResponseParams.Add("Funding source key", resp.fundingSourceKey); } displayResponse(context, "AddPaymentCard", keyResponseParams, service.getLastRequest(), service.getLastResponse(), resp.error, redirectUrl); }
/// <summary> /// Constructor with arguments /// </summary> public AddPaymentCardRequest(RequestEnvelope requestEnvelope, NameType nameOnCard, AddressType billingAddress, string cardNumber, CardTypeType? cardType, ConfirmationType? confirmationType) { this.requestEnvelope = requestEnvelope; this.nameOnCard = nameOnCard; this.billingAddress = billingAddress; this.cardNumber = cardNumber; this.cardType = cardType; this.confirmationType = confirmationType; }
/// <summary> /// Handle AddPaymentCard API call /// </summary> /// <param name="context"></param> private void AddPaymentCard(HttpContext context) { // #AddPaymentCard API // The AddPaymentCard API operation lets your application set up payment cards as funding sources for PayPal accounts. NameValueCollection parameters = context.Request.Params; // (Required) Name (as it appears on the card) of the payment card holder. // (Required) First name of the account or payment card holder. (Required) Last name of the account or payment card holder. NameType nameOnCard = new NameType(parameters["firstName"], parameters["lastName"]); // (Optional) A salutation for the account or payment card holder. if (parameters["salutation"] != string.Empty) { nameOnCard.salutation = parameters["salutation"]; } //(Optional) Middle name of the account or payment card holder. if (parameters["middleName"] != string.Empty) { nameOnCard.middleName = parameters["middleName"]; } // (Optional) A suffix for the account or payment card holder. if (parameters["suffix"] != string.Empty) { nameOnCard.suffix = parameters["suffix"]; } // (Optional) Billing address of the payment card holder. See // AddressType Fields for details. AddressType billingAddress = new AddressType(parameters["line1"], parameters["countryCode"]); // (Optional) The second line of the address. Note: This field // is required for Brazilian addresses. if (parameters["line2"] != string.Empty) { billingAddress.line2 = parameters["line2"]; } // (Required) The city. if (parameters["city"] != string.Empty) { billingAddress.city = parameters["city"]; } // (Optional) The state code. if (parameters["state"] != string.Empty) { billingAddress.state = parameters["state"]; } // (Optional) The zip or postal code. if (parameters["postalCode"] != string.Empty) { billingAddress.postalCode = parameters["postalCode"]; } // (Required) The type of payment card to add. CardTypeType cardType = (CardTypeType)Enum.Parse(typeof(CardTypeType), parameters["cardType"]); ConfirmationType confirmationType = (ConfirmationType)Enum.Parse(typeof(ConfirmationType), parameters["confirmationType"]); // (Required) The payment card number. AddPaymentCardRequest req = new AddPaymentCardRequest(new RequestEnvelope(), nameOnCard, billingAddress, parameters["cardNumber"], cardType, confirmationType); // Optional) Unique identification number of the PayPal account // to which to add the payment card. You must pass either an // accountId or an emailAddress in this request. You can't leave // both fields out of the message. if (parameters["accountId"] != string.Empty) { req.accountId = parameters["accountId"]; } // (Optional) Email address that uniquely identifies the PayPal // account to which to add the payment card. if (parameters["emailAddress"] != string.Empty) { req.emailAddress = parameters["emailAddress"]; } // (Required if confirmationType is NONE) Unique identifier of // the account to which to add a payment card. Use in cases // where the payment card is being added without the account // holder's explicit confirmation. The value to pass is returned // in the createAccountKey field of a CreateAccount response. A // create account key response expires after 60 minutes. If you // pass an expired key to an Adaptive Accounts API, an error is // returned if (parameters["createAccountKey"] != string.Empty) { req.createAccountKey = parameters["createAccountKey"]; } // (Optional) Date of birth of the payment card holder. if (parameters["cardOwnerDateOfBirth"] != string.Empty) { req.cardOwnerDateOfBirth = parameters["cardOwnerDateOfBirth"]; } // (Optional) Expiration date of the payment card. if (parameters["expirationMonth"] != string.Empty && parameters["expirationYear"] != string.Empty) { req.expirationDate = new CardDateType( Convert.ToInt32(parameters["expirationMonth"]), Convert.ToInt32(parameters["expirationYear"])); } // The verification code of the payment card. This parameter is // generally required for calls in which confirmationType is // NONE. With the appropriate account review, this parameter can // be optional. if (parameters["cardVerificationNumber"] != string.Empty) { req.cardVerificationNumber = parameters["cardVerificationNumber"]; } // (Optional) Start date of the payment card. if (parameters["startMonth"] != string.Empty && parameters["startYear"] != string.Empty) { req.startDate = new CardDateType( Convert.ToInt32(parameters["startMonth"]), Convert.ToInt32(parameters["startYear"])); } // (Optional) 2-digit issue number of the payment card (for // Maestro cards only). if (parameters["issueNumber"] != string.Empty) { req.issueNumber = parameters["issueNumber"]; } // (Optional) Structure in which to pass the URLs for the return // and cancelation web flows if (confirmationType == ConfirmationType.WEB && (parameters["returnURL"] != string.Empty || parameters["returnURLDescription"] != string.Empty || parameters["cancelURL"] != string.Empty || parameters["cancelURLDescription"] != string.Empty)) { req.webOptions = new WebOptionsType(); // (Optional) The URL to which PayPal returns the account holder // once he or she completes confirmation of the payment card // addition if (parameters["returnURL"] != string.Empty) { req.webOptions.returnUrl = parameters["returnURL"]; } if (parameters["returnURLDescription"] != string.Empty) { req.webOptions.returnUrlDescription = parameters["returnURLDescription"]; } // (Optional) The URL to which PayPal returns the account holder // if he or she cancels confirmation of the payment card // addition. if (parameters["cancelURL"] != string.Empty) { req.webOptions.cancelUrl = parameters["cancelURL"]; } if (parameters["cancelURLDescription"] != string.Empty) { req.webOptions.cancelUrlDescription = parameters["cancelURLDescription"]; } } // Create the AdaptiveAccounts service object to make the API call AdaptiveAccountsService service = null; AddPaymentCardResponse resp = null; try { // Configuration map containing signature credentials and other required configuration. // For a full list of configuration parameters refer in wiki page // (https://github.com/paypal/sdk-core-dotnet/wiki/SDK-Configuration-Parameters) Dictionary <string, string> configurationMap = Configuration.GetAcctAndConfig(); // Creating service wrapper object to make an API call and loading // configuration map for your credentials and endpoint service = new AdaptiveAccountsService(configurationMap); // # API call // Invoke the CreateAccount method in service wrapper object resp = service.AddPaymentCard(req); } catch (System.Exception e) { context.Response.Write(e.Message); return; } // Display response values. Dictionary <string, string> keyResponseParams = new Dictionary <string, string>(); string redirectUrl = null; if (!(resp.responseEnvelope.ack == AckCode.FAILURE) && !(resp.responseEnvelope.ack == AckCode.FAILUREWITHWARNING)) { redirectUrl = resp.redirectURL; keyResponseParams.Add("Execution status", resp.execStatus.ToString()); keyResponseParams.Add("Funding source key", resp.fundingSourceKey); //Selenium Test Case keyResponseParams.Add("Acknowledgement", resp.responseEnvelope.ack.ToString()); keyResponseParams.Add("Redirect To PayPal", resp.redirectURL); } displayResponse(context, "AddPaymentCard", keyResponseParams, service.getLastRequest(), service.getLastResponse(), resp.error, redirectUrl); }