protected void Submit_Click(object sender, EventArgs e)
        {
            // Create request object
            CreateBillingAgreementRequestType request = new CreateBillingAgreementRequestType();
            // (Required) The time-stamped token returned in the SetCustomerBillingAgreement response.
            // Note: The token expires after 3 hours.
            request.Token = token.Value;

            // Invoke the API
            CreateBillingAgreementReq wrapper = new CreateBillingAgreementReq();
            wrapper.CreateBillingAgreementRequest = request;

            // 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();

            // Create the PayPalAPIInterfaceServiceService service object to make the API call
            PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(configurationMap);

            // # API call
            // Invoke the CreateBillingAgreement method in service wrapper object
            CreateBillingAgreementResponseType billingAgreementResponse =
                    service.CreateBillingAgreement(wrapper);

            // Check for API return status
            setKeyResponseObjects(service, billingAgreementResponse);
        }
        public ActionResult AgreementConfirmed(string token)
        {
            var service = new PayPalAPIInterfaceServiceService();

            var request = new CreateBillingAgreementReq
            {
                CreateBillingAgreementRequest = new CreateBillingAgreementRequestType(token)
            };

            var response = service.CreateBillingAgreement(request);

            if (response.Ack == AckCodeType.SUCCESS)
            {
                var billingAgreementId = response.BillingAgreementID;

                // store the billing agreement id in a cookie
                Response.Cookies.Add(new HttpCookie("pp_aid", billingAgreementId) { Expires = DateTime.Now.AddDays(365) });

                return View(new AgreementConfirmedViewData { BillingAgreementId = billingAgreementId });
            }
            else
            {
                foreach (var error in response.Errors)
                {
                    ModelState.AddModelError("__FORM", error.LongMessage);
                }
            }

            return View("Error");
        }
        protected void Submit_Click(object sender, EventArgs e)
        {
            // Create request object
            CreateBillingAgreementRequestType request = new CreateBillingAgreementRequestType();
            request.Token = token.Value;

            // Invoke the API
            CreateBillingAgreementReq wrapper = new CreateBillingAgreementReq();
            wrapper.CreateBillingAgreementRequest = request;
            PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService();
            CreateBillingAgreementResponseType billingAgreementResponse =
                    service.CreateBillingAgreement(wrapper);

            // Check for API return status
            setKeyResponseObjects(service, billingAgreementResponse);
        }
        /// <summary>
        /// 
        /// </summary>
        ///<param name="createBillingAgreementReq"></param>
        ///<param name="credential">An explicit ICredential object that you want to authenticate this call against</param> 
        public CreateBillingAgreementResponseType CreateBillingAgreement(CreateBillingAgreementReq createBillingAgreementReq, ICredential credential)
        {
            setStandardParams(createBillingAgreementReq.CreateBillingAgreementRequest);
            DefaultSOAPAPICallHandler defaultHandler = new DefaultSOAPAPICallHandler(this.config, createBillingAgreementReq.ToXMLString(null, "CreateBillingAgreementReq"), null, null);
            IAPICallPreHandler apiCallPreHandler = new MerchantAPICallPreHandler(this.config, defaultHandler, credential);
            ((MerchantAPICallPreHandler) apiCallPreHandler).SDKName = SDKName;
            ((MerchantAPICallPreHandler) apiCallPreHandler).SDKVersion = SDKVersion;
            ((MerchantAPICallPreHandler) apiCallPreHandler).PortName = "PayPalAPIAA";

            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.LoadXml(Call(apiCallPreHandler));
            return new CreateBillingAgreementResponseType(
                xmlDocument.SelectSingleNode("*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='CreateBillingAgreementResponse']")
            );
        }
 /// <summary> 
 /// 
 /// </summary>
 ///<param name="createBillingAgreementReq"></param>
 public CreateBillingAgreementResponseType CreateBillingAgreement(CreateBillingAgreementReq createBillingAgreementReq)
 {
     return CreateBillingAgreement(createBillingAgreementReq,(string) null);
 }
 /**
   *AUTO_GENERATED
  	  */
 public CreateBillingAgreementResponseType CreateBillingAgreement(CreateBillingAgreementReq createBillingAgreementReq, string apiUserName)
 {
     IAPICallPreHandler apiCallPreHandler = null;
      		string portName = "PayPalAPIAA";
     setStandardParams(createBillingAgreementReq.CreateBillingAgreementRequest);
     DefaultSOAPAPICallHandler defaultHandler = new DefaultSOAPAPICallHandler(createBillingAgreementReq.ToXMLString(null, "CreateBillingAgreementReq"), null, null);
     apiCallPreHandler = new MerchantAPICallPreHandler(defaultHandler, apiUserName, getAccessToken(), getAccessTokenSecret());
     ((MerchantAPICallPreHandler) apiCallPreHandler).SDKName = SDKName;
     ((MerchantAPICallPreHandler) apiCallPreHandler).SDKVersion = SDKVersion;
     ((MerchantAPICallPreHandler) apiCallPreHandler).PortName = portName;
     string response = Call(apiCallPreHandler);
     XmlDocument xmlDocument = new XmlDocument();
     xmlDocument.LoadXml(response);
     XmlNode xmlNode = xmlDocument.SelectSingleNode("*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='CreateBillingAgreementResponse']");
     return new CreateBillingAgreementResponseType(xmlNode);
 }
 /**
   *AUTO_GENERATED
  	  */
 public CreateBillingAgreementResponseType CreateBillingAgreement(CreateBillingAgreementReq createBillingAgreementReq, string apiUserName)
 {
     setStandardParams(createBillingAgreementReq.CreateBillingAgreementRequest);
     string response = Call("CreateBillingAgreement", createBillingAgreementReq.ToXMLString(), apiUserName);
     XmlDocument xmlDocument = new XmlDocument();
     xmlDocument.LoadXml(response);
     XmlNode xmlNode = xmlDocument.SelectSingleNode("*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='CreateBillingAgreementResponse']");
     return new CreateBillingAgreementResponseType(xmlNode);
 }
 public CreateBillingAgreementResponseType CreateBillingAgreement(CreateBillingAgreementReq CreateBillingAgreementReq)
 {
     return CreateBillingAgreement(CreateBillingAgreementReq, null);
 }
        /**
         *
         */
        public CreateBillingAgreementResponseType CreateBillingAgreement(CreateBillingAgreementReq CreateBillingAgreementReq, string apiUsername)
        {
            setStandardParams(CreateBillingAgreementReq.CreateBillingAgreementRequest);
            string resp = call("CreateBillingAgreement", CreateBillingAgreementReq.toXMLString(), apiUsername);

            return new CreateBillingAgreementResponseType(resp);
        }