├── .gitignore ├── .nuget ├── NuGet.Config ├── NuGet.exe └── NuGet.targets ├── .vs └── config │ └── applicationhost.config ├── IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.sln ├── IppDotNetSdkQuickBooksApiV3SampleWebFormsApp ├── Account │ ├── Login.aspx │ ├── Login.aspx.cs │ ├── Login.aspx.designer.cs │ ├── Manage.aspx │ ├── Manage.aspx.cs │ ├── Manage.aspx.designer.cs │ ├── OpenAuthProviders.ascx │ ├── OpenAuthProviders.ascx.cs │ ├── OpenAuthProviders.ascx.designer.cs │ ├── Register.aspx │ ├── Register.aspx.cs │ ├── Register.aspx.designer.cs │ ├── RegisterExternalLogin.aspx │ ├── RegisterExternalLogin.aspx.cs │ ├── RegisterExternalLogin.aspx.designer.cs │ └── Web.config ├── App_Data │ ├── aspnet-IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.mdf │ └── aspnet-IppDotNetSdkQuickBooksApiV3SampleWebFormsApp_log.ldf ├── App_Start │ ├── AuthConfig.cs │ ├── BundleConfig.cs │ └── RouteConfig.cs ├── ApplicationKeys.aspx ├── ApplicationKeys.aspx.cs ├── ApplicationKeys.aspx.designer.cs ├── Bundle.config ├── Configure.aspx ├── Configure.aspx.cs ├── Configure.aspx.designer.cs ├── Content │ ├── Site.css │ └── themes │ │ └── base │ │ ├── accordion.css │ │ ├── all.css │ │ ├── autocomplete.css │ │ ├── base.css │ │ ├── button.css │ │ ├── core.css │ │ ├── datepicker.css │ │ ├── dialog.css │ │ ├── draggable.css │ │ ├── images │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_444444_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_555555_256x240.png │ │ ├── ui-icons_777620_256x240.png │ │ ├── ui-icons_777777_256x240.png │ │ ├── ui-icons_888888_256x240.png │ │ ├── ui-icons_cc0000_256x240.png │ │ ├── ui-icons_cd0a0a_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ │ ├── jquery-ui.css │ │ ├── jquery-ui.min.css │ │ ├── menu.css │ │ ├── progressbar.css │ │ ├── resizable.css │ │ ├── selectable.css │ │ ├── selectmenu.css │ │ ├── slider.css │ │ ├── sortable.css │ │ ├── spinner.css │ │ ├── tabs.css │ │ ├── theme.css │ │ └── tooltip.css ├── CustomerList.aspx ├── CustomerList.aspx.cs ├── CustomerList.aspx.designer.cs ├── Default.aspx ├── Default.aspx.cs ├── Default.aspx.designer.cs ├── Global.asax ├── Global.asax.cs ├── IPP │ ├── BlueDotMenuProxy.aspx │ ├── BlueDotMenuProxy.aspx.cs │ ├── BlueDotMenuProxy.aspx.designer.cs │ ├── Constants.cs │ ├── RestHelper.cs │ └── RestProfile.cs ├── Images │ ├── AppDetails.PNG │ ├── AppTokensAndKeys.PNG │ ├── accent.png │ ├── bullet.png │ ├── heroAccent.png │ ├── orderedList0.png │ ├── orderedList1.png │ ├── orderedList2.png │ ├── orderedList3.png │ ├── orderedList4.png │ ├── orderedList5.png │ ├── orderedList6.png │ ├── orderedList7.png │ ├── orderedList8.png │ └── orderedList9.png ├── IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.csproj ├── ManageConnection.aspx ├── ManageConnection.aspx.cs ├── ManageConnection.aspx.designer.cs ├── OAuth │ ├── Callback.aspx │ ├── Callback.aspx.cs │ ├── Callback.aspx.designer.cs │ ├── Grant.aspx │ ├── Grant.aspx.cs │ └── Grant.aspx.designer.cs ├── OpenID │ ├── Connect.aspx │ ├── Connect.aspx.cs │ ├── Connect.aspx.designer.cs │ ├── Logout.aspx │ ├── Logout.aspx.cs │ └── Logout.aspx.designer.cs ├── Properties │ └── AssemblyInfo.cs ├── Scripts │ ├── WebForms │ │ ├── DetailsView.js │ │ ├── Focus.js │ │ ├── GridView.js │ │ ├── IPP │ │ │ └── Setup.js │ │ ├── MSAjax │ │ │ ├── MicrosoftAjax.js │ │ │ ├── MicrosoftAjaxApplicationServices.js │ │ │ ├── MicrosoftAjaxComponentModel.js │ │ │ ├── MicrosoftAjaxCore.js │ │ │ ├── MicrosoftAjaxGlobalization.js │ │ │ ├── MicrosoftAjaxHistory.js │ │ │ ├── MicrosoftAjaxNetwork.js │ │ │ ├── MicrosoftAjaxSerialization.js │ │ │ ├── MicrosoftAjaxTimer.js │ │ │ ├── MicrosoftAjaxWebForms.js │ │ │ └── MicrosoftAjaxWebServices.js │ │ ├── Menu.js │ │ ├── MenuStandards.js │ │ ├── SmartNav.js │ │ ├── TreeView.js │ │ ├── WebForms.js │ │ ├── WebParts.js │ │ └── WebUIValidation.js │ ├── _references.js │ ├── jquery-3.1.1.intellisense.js │ ├── jquery-3.1.1.js │ ├── jquery-3.1.1.min.js │ ├── jquery-3.1.1.min.map │ ├── jquery-3.1.1.slim.js │ ├── jquery-3.1.1.slim.min.js │ ├── jquery-3.1.1.slim.min.map │ ├── jquery-ui-1.12.1.js │ ├── jquery-ui-1.12.1.min.js │ └── modernizr-2.8.3.js ├── Site.Master ├── Site.Master.cs ├── Site.Master.designer.cs ├── Site.Mobile.Master ├── Site.Mobile.Master.cs ├── Site.Mobile.Master.designer.cs ├── ViewSwitcher.ascx ├── ViewSwitcher.ascx.cs ├── ViewSwitcher.ascx.designer.cs ├── Web.Debug.config ├── Web.Release.config ├── Web.config ├── favicon.ico └── packages.config ├── LICENSE ├── README.md ├── packages └── repositories.config └── views ├── Callout.png └── Sample.png /.gitignore: -------------------------------------------------------------------------------- 1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs) 2 | [Bb]in/ 3 | [Oo]bj/ 4 | 5 | # mstest test results 6 | TestResults 7 | 8 | ## Ignore Visual Studio temporary files, build results, and 9 | ## files generated by popular Visual Studio add-ons. 10 | 11 | # User-specific files 12 | *.suo 13 | *.user 14 | *.sln.docstates 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Rr]elease/ 19 | x64/ 20 | *_i.c 21 | *_p.c 22 | *.ilk 23 | *.meta 24 | *.obj 25 | *.pch 26 | *.pdb 27 | *.pgc 28 | *.pgd 29 | *.rsp 30 | *.sbr 31 | *.tlb 32 | *.tli 33 | *.tlh 34 | *.tmp 35 | *.log 36 | *.vspscc 37 | *.vssscc 38 | .builds 39 | 40 | # Visual C++ cache files 41 | ipch/ 42 | *.aps 43 | *.ncb 44 | *.opensdf 45 | *.sdf 46 | 47 | # Visual Studio profiler 48 | *.psess 49 | *.vsp 50 | *.vspx 51 | 52 | # Guidance Automation Toolkit 53 | *.gpState 54 | 55 | # ReSharper is a .NET coding add-in 56 | _ReSharper* 57 | 58 | # NCrunch 59 | *.ncrunch* 60 | .*crunch*.local.xml 61 | 62 | # Installshield output folder 63 | [Ee]xpress 64 | 65 | # DocProject is a documentation generator add-in 66 | DocProject/buildhelp/ 67 | DocProject/Help/*.HxT 68 | DocProject/Help/*.HxC 69 | DocProject/Help/*.hhc 70 | DocProject/Help/*.hhk 71 | DocProject/Help/*.hhp 72 | DocProject/Help/Html2 73 | DocProject/Help/html 74 | 75 | # Click-Once directory 76 | publish 77 | 78 | # Publish Web Output 79 | *.Publish.xml 80 | 81 | # NuGet Packages Directory 82 | packages/* 83 | !packages/repositories.config 84 | 85 | # Windows Azure Build Output 86 | csx 87 | *.build.csdef 88 | 89 | # Windows Store app package directory 90 | AppPackages/ 91 | 92 | # Others 93 | [Bb]in 94 | [Oo]bj 95 | sql 96 | TestResults 97 | [Tt]est[Rr]esult* 98 | *.Cache 99 | ClientBin 100 | [Ss]tyle[Cc]op.* 101 | ~$* 102 | *.dbmdl 103 | Generated_Code #added for RIA/Silverlight projects 104 | 105 | # Backup & report files from converting an old project file to a newer 106 | # Visual Studio version. Backup files are not needed, because we have git ;-) 107 | _UpgradeReport_Files/ 108 | Backup*/ 109 | UpgradeLog*.XML 110 | -------------------------------------------------------------------------------- /.nuget/NuGet.Config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.nuget/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/.nuget/NuGet.exe -------------------------------------------------------------------------------- /.nuget/NuGet.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(MSBuildProjectDirectory)\..\ 5 | 6 | 7 | false 8 | 9 | 10 | false 11 | 12 | 13 | true 14 | 15 | 16 | false 17 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | 28 | 29 | 30 | $([System.IO.Path]::Combine($(SolutionDir), ".nuget")) 31 | $([System.IO.Path]::Combine($(ProjectDir), "packages.config")) 32 | 33 | 34 | 35 | 36 | $(SolutionDir).nuget 37 | packages.config 38 | 39 | 40 | 41 | 42 | $(NuGetToolsPath)\NuGet.exe 43 | @(PackageSource) 44 | 45 | "$(NuGetExePath)" 46 | mono --runtime=v4.0.30319 $(NuGetExePath) 47 | 48 | $(TargetDir.Trim('\\')) 49 | 50 | -RequireConsent 51 | -NonInteractive 52 | 53 | "$(SolutionDir) " 54 | "$(SolutionDir)" 55 | 56 | 57 | $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir) 58 | $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols 59 | 60 | 61 | 62 | RestorePackages; 63 | $(BuildDependsOn); 64 | 65 | 66 | 67 | 68 | $(BuildDependsOn); 69 | BuildPackage; 70 | 71 | 72 | 73 | 74 | 75 | 76 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | 98 | 100 | 101 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IppDotNetSdkQuickBooksApiV3SampleWebFormsApp", "IppDotNetSdkQuickBooksApiV3SampleWebFormsApp\IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.csproj", "{F061470A-65F4-4D1E-8C64-0E253D0B6BEF}" 5 | EndProject 6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{EB864637-DE14-4703-95A8-0AA6EB96B815}" 7 | ProjectSection(SolutionItems) = preProject 8 | .nuget\NuGet.Config = .nuget\NuGet.Config 9 | .nuget\NuGet.exe = .nuget\NuGet.exe 10 | .nuget\NuGet.targets = .nuget\NuGet.targets 11 | EndProjectSection 12 | EndProject 13 | Global 14 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 15 | Debug|Any CPU = Debug|Any CPU 16 | Release|Any CPU = Release|Any CPU 17 | EndGlobalSection 18 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 19 | {F061470A-65F4-4D1E-8C64-0E253D0B6BEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 20 | {F061470A-65F4-4D1E-8C64-0E253D0B6BEF}.Debug|Any CPU.Build.0 = Debug|Any CPU 21 | {F061470A-65F4-4D1E-8C64-0E253D0B6BEF}.Release|Any CPU.ActiveCfg = Release|Any CPU 22 | {F061470A-65F4-4D1E-8C64-0E253D0B6BEF}.Release|Any CPU.Build.0 = Release|Any CPU 23 | EndGlobalSection 24 | GlobalSection(SolutionProperties) = preSolution 25 | HideSolutionNode = FALSE 26 | EndGlobalSection 27 | EndGlobal 28 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Login.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="Log in" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account.Login" %> 2 | <%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %> 3 | 4 | 5 |
6 |

<%: Title %>.

7 |
8 |
9 |

Use a local account to log in.

10 | 11 | 12 |

13 | 14 |

15 |
16 | Log in Form 17 |
    18 |
  1. 19 | User name 20 | 21 | 22 |
  2. 23 |
  3. 24 | Password 25 | 26 | 27 |
  4. 28 |
  5. 29 | 30 | Remember me? 31 |
  6. 32 |
33 | 34 |
35 |
36 |
37 |

38 | Register 39 | if you don't have an account. 40 |

41 |
42 | 43 |
44 |

Use another service to log in.

45 |

46 | ">

47 |

Questions about the Sign In with Intuit button or OpenID? Please see our documentation.

48 |
49 |
50 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Login.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.UI; 6 | using System.Web.UI.WebControls; 7 | 8 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account 9 | { 10 | public partial class Login : Page 11 | { 12 | protected void Page_Load(object sender, EventArgs e) 13 | { 14 | RegisterHyperLink.NavigateUrl = "Register"; 15 | 16 | var returnUrl = HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]); 17 | if (!String.IsNullOrEmpty(returnUrl)) 18 | { 19 | RegisterHyperLink.NavigateUrl += "?ReturnUrl=" + returnUrl; 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Login.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account { 11 | 12 | 13 | public partial class Login { 14 | 15 | /// 16 | /// RegisterHyperLink control. 17 | /// 18 | /// 19 | /// Auto-generated field. 20 | /// To modify move field declaration from designer file to code-behind file. 21 | /// 22 | protected global::System.Web.UI.WebControls.HyperLink RegisterHyperLink; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Manage.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="Manage Account" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Manage.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account.Manage" %> 2 | <%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %> 3 | 4 | 5 |
6 |

<%: Title %>.

7 |
8 | 9 |
10 | 11 |

<%: SuccessMessage %>

12 |
13 | 14 |

You're logged in as <%: User.Identity.Name %>.

15 | 16 | 17 |

18 | You do not have a local password for this site. Add a local 19 | password so you can log in without an external login. 20 |

21 |
22 | Set Password Form 23 |
    24 |
  1. 25 | Password 26 | 27 | 30 | 31 | 33 | 34 |
  2. 35 |
  3. 36 | Confirm password 37 | 38 | 41 | 44 |
  4. 45 |
46 | 47 |
48 |
49 | 50 | 51 |

Change password

52 | 53 | 54 |

55 | 56 |

57 |
58 | Change password details 59 |
    60 |
  1. 61 | Current password 62 | 63 | 66 |
  2. 67 |
  3. 68 | New password 69 | 70 | 73 |
  4. 74 |
  5. 75 | Confirm new password 76 | 77 | 80 | 83 |
  6. 84 |
85 | 86 |
87 |
88 |
89 |
90 |
91 | 92 |
93 | 94 | 97 | 98 | 99 |

Registered external logins

100 | 101 | 102 | 103 | 104 | 105 |
ServiceUser NameLast Used 
106 |
107 | 108 | 109 | 110 | <%#: Item.ProviderDisplayName %> 111 | <%#: Item.ProviderUserName %> 112 | <%#: ConvertToDisplayDateTime(Item.LastUsedUtc) %> 113 | 114 | 117 | 118 | 119 | 120 | 121 |
122 | 123 |

Add an external login

124 | 125 |
126 |
127 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Manage.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | using Microsoft.AspNet.Membership.OpenAuth; 6 | 7 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account 8 | { 9 | public partial class Manage : System.Web.UI.Page 10 | { 11 | protected string SuccessMessage 12 | { 13 | get; 14 | private set; 15 | } 16 | 17 | protected bool CanRemoveExternalLogins 18 | { 19 | get; 20 | private set; 21 | } 22 | 23 | protected void Page_Load() 24 | { 25 | if (!IsPostBack) 26 | { 27 | // Determine the sections to render 28 | var hasLocalPassword = OpenAuth.HasLocalPassword(User.Identity.Name); 29 | setPassword.Visible = !hasLocalPassword; 30 | changePassword.Visible = hasLocalPassword; 31 | 32 | CanRemoveExternalLogins = hasLocalPassword; 33 | 34 | // Render success message 35 | var message = Request.QueryString["m"]; 36 | if (message != null) 37 | { 38 | // Strip the query string from action 39 | Form.Action = ResolveUrl("~/Account/Manage"); 40 | 41 | SuccessMessage = 42 | message == "ChangePwdSuccess" ? "Your password has been changed." 43 | : message == "SetPwdSuccess" ? "Your password has been set." 44 | : message == "RemoveLoginSuccess" ? "The external login was removed." 45 | : String.Empty; 46 | successMessage.Visible = !String.IsNullOrEmpty(SuccessMessage); 47 | } 48 | } 49 | 50 | } 51 | 52 | protected void setPassword_Click(object sender, EventArgs e) 53 | { 54 | if (IsValid) 55 | { 56 | var result = OpenAuth.AddLocalPassword(User.Identity.Name, password.Text); 57 | if (result.IsSuccessful) 58 | { 59 | Response.Redirect("~/Account/Manage?m=SetPwdSuccess"); 60 | } 61 | else 62 | { 63 | 64 | ModelState.AddModelError("NewPassword", result.ErrorMessage); 65 | 66 | } 67 | } 68 | } 69 | 70 | 71 | public IEnumerable GetExternalLogins() 72 | { 73 | var accounts = OpenAuth.GetAccountsForUser(User.Identity.Name); 74 | CanRemoveExternalLogins = CanRemoveExternalLogins || accounts.Count() > 1; 75 | return accounts; 76 | } 77 | 78 | public void RemoveExternalLogin(string providerName, string providerUserId) 79 | { 80 | var m = OpenAuth.DeleteAccount(User.Identity.Name, providerName, providerUserId) 81 | ? "?m=RemoveLoginSuccess" 82 | : String.Empty; 83 | Response.Redirect("~/Account/Manage" + m); 84 | } 85 | 86 | 87 | protected static string ConvertToDisplayDateTime(DateTime? utcDateTime) 88 | { 89 | // You can change this method to convert the UTC date time into the desired display 90 | // offset and format. Here we're converting it to the server timezone and formatting 91 | // as a short date and a long time string, using the current thread culture. 92 | return utcDateTime.HasValue ? utcDateTime.Value.ToLocalTime().ToString("G") : "[never]"; 93 | } 94 | } 95 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Manage.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account 11 | { 12 | 13 | 14 | public partial class Manage 15 | { 16 | 17 | /// 18 | /// successMessage control. 19 | /// 20 | /// 21 | /// Auto-generated field. 22 | /// To modify move field declaration from designer file to code-behind file. 23 | /// 24 | protected global::System.Web.UI.WebControls.PlaceHolder successMessage; 25 | 26 | /// 27 | /// setPassword control. 28 | /// 29 | /// 30 | /// Auto-generated field. 31 | /// To modify move field declaration from designer file to code-behind file. 32 | /// 33 | protected global::System.Web.UI.WebControls.PlaceHolder setPassword; 34 | 35 | /// 36 | /// password control. 37 | /// 38 | /// 39 | /// Auto-generated field. 40 | /// To modify move field declaration from designer file to code-behind file. 41 | /// 42 | protected global::System.Web.UI.WebControls.TextBox password; 43 | 44 | 45 | 46 | /// 47 | /// confirmPassword control. 48 | /// 49 | /// 50 | /// Auto-generated field. 51 | /// To modify move field declaration from designer file to code-behind file. 52 | /// 53 | protected global::System.Web.UI.WebControls.TextBox confirmPassword; 54 | 55 | /// 56 | /// changePassword control. 57 | /// 58 | /// 59 | /// Auto-generated field. 60 | /// To modify move field declaration from designer file to code-behind file. 61 | /// 62 | protected global::System.Web.UI.WebControls.PlaceHolder changePassword; 63 | 64 | 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/OpenAuthProviders.ascx: -------------------------------------------------------------------------------- 1 | <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OpenAuthProviders.ascx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account.OpenAuthProviders" %> 2 | 3 |
4 | Log in using another service 5 | 6 | 8 | 9 | 13 | 14 | 15 | 16 |
17 |

There are no external authentication services configured. See this article for details on setting up this ASP.NET application to support logging in via external services.

18 |
19 |
20 |
21 |
-------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/OpenAuthProviders.ascx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Web; 4 | using Microsoft.AspNet.Membership.OpenAuth; 5 | 6 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account 7 | { 8 | public partial class OpenAuthProviders : System.Web.UI.UserControl 9 | { 10 | protected void Page_Load(object sender, EventArgs e) 11 | { 12 | 13 | if (IsPostBack) 14 | { 15 | var provider = Request.Form["provider"]; 16 | if (provider == null) 17 | { 18 | return; 19 | } 20 | 21 | var redirectUrl = "~/Account/RegisterExternalLogin"; 22 | if (!String.IsNullOrEmpty(ReturnUrl)) 23 | { 24 | var resolvedReturnUrl = ResolveUrl(ReturnUrl); 25 | redirectUrl += "?ReturnUrl=" + HttpUtility.UrlEncode(resolvedReturnUrl); 26 | } 27 | 28 | OpenAuth.RequestAuthentication(provider, redirectUrl); 29 | } 30 | } 31 | 32 | 33 | 34 | public string ReturnUrl { get; set; } 35 | 36 | 37 | public IEnumerable GetProviderNames() 38 | { 39 | return OpenAuth.AuthenticationClients.GetAll(); 40 | } 41 | 42 | } 43 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/OpenAuthProviders.ascx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account 11 | { 12 | 13 | 14 | public partial class OpenAuthProviders 15 | { 16 | 17 | /// 18 | /// providerDetails control. 19 | /// 20 | /// 21 | /// Auto-generated field. 22 | /// To modify move field declaration from designer file to code-behind file. 23 | /// 24 | protected global::System.Web.UI.WebControls.ListView providerDetails; 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Register.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="Register" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Register.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account.Register" %> 2 | 3 | 4 |
5 |

<%: Title %>.

6 |

Use the form below to create a new account.

7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |

18 | Passwords are required to be a minimum of <%: Membership.MinRequiredPasswordLength %> characters in length. 19 |

20 | 21 |

22 | 23 |

24 | 25 |
26 | Registration Form 27 |
    28 |
  1. 29 | User name 30 | 31 | 33 |
  2. 34 |
  3. 35 | Email address 36 | 37 | 39 |
  4. 40 |
  5. 41 | Password 42 | 43 | 45 |
  6. 46 |
  7. 47 | Confirm password 48 | 49 | 51 | 53 |
  8. 54 |
55 | 56 |
57 |
58 | 59 |
60 |
61 |
62 |
-------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Register.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Security; 6 | using System.Web.UI; 7 | using System.Web.UI.WebControls; 8 | using Microsoft.AspNet.Membership.OpenAuth; 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account 11 | { 12 | public partial class Register : Page 13 | { 14 | protected void Page_Load(object sender, EventArgs e) 15 | { 16 | RegisterUser.ContinueDestinationPageUrl = Request.QueryString["ReturnUrl"]; 17 | } 18 | 19 | protected void RegisterUser_CreatedUser(object sender, EventArgs e) 20 | { 21 | FormsAuthentication.SetAuthCookie(RegisterUser.UserName, createPersistentCookie: false); 22 | 23 | string continueUrl = RegisterUser.ContinueDestinationPageUrl; 24 | if (!OpenAuth.IsLocalUrl(continueUrl)) 25 | { 26 | continueUrl = "~/"; 27 | } 28 | Response.Redirect(continueUrl); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Register.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account 11 | { 12 | 13 | 14 | public partial class Register 15 | { 16 | 17 | /// 18 | /// RegisterUser control. 19 | /// 20 | /// 21 | /// Auto-generated field. 22 | /// To modify move field declaration from designer file to code-behind file. 23 | /// 24 | protected global::System.Web.UI.WebControls.CreateUserWizard RegisterUser; 25 | 26 | /// 27 | /// RegisterUserWizardStep control. 28 | /// 29 | /// 30 | /// Auto-generated field. 31 | /// To modify move field declaration from designer file to code-behind file. 32 | /// 33 | protected global::System.Web.UI.WebControls.CreateUserWizardStep RegisterUserWizardStep; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/RegisterExternalLogin.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Language="C#" Title="Register an external login" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="RegisterExternalLogin.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account.RegisterExternalLogin" %> 2 | 3 |
4 |

Register with your <%: ProviderDisplayName %> account

5 |

<%: ProviderUserName %>.

6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | Association Form 15 |

16 | You've authenticated with <%: ProviderDisplayName %> as 17 | <%: ProviderUserName %>. Please enter a user name below for the current site 18 | and click the Log in button. 19 |

20 |
    21 | 30 |
31 | 32 | 33 |
34 |
35 |
36 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/RegisterExternalLogin.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web; 3 | using System.Web.Security; 4 | using DotNetOpenAuth.AspNet; 5 | using Microsoft.AspNet.Membership.OpenAuth; 6 | 7 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account 8 | { 9 | public partial class RegisterExternalLogin : System.Web.UI.Page 10 | { 11 | protected string ProviderName 12 | { 13 | get { return (string)ViewState["ProviderName"] ?? String.Empty; } 14 | private set { ViewState["ProviderName"] = value; } 15 | } 16 | 17 | protected string ProviderDisplayName 18 | { 19 | get { return (string)ViewState["ProviderDisplayName"] ?? String.Empty; } 20 | private set { ViewState["ProviderDisplayName"] = value; } 21 | } 22 | 23 | protected string ProviderUserId 24 | { 25 | get { return (string)ViewState["ProviderUserId"] ?? String.Empty; } 26 | private set { ViewState["ProviderUserId"] = value; } 27 | } 28 | 29 | protected string ProviderUserName 30 | { 31 | get { return (string)ViewState["ProviderUserName"] ?? String.Empty; } 32 | private set { ViewState["ProviderUserName"] = value; } 33 | } 34 | 35 | protected void Page_Load() 36 | { 37 | if (!IsPostBack) 38 | { 39 | ProcessProviderResult(); 40 | } 41 | } 42 | 43 | protected void logIn_Click(object sender, EventArgs e) 44 | { 45 | CreateAndLoginUser(); 46 | } 47 | 48 | protected void cancel_Click(object sender, EventArgs e) 49 | { 50 | RedirectToReturnUrl(); 51 | } 52 | 53 | private void ProcessProviderResult() 54 | { 55 | // Process the result from an auth provider in the request 56 | ProviderName = OpenAuth.GetProviderNameFromCurrentRequest(); 57 | 58 | if (String.IsNullOrEmpty(ProviderName)) 59 | { 60 | Response.Redirect(FormsAuthentication.LoginUrl); 61 | } 62 | 63 | // Build the redirect url for OpenAuth verification 64 | var redirectUrl = "~/Account/RegisterExternalLogin"; 65 | var returnUrl = Request.QueryString["ReturnUrl"]; 66 | if (!String.IsNullOrEmpty(returnUrl)) 67 | { 68 | redirectUrl += "?ReturnUrl=" + HttpUtility.UrlEncode(returnUrl); 69 | } 70 | 71 | // Verify the OpenAuth payload 72 | var authResult = OpenAuth.VerifyAuthentication(redirectUrl); 73 | ProviderDisplayName = OpenAuth.GetProviderDisplayName(ProviderName); 74 | if (!authResult.IsSuccessful) 75 | { 76 | Title = "External login failed"; 77 | userNameForm.Visible = false; 78 | 79 | ModelState.AddModelError("Provider", String.Format("External login {0} failed.", ProviderDisplayName)); 80 | 81 | // To view this error, enable page tracing in web.config () and visit ~/Trace.axd 82 | Trace.Warn("OpenAuth", String.Format("There was an error verifying authentication with {0})", ProviderDisplayName), authResult.Error); 83 | return; 84 | } 85 | 86 | // User has logged in with provider successfully 87 | // Check if user is already registered locally 88 | if (OpenAuth.Login(authResult.Provider, authResult.ProviderUserId, createPersistentCookie: false)) 89 | { 90 | RedirectToReturnUrl(); 91 | } 92 | 93 | // Store the provider details in ViewState 94 | ProviderName = authResult.Provider; 95 | ProviderUserId = authResult.ProviderUserId; 96 | ProviderUserName = authResult.UserName; 97 | 98 | // Strip the query string from action 99 | Form.Action = ResolveUrl(redirectUrl); 100 | 101 | if (User.Identity.IsAuthenticated) 102 | { 103 | // User is already authenticated, add the external login and redirect to return url 104 | OpenAuth.AddAccountToExistingUser(ProviderName, ProviderUserId, ProviderUserName, User.Identity.Name); 105 | RedirectToReturnUrl(); 106 | } 107 | else 108 | { 109 | // User is new, ask for their desired membership name 110 | userName.Text = authResult.UserName; 111 | } 112 | } 113 | 114 | private void CreateAndLoginUser() 115 | { 116 | if (!IsValid) 117 | { 118 | return; 119 | } 120 | 121 | var createResult = OpenAuth.CreateUser(ProviderName, ProviderUserId, ProviderUserName, userName.Text); 122 | if (!createResult.IsSuccessful) 123 | { 124 | 125 | ModelState.AddModelError("UserName", createResult.ErrorMessage); 126 | 127 | } 128 | else 129 | { 130 | // User created & associated OK 131 | if (OpenAuth.Login(ProviderName, ProviderUserId, createPersistentCookie: false)) 132 | { 133 | RedirectToReturnUrl(); 134 | } 135 | } 136 | } 137 | 138 | private void RedirectToReturnUrl() 139 | { 140 | var returnUrl = Request.QueryString["ReturnUrl"]; 141 | if (!String.IsNullOrEmpty(returnUrl) && OpenAuth.IsLocalUrl(returnUrl)) 142 | { 143 | Response.Redirect(returnUrl); 144 | } 145 | else 146 | { 147 | Response.Redirect("~/"); 148 | } 149 | } 150 | } 151 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/RegisterExternalLogin.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Account 11 | { 12 | 13 | 14 | public partial class RegisterExternalLogin 15 | { 16 | 17 | 18 | 19 | /// 20 | /// userNameForm control. 21 | /// 22 | /// 23 | /// Auto-generated field. 24 | /// To modify move field declaration from designer file to code-behind file. 25 | /// 26 | protected global::System.Web.UI.WebControls.PlaceHolder userNameForm; 27 | 28 | /// 29 | /// userName control. 30 | /// 31 | /// 32 | /// Auto-generated field. 33 | /// To modify move field declaration from designer file to code-behind file. 34 | /// 35 | protected global::System.Web.UI.WebControls.TextBox userName; 36 | 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Account/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/App_Data/aspnet-IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.mdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/App_Data/aspnet-IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.mdf -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/App_Data/aspnet-IppDotNetSdkQuickBooksApiV3SampleWebFormsApp_log.ldf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/App_Data/aspnet-IppDotNetSdkQuickBooksApiV3SampleWebFormsApp_log.ldf -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/App_Start/AuthConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using Microsoft.AspNet.Membership.OpenAuth; 6 | 7 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 8 | { 9 | internal static class AuthConfig 10 | { 11 | public static void RegisterOpenAuth() 12 | { 13 | // See http://go.microsoft.com/fwlink/?LinkId=252803 for details on setting up this ASP.NET 14 | // application to support logging in via external services. 15 | 16 | //OpenAuth.AuthenticationClients.AddTwitter( 17 | // consumerKey: "your Twitter consumer key", 18 | // consumerSecret: "your Twitter consumer secret"); 19 | 20 | //OpenAuth.AuthenticationClients.AddFacebook( 21 | // appId: "your Facebook app id", 22 | // appSecret: "your Facebook app secret"); 23 | 24 | //OpenAuth.AuthenticationClients.AddMicrosoft( 25 | // clientId: "your Microsoft account client id", 26 | // clientSecret: "your Microsoft account client secret"); 27 | 28 | //OpenAuth.AuthenticationClients.AddGoogle(); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/App_Start/BundleConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Optimization; 6 | 7 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 8 | { 9 | public class BundleConfig 10 | { 11 | // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254726 12 | public static void RegisterBundles(BundleCollection bundles) 13 | { 14 | bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include( 15 | "~/Scripts/WebForms/WebForms.js", 16 | "~/Scripts/WebForms/WebUIValidation.js", 17 | "~/Scripts/WebForms/MenuStandards.js", 18 | "~/Scripts/WebForms/Focus.js", 19 | "~/Scripts/WebForms/GridView.js", 20 | "~/Scripts/WebForms/DetailsView.js", 21 | "~/Scripts/WebForms/TreeView.js", 22 | "~/Scripts/WebForms/WebParts.js")); 23 | 24 | bundles.Add(new ScriptBundle("~/bundles/MsAjaxJs").Include( 25 | "~/Scripts/WebForms/MsAjax/MicrosoftAjax.js", 26 | "~/Scripts/WebForms/MsAjax/MicrosoftAjaxApplicationServices.js", 27 | "~/Scripts/WebForms/MsAjax/MicrosoftAjaxTimer.js", 28 | "~/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js")); 29 | 30 | // Use the Development version of Modernizr to develop with and learn from. Then, when you’re 31 | // ready for production, use the build tool at http://modernizr.com to pick only the tests you need 32 | bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( 33 | "~/Scripts/modernizr-*")); 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/App_Start/RouteConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Web; 4 | using System.Web.Routing; 5 | using Microsoft.AspNet.FriendlyUrls; 6 | 7 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 8 | { 9 | public static class RouteConfig 10 | { 11 | public static void RegisterRoutes(RouteCollection routes) 12 | { 13 | var settings = new FriendlyUrlSettings(); 14 | settings.AutoRedirectMode = RedirectMode.Permanent; 15 | routes.EnableFriendlyUrls(settings); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/ApplicationKeys.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="Edit the Web.config" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ApplicationKeys.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.ApplicationKeys" %> 2 | 3 | 4 |
5 |

<%: Title %>.

6 |

Set your app keys.

7 |
8 |

9 | These keys are displayed when you create your IPP application. 10 |

11 |
12 |
13 |
14 |

Set your App Tokens and Keys

15 |
16 |

17 | Copy your application token, consumer key and consumer secret from your development settings on developer.intuit.com to this applications's web.config file under configuration/appsettings. 18 |

19 |
20 |

21 | 22 |

23 |
24 | 33 |
34 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/ApplicationKeys.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.UI; 6 | using System.Web.UI.WebControls; 7 | 8 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 9 | { 10 | public partial class ApplicationKeys : System.Web.UI.Page 11 | { 12 | protected void Page_Load(object sender, EventArgs e) 13 | { 14 | 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/ApplicationKeys.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp { 11 | 12 | 13 | public partial class ApplicationKeys { 14 | 15 | /// 16 | /// A1 control. 17 | /// 18 | /// 19 | /// Auto-generated field. 20 | /// To modify move field declaration from designer file to code-behind file. 21 | /// 22 | protected global::System.Web.UI.HtmlControls.HtmlAnchor A1; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Bundle.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Configure.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="Configure Your App Profile" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Configure.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Configure" %> 2 | 3 | 4 |
5 |

<%: Title %>.

6 |

Subscribe to and launch this sample app.

7 |
8 |

9 | These configuration settings are only required if you are testing the link between the application and Intuit's App Center. Examples include testing the subscription (TryBuy) flow, launching and disconnecting the application from Intuit's App Center. 10 |

11 |
12 |
13 |
14 |

Host Name Domain

15 |
16 |

17 | example.com 18 |

19 |
20 |
21 |
22 |

App URL

23 |
24 |

25 | https://localhost:62288/OpenID/Connect.aspx 26 |

27 |
28 |
29 |
30 |

Disconnect Landing URL

31 |
32 |

33 | https://localhost:62288/OpenID/Connect.aspx?Disconnect=true 34 |

35 |
36 |
37 |
38 |

Manage Users URL

39 |
40 |

41 | https://localhost:62288/OpenID/Connect.aspx?Manage=true 42 |

43 |
44 |
45 |
46 |

OpenID URL

47 |
48 |

49 | https://localhost:62288/OpenID/Connect.aspx?Subscribe=true 50 |

51 |
52 |
53 |
54 |

Data Source

55 |
56 |

57 | Choose QuickBooks Online.

58 |
59 | 60 |
61 | 70 |
71 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Configure.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.UI; 6 | using System.Web.UI.WebControls; 7 | 8 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 9 | { 10 | public partial class Configure : System.Web.UI.Page 11 | { 12 | protected void Page_Load(object sender, EventArgs e) 13 | { 14 | 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Configure.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp { 11 | 12 | 13 | public partial class Configure { 14 | 15 | /// 16 | /// A1 control. 17 | /// 18 | /// 19 | /// Auto-generated field. 20 | /// To modify move field declaration from designer file to code-behind file. 21 | /// 22 | protected global::System.Web.UI.HtmlControls.HtmlAnchor A1; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/accordion.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Accordion 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/accordion/#theming 10 | */ 11 | .ui-accordion .ui-accordion-header { 12 | display: block; 13 | cursor: pointer; 14 | position: relative; 15 | margin: 2px 0 0 0; 16 | padding: .5em .5em .5em .7em; 17 | min-height: 0; /* support: IE7 */ 18 | font-size: 100%; 19 | } 20 | .ui-accordion .ui-accordion-icons { 21 | padding-left: 2.2em; 22 | } 23 | .ui-accordion .ui-accordion-icons .ui-accordion-icons { 24 | padding-left: 2.2em; 25 | } 26 | .ui-accordion .ui-accordion-header .ui-accordion-header-icon { 27 | position: absolute; 28 | left: .5em; 29 | top: 50%; 30 | margin-top: -8px; 31 | } 32 | .ui-accordion .ui-accordion-content { 33 | padding: 1em 2.2em; 34 | border-top: 0; 35 | overflow: auto; 36 | } 37 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/all.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/category/theming/ 10 | */ 11 | @import "base.css"; 12 | @import "theme.css"; 13 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/autocomplete.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Autocomplete 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/autocomplete/#theming 10 | */ 11 | .ui-autocomplete { 12 | position: absolute; 13 | top: 0; 14 | left: 0; 15 | cursor: default; 16 | } 17 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/base.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/category/theming/ 10 | */ 11 | @import url("core.css"); 12 | 13 | @import url("accordion.css"); 14 | @import url("autocomplete.css"); 15 | @import url("button.css"); 16 | @import url("datepicker.css"); 17 | @import url("dialog.css"); 18 | @import url("draggable.css"); 19 | @import url("menu.css"); 20 | @import url("progressbar.css"); 21 | @import url("resizable.css"); 22 | @import url("selectable.css"); 23 | @import url("selectmenu.css"); 24 | @import url("sortable.css"); 25 | @import url("slider.css"); 26 | @import url("spinner.css"); 27 | @import url("tabs.css"); 28 | @import url("tooltip.css"); 29 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/button.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Button 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/button/#theming 10 | */ 11 | .ui-button { 12 | display: inline-block; 13 | position: relative; 14 | padding: 0; 15 | line-height: normal; 16 | margin-right: .1em; 17 | cursor: pointer; 18 | vertical-align: middle; 19 | text-align: center; 20 | overflow: visible; /* removes extra width in IE */ 21 | } 22 | .ui-button, 23 | .ui-button:link, 24 | .ui-button:visited, 25 | .ui-button:hover, 26 | .ui-button:active { 27 | text-decoration: none; 28 | } 29 | /* to make room for the icon, a width needs to be set here */ 30 | .ui-button-icon-only { 31 | width: 2.2em; 32 | } 33 | /* button elements seem to need a little more width */ 34 | button.ui-button-icon-only { 35 | width: 2.4em; 36 | } 37 | .ui-button-icons-only { 38 | width: 3.4em; 39 | } 40 | button.ui-button-icons-only { 41 | width: 3.7em; 42 | } 43 | 44 | /* button text element */ 45 | .ui-button .ui-button-text { 46 | display: block; 47 | line-height: normal; 48 | } 49 | .ui-button-text-only .ui-button-text { 50 | padding: .4em 1em; 51 | } 52 | .ui-button-icon-only .ui-button-text, 53 | .ui-button-icons-only .ui-button-text { 54 | padding: .4em; 55 | text-indent: -9999999px; 56 | } 57 | .ui-button-text-icon-primary .ui-button-text, 58 | .ui-button-text-icons .ui-button-text { 59 | padding: .4em 1em .4em 2.1em; 60 | } 61 | .ui-button-text-icon-secondary .ui-button-text, 62 | .ui-button-text-icons .ui-button-text { 63 | padding: .4em 2.1em .4em 1em; 64 | } 65 | .ui-button-text-icons .ui-button-text { 66 | padding-left: 2.1em; 67 | padding-right: 2.1em; 68 | } 69 | /* no icon support for input elements, provide padding by default */ 70 | input.ui-button { 71 | padding: .4em 1em; 72 | } 73 | 74 | /* button icon element(s) */ 75 | .ui-button-icon-only .ui-icon, 76 | .ui-button-text-icon-primary .ui-icon, 77 | .ui-button-text-icon-secondary .ui-icon, 78 | .ui-button-text-icons .ui-icon, 79 | .ui-button-icons-only .ui-icon { 80 | position: absolute; 81 | top: 50%; 82 | margin-top: -8px; 83 | } 84 | .ui-button-icon-only .ui-icon { 85 | left: 50%; 86 | margin-left: -8px; 87 | } 88 | .ui-button-text-icon-primary .ui-button-icon-primary, 89 | .ui-button-text-icons .ui-button-icon-primary, 90 | .ui-button-icons-only .ui-button-icon-primary { 91 | left: .5em; 92 | } 93 | .ui-button-text-icon-secondary .ui-button-icon-secondary, 94 | .ui-button-text-icons .ui-button-icon-secondary, 95 | .ui-button-icons-only .ui-button-icon-secondary { 96 | right: .5em; 97 | } 98 | 99 | /* button sets */ 100 | .ui-buttonset { 101 | margin-right: 7px; 102 | } 103 | .ui-buttonset .ui-button { 104 | margin-left: 0; 105 | margin-right: -.3em; 106 | } 107 | 108 | /* workarounds */ 109 | /* reset extra padding in Firefox, see h5bp.com/l */ 110 | input.ui-button::-moz-focus-inner, 111 | button.ui-button::-moz-focus-inner { 112 | border: 0; 113 | padding: 0; 114 | } 115 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/core.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/category/theming/ 10 | */ 11 | 12 | /* Layout helpers 13 | ----------------------------------*/ 14 | .ui-helper-hidden { 15 | display: none; 16 | } 17 | .ui-helper-hidden-accessible { 18 | border: 0; 19 | clip: rect(0 0 0 0); 20 | height: 1px; 21 | margin: -1px; 22 | overflow: hidden; 23 | padding: 0; 24 | position: absolute; 25 | width: 1px; 26 | } 27 | .ui-helper-reset { 28 | margin: 0; 29 | padding: 0; 30 | border: 0; 31 | outline: 0; 32 | line-height: 1.3; 33 | text-decoration: none; 34 | font-size: 100%; 35 | list-style: none; 36 | } 37 | .ui-helper-clearfix:before, 38 | .ui-helper-clearfix:after { 39 | content: ""; 40 | display: table; 41 | border-collapse: collapse; 42 | } 43 | .ui-helper-clearfix:after { 44 | clear: both; 45 | } 46 | .ui-helper-clearfix { 47 | min-height: 0; /* support: IE7 */ 48 | } 49 | .ui-helper-zfix { 50 | width: 100%; 51 | height: 100%; 52 | top: 0; 53 | left: 0; 54 | position: absolute; 55 | opacity: 0; 56 | filter:Alpha(Opacity=0); /* support: IE8 */ 57 | } 58 | 59 | .ui-front { 60 | z-index: 100; 61 | } 62 | 63 | 64 | /* Interaction Cues 65 | ----------------------------------*/ 66 | .ui-state-disabled { 67 | cursor: default !important; 68 | } 69 | 70 | 71 | /* Icons 72 | ----------------------------------*/ 73 | 74 | /* states and images */ 75 | .ui-icon { 76 | display: block; 77 | text-indent: -99999px; 78 | overflow: hidden; 79 | background-repeat: no-repeat; 80 | } 81 | 82 | 83 | /* Misc visuals 84 | ----------------------------------*/ 85 | 86 | /* Overlays */ 87 | .ui-widget-overlay { 88 | position: fixed; 89 | top: 0; 90 | left: 0; 91 | width: 100%; 92 | height: 100%; 93 | } 94 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/datepicker.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Datepicker 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/datepicker/#theming 10 | */ 11 | .ui-datepicker { 12 | width: 17em; 13 | padding: .2em .2em 0; 14 | display: none; 15 | } 16 | .ui-datepicker .ui-datepicker-header { 17 | position: relative; 18 | padding: .2em 0; 19 | } 20 | .ui-datepicker .ui-datepicker-prev, 21 | .ui-datepicker .ui-datepicker-next { 22 | position: absolute; 23 | top: 2px; 24 | width: 1.8em; 25 | height: 1.8em; 26 | } 27 | .ui-datepicker .ui-datepicker-prev-hover, 28 | .ui-datepicker .ui-datepicker-next-hover { 29 | top: 1px; 30 | } 31 | .ui-datepicker .ui-datepicker-prev { 32 | left: 2px; 33 | } 34 | .ui-datepicker .ui-datepicker-next { 35 | right: 2px; 36 | } 37 | .ui-datepicker .ui-datepicker-prev-hover { 38 | left: 1px; 39 | } 40 | .ui-datepicker .ui-datepicker-next-hover { 41 | right: 1px; 42 | } 43 | .ui-datepicker .ui-datepicker-prev span, 44 | .ui-datepicker .ui-datepicker-next span { 45 | display: block; 46 | position: absolute; 47 | left: 50%; 48 | margin-left: -8px; 49 | top: 50%; 50 | margin-top: -8px; 51 | } 52 | .ui-datepicker .ui-datepicker-title { 53 | margin: 0 2.3em; 54 | line-height: 1.8em; 55 | text-align: center; 56 | } 57 | .ui-datepicker .ui-datepicker-title select { 58 | font-size: 1em; 59 | margin: 1px 0; 60 | } 61 | .ui-datepicker select.ui-datepicker-month, 62 | .ui-datepicker select.ui-datepicker-year { 63 | width: 45%; 64 | } 65 | .ui-datepicker table { 66 | width: 100%; 67 | font-size: .9em; 68 | border-collapse: collapse; 69 | margin: 0 0 .4em; 70 | } 71 | .ui-datepicker th { 72 | padding: .7em .3em; 73 | text-align: center; 74 | font-weight: bold; 75 | border: 0; 76 | } 77 | .ui-datepicker td { 78 | border: 0; 79 | padding: 1px; 80 | } 81 | .ui-datepicker td span, 82 | .ui-datepicker td a { 83 | display: block; 84 | padding: .2em; 85 | text-align: right; 86 | text-decoration: none; 87 | } 88 | .ui-datepicker .ui-datepicker-buttonpane { 89 | background-image: none; 90 | margin: .7em 0 0 0; 91 | padding: 0 .2em; 92 | border-left: 0; 93 | border-right: 0; 94 | border-bottom: 0; 95 | } 96 | .ui-datepicker .ui-datepicker-buttonpane button { 97 | float: right; 98 | margin: .5em .2em .4em; 99 | cursor: pointer; 100 | padding: .2em .6em .3em .6em; 101 | width: auto; 102 | overflow: visible; 103 | } 104 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { 105 | float: left; 106 | } 107 | 108 | /* with multiple calendars */ 109 | .ui-datepicker.ui-datepicker-multi { 110 | width: auto; 111 | } 112 | .ui-datepicker-multi .ui-datepicker-group { 113 | float: left; 114 | } 115 | .ui-datepicker-multi .ui-datepicker-group table { 116 | width: 95%; 117 | margin: 0 auto .4em; 118 | } 119 | .ui-datepicker-multi-2 .ui-datepicker-group { 120 | width: 50%; 121 | } 122 | .ui-datepicker-multi-3 .ui-datepicker-group { 123 | width: 33.3%; 124 | } 125 | .ui-datepicker-multi-4 .ui-datepicker-group { 126 | width: 25%; 127 | } 128 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, 129 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { 130 | border-left-width: 0; 131 | } 132 | .ui-datepicker-multi .ui-datepicker-buttonpane { 133 | clear: left; 134 | } 135 | .ui-datepicker-row-break { 136 | clear: both; 137 | width: 100%; 138 | font-size: 0; 139 | } 140 | 141 | /* RTL support */ 142 | .ui-datepicker-rtl { 143 | direction: rtl; 144 | } 145 | .ui-datepicker-rtl .ui-datepicker-prev { 146 | right: 2px; 147 | left: auto; 148 | } 149 | .ui-datepicker-rtl .ui-datepicker-next { 150 | left: 2px; 151 | right: auto; 152 | } 153 | .ui-datepicker-rtl .ui-datepicker-prev:hover { 154 | right: 1px; 155 | left: auto; 156 | } 157 | .ui-datepicker-rtl .ui-datepicker-next:hover { 158 | left: 1px; 159 | right: auto; 160 | } 161 | .ui-datepicker-rtl .ui-datepicker-buttonpane { 162 | clear: right; 163 | } 164 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { 165 | float: left; 166 | } 167 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, 168 | .ui-datepicker-rtl .ui-datepicker-group { 169 | float: right; 170 | } 171 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, 172 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { 173 | border-right-width: 0; 174 | border-left-width: 1px; 175 | } 176 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/dialog.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Dialog 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/dialog/#theming 10 | */ 11 | .ui-dialog { 12 | overflow: hidden; 13 | position: absolute; 14 | top: 0; 15 | left: 0; 16 | padding: .2em; 17 | outline: 0; 18 | } 19 | .ui-dialog .ui-dialog-titlebar { 20 | padding: .4em 1em; 21 | position: relative; 22 | } 23 | .ui-dialog .ui-dialog-title { 24 | float: left; 25 | margin: .1em 0; 26 | white-space: nowrap; 27 | width: 90%; 28 | overflow: hidden; 29 | text-overflow: ellipsis; 30 | } 31 | .ui-dialog .ui-dialog-titlebar-close { 32 | position: absolute; 33 | right: .3em; 34 | top: 50%; 35 | width: 20px; 36 | margin: -10px 0 0 0; 37 | padding: 1px; 38 | height: 20px; 39 | } 40 | .ui-dialog .ui-dialog-content { 41 | position: relative; 42 | border: 0; 43 | padding: .5em 1em; 44 | background: none; 45 | overflow: auto; 46 | } 47 | .ui-dialog .ui-dialog-buttonpane { 48 | text-align: left; 49 | border-width: 1px 0 0 0; 50 | background-image: none; 51 | margin-top: .5em; 52 | padding: .3em 1em .5em .4em; 53 | } 54 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { 55 | float: right; 56 | } 57 | .ui-dialog .ui-dialog-buttonpane button { 58 | margin: .5em .4em .5em 0; 59 | cursor: pointer; 60 | } 61 | .ui-dialog .ui-resizable-se { 62 | width: 12px; 63 | height: 12px; 64 | right: -5px; 65 | bottom: -5px; 66 | background-position: 16px 16px; 67 | } 68 | .ui-draggable .ui-dialog-titlebar { 69 | cursor: move; 70 | } 71 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/draggable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Draggable 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | */ 9 | .ui-draggable-handle { 10 | -ms-touch-action: none; 11 | touch-action: none; 12 | } 13 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_444444_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_444444_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_555555_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_555555_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_777620_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_777620_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_777777_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_777777_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_cc0000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_cc0000_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/menu.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Menu 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/menu/#theming 10 | */ 11 | .ui-menu { 12 | list-style: none; 13 | padding: 0; 14 | margin: 0; 15 | display: block; 16 | outline: none; 17 | } 18 | .ui-menu .ui-menu { 19 | position: absolute; 20 | } 21 | .ui-menu .ui-menu-item { 22 | position: relative; 23 | margin: 0; 24 | padding: 3px 1em 3px .4em; 25 | cursor: pointer; 26 | min-height: 0; /* support: IE7 */ 27 | /* support: IE10, see #8844 */ 28 | list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); 29 | } 30 | .ui-menu .ui-menu-divider { 31 | margin: 5px 0; 32 | height: 0; 33 | font-size: 0; 34 | line-height: 0; 35 | border-width: 1px 0 0 0; 36 | } 37 | .ui-menu .ui-state-focus, 38 | .ui-menu .ui-state-active { 39 | margin: -1px; 40 | } 41 | 42 | /* icon support */ 43 | .ui-menu-icons { 44 | position: relative; 45 | } 46 | .ui-menu-icons .ui-menu-item { 47 | padding-left: 2em; 48 | } 49 | 50 | /* left-aligned */ 51 | .ui-menu .ui-icon { 52 | position: absolute; 53 | top: 0; 54 | bottom: 0; 55 | left: .2em; 56 | margin: auto 0; 57 | } 58 | 59 | /* right-aligned */ 60 | .ui-menu .ui-menu-icon { 61 | left: auto; 62 | right: 0; 63 | } 64 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/progressbar.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Progressbar 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/progressbar/#theming 10 | */ 11 | .ui-progressbar { 12 | height: 2em; 13 | text-align: left; 14 | overflow: hidden; 15 | } 16 | .ui-progressbar .ui-progressbar-value { 17 | margin: -1px; 18 | height: 100%; 19 | } 20 | .ui-progressbar .ui-progressbar-overlay { 21 | background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); 22 | height: 100%; 23 | filter: alpha(opacity=25); /* support: IE8 */ 24 | opacity: 0.25; 25 | } 26 | .ui-progressbar-indeterminate .ui-progressbar-value { 27 | background-image: none; 28 | } 29 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/resizable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Resizable 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | */ 9 | .ui-resizable { 10 | position: relative; 11 | } 12 | .ui-resizable-handle { 13 | position: absolute; 14 | font-size: 0.1px; 15 | display: block; 16 | -ms-touch-action: none; 17 | touch-action: none; 18 | } 19 | .ui-resizable-disabled .ui-resizable-handle, 20 | .ui-resizable-autohide .ui-resizable-handle { 21 | display: none; 22 | } 23 | .ui-resizable-n { 24 | cursor: n-resize; 25 | height: 7px; 26 | width: 100%; 27 | top: -5px; 28 | left: 0; 29 | } 30 | .ui-resizable-s { 31 | cursor: s-resize; 32 | height: 7px; 33 | width: 100%; 34 | bottom: -5px; 35 | left: 0; 36 | } 37 | .ui-resizable-e { 38 | cursor: e-resize; 39 | width: 7px; 40 | right: -5px; 41 | top: 0; 42 | height: 100%; 43 | } 44 | .ui-resizable-w { 45 | cursor: w-resize; 46 | width: 7px; 47 | left: -5px; 48 | top: 0; 49 | height: 100%; 50 | } 51 | .ui-resizable-se { 52 | cursor: se-resize; 53 | width: 12px; 54 | height: 12px; 55 | right: 1px; 56 | bottom: 1px; 57 | } 58 | .ui-resizable-sw { 59 | cursor: sw-resize; 60 | width: 9px; 61 | height: 9px; 62 | left: -5px; 63 | bottom: -5px; 64 | } 65 | .ui-resizable-nw { 66 | cursor: nw-resize; 67 | width: 9px; 68 | height: 9px; 69 | left: -5px; 70 | top: -5px; 71 | } 72 | .ui-resizable-ne { 73 | cursor: ne-resize; 74 | width: 9px; 75 | height: 9px; 76 | right: -5px; 77 | top: -5px; 78 | } 79 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/selectable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Selectable 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | */ 9 | .ui-selectable { 10 | -ms-touch-action: none; 11 | touch-action: none; 12 | } 13 | .ui-selectable-helper { 14 | position: absolute; 15 | z-index: 100; 16 | border: 1px dotted black; 17 | } 18 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/selectmenu.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Selectmenu 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/selectmenu/#theming 10 | */ 11 | .ui-selectmenu-menu { 12 | padding: 0; 13 | margin: 0; 14 | position: absolute; 15 | top: 0; 16 | left: 0; 17 | display: none; 18 | } 19 | .ui-selectmenu-menu .ui-menu { 20 | overflow: auto; 21 | /* Support: IE7 */ 22 | overflow-x: hidden; 23 | padding-bottom: 1px; 24 | } 25 | .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { 26 | font-size: 1em; 27 | font-weight: bold; 28 | line-height: 1.5; 29 | padding: 2px 0.4em; 30 | margin: 0.5em 0 0 0; 31 | height: auto; 32 | border: 0; 33 | } 34 | .ui-selectmenu-open { 35 | display: block; 36 | } 37 | .ui-selectmenu-button { 38 | display: inline-block; 39 | overflow: hidden; 40 | position: relative; 41 | text-decoration: none; 42 | cursor: pointer; 43 | } 44 | .ui-selectmenu-button span.ui-icon { 45 | right: 0.5em; 46 | left: auto; 47 | margin-top: -8px; 48 | position: absolute; 49 | top: 50%; 50 | } 51 | .ui-selectmenu-button span.ui-selectmenu-text { 52 | text-align: left; 53 | padding: 0.4em 2.1em 0.4em 1em; 54 | display: block; 55 | line-height: 1.4; 56 | overflow: hidden; 57 | text-overflow: ellipsis; 58 | white-space: nowrap; 59 | } 60 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/slider.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Slider 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/slider/#theming 10 | */ 11 | .ui-slider { 12 | position: relative; 13 | text-align: left; 14 | } 15 | .ui-slider .ui-slider-handle { 16 | position: absolute; 17 | z-index: 2; 18 | width: 1.2em; 19 | height: 1.2em; 20 | cursor: default; 21 | -ms-touch-action: none; 22 | touch-action: none; 23 | } 24 | .ui-slider .ui-slider-range { 25 | position: absolute; 26 | z-index: 1; 27 | font-size: .7em; 28 | display: block; 29 | border: 0; 30 | background-position: 0 0; 31 | } 32 | 33 | /* support: IE8 - See #6727 */ 34 | .ui-slider.ui-state-disabled .ui-slider-handle, 35 | .ui-slider.ui-state-disabled .ui-slider-range { 36 | filter: inherit; 37 | } 38 | 39 | .ui-slider-horizontal { 40 | height: .8em; 41 | } 42 | .ui-slider-horizontal .ui-slider-handle { 43 | top: -.3em; 44 | margin-left: -.6em; 45 | } 46 | .ui-slider-horizontal .ui-slider-range { 47 | top: 0; 48 | height: 100%; 49 | } 50 | .ui-slider-horizontal .ui-slider-range-min { 51 | left: 0; 52 | } 53 | .ui-slider-horizontal .ui-slider-range-max { 54 | right: 0; 55 | } 56 | 57 | .ui-slider-vertical { 58 | width: .8em; 59 | height: 100px; 60 | } 61 | .ui-slider-vertical .ui-slider-handle { 62 | left: -.3em; 63 | margin-left: 0; 64 | margin-bottom: -.6em; 65 | } 66 | .ui-slider-vertical .ui-slider-range { 67 | left: 0; 68 | width: 100%; 69 | } 70 | .ui-slider-vertical .ui-slider-range-min { 71 | bottom: 0; 72 | } 73 | .ui-slider-vertical .ui-slider-range-max { 74 | top: 0; 75 | } 76 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/sortable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Sortable 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | */ 9 | .ui-sortable-handle { 10 | -ms-touch-action: none; 11 | touch-action: none; 12 | } 13 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/spinner.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Spinner 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/spinner/#theming 10 | */ 11 | .ui-spinner { 12 | position: relative; 13 | display: inline-block; 14 | overflow: hidden; 15 | padding: 0; 16 | vertical-align: middle; 17 | } 18 | .ui-spinner-input { 19 | border: none; 20 | background: none; 21 | color: inherit; 22 | padding: 0; 23 | margin: .2em 0; 24 | vertical-align: middle; 25 | margin-left: .4em; 26 | margin-right: 22px; 27 | } 28 | .ui-spinner-button { 29 | width: 16px; 30 | height: 50%; 31 | font-size: .5em; 32 | padding: 0; 33 | margin: 0; 34 | text-align: center; 35 | position: absolute; 36 | cursor: default; 37 | display: block; 38 | overflow: hidden; 39 | right: 0; 40 | } 41 | /* more specificity required here to override default borders */ 42 | .ui-spinner a.ui-spinner-button { 43 | border-top: none; 44 | border-bottom: none; 45 | border-right: none; 46 | } 47 | /* vertically center icon */ 48 | .ui-spinner .ui-icon { 49 | position: absolute; 50 | margin-top: -8px; 51 | top: 50%; 52 | left: 0; 53 | } 54 | .ui-spinner-up { 55 | top: 0; 56 | } 57 | .ui-spinner-down { 58 | bottom: 0; 59 | } 60 | 61 | /* TR overrides */ 62 | .ui-spinner .ui-icon-triangle-1-s { 63 | /* need to fix icons sprite */ 64 | background-position: -65px -16px; 65 | } 66 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/tabs.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Tabs 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/tabs/#theming 10 | */ 11 | .ui-tabs { 12 | position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 13 | padding: .2em; 14 | } 15 | .ui-tabs .ui-tabs-nav { 16 | margin: 0; 17 | padding: .2em .2em 0; 18 | } 19 | .ui-tabs .ui-tabs-nav li { 20 | list-style: none; 21 | float: left; 22 | position: relative; 23 | top: 0; 24 | margin: 1px .2em 0 0; 25 | border-bottom-width: 0; 26 | padding: 0; 27 | white-space: nowrap; 28 | } 29 | .ui-tabs .ui-tabs-nav .ui-tabs-anchor { 30 | float: left; 31 | padding: .5em 1em; 32 | text-decoration: none; 33 | } 34 | .ui-tabs .ui-tabs-nav li.ui-tabs-active { 35 | margin-bottom: -1px; 36 | padding-bottom: 1px; 37 | } 38 | .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, 39 | .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, 40 | .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { 41 | cursor: text; 42 | } 43 | .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { 44 | cursor: pointer; 45 | } 46 | .ui-tabs .ui-tabs-panel { 47 | display: block; 48 | border-width: 0; 49 | padding: 1em 1.4em; 50 | background: none; 51 | } 52 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Content/themes/base/tooltip.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Tooltip 1.11.4 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/tooltip/#theming 10 | */ 11 | .ui-tooltip { 12 | padding: 8px; 13 | position: absolute; 14 | z-index: 9999; 15 | max-width: 300px; 16 | -webkit-box-shadow: 0 0 5px #aaa; 17 | box-shadow: 0 0 5px #aaa; 18 | } 19 | body .ui-tooltip { 20 | border-width: 2px; 21 | } 22 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/CustomerList.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="QuickBooks Customer List" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="CustomerList.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.CustomerList" %> 2 | 3 | 4 |
5 |

<%: Title %>.

6 |
7 |

8 | These customers are pulled from the QuickBooks REST APIs using the IPP .NET SDK. 9 |

10 |
11 |
12 | 13 | 14 | 15 | <%# Eval("DisplayName")%> 16 | <%# Eval("CompanyName")%> 17 | <%# Eval("Balance", "{0:c}")%> 18 | <%# Eval("TotalRevenue", "{0:c}")%> 19 | 20 | 21 | 22 | 23 | <%# Eval("DisplayName")%> 24 | <%# Eval("CompanyName")%> 25 | <%# Eval("Balance", "{0:c}")%> 26 | <%# Eval("TotalRevenue", "{0:c}")%> 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 58 | 59 | 60 |
Customer NameCompany NameBalanceTotal Revenue
46 |
47 | 48 | 49 | 54 | 55 | 56 |
57 |
61 |
62 |
63 |
64 |
65 | 76 |
77 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/CustomerList.aspx.cs: -------------------------------------------------------------------------------- 1 | using Intuit.Ipp.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Web; 6 | using System.Web.UI; 7 | using System.Web.UI.WebControls; 8 | 9 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 10 | { 11 | public partial class CustomerList : System.Web.UI.Page 12 | { 13 | protected void Page_Load(object sender, EventArgs e) 14 | { 15 | try 16 | { 17 | if (!System.Web.HttpContext.Current.User.Identity.IsAuthenticated || !RestHelper.appTokensSet() || RestProfile.GetRestProfile().OAuthAccessToken.Length == 0) 18 | { 19 | Response.Redirect("~/ManageConnection"); 20 | } 21 | customersView.DataSource = RestHelper.getCustomerList(RestProfile.GetRestProfile()); 22 | customersView.DataBind(); 23 | } 24 | catch 25 | { 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/CustomerList.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp { 11 | 12 | 13 | public partial class CustomerList { 14 | 15 | /// 16 | /// customersView control. 17 | /// 18 | /// 19 | /// Auto-generated field. 20 | /// To modify move field declaration from designer file to code-behind file. 21 | /// 22 | protected global::System.Web.UI.WebControls.ListView customersView; 23 | 24 | /// 25 | /// A1 control. 26 | /// 27 | /// 28 | /// Auto-generated field. 29 | /// To modify move field declaration from designer file to code-behind file. 30 | /// 31 | protected global::System.Web.UI.HtmlControls.HtmlAnchor A1; 32 | 33 | /// 34 | /// A4 control. 35 | /// 36 | /// 37 | /// Auto-generated field. 38 | /// To modify move field declaration from designer file to code-behind file. 39 | /// 40 | protected global::System.Web.UI.HtmlControls.HtmlAnchor A4; 41 | 42 | /// 43 | /// A2 control. 44 | /// 45 | /// 46 | /// Auto-generated field. 47 | /// To modify move field declaration from designer file to code-behind file. 48 | /// 49 | protected global::System.Web.UI.HtmlControls.HtmlAnchor A2; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Default.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp._Default" %> 2 | 3 | 4 | 14 | 15 | 16 |

Running this sample application:

17 |
    18 |
  1. 19 |
    Configure your IPP application
    20 | View the app settings required on developer.intuit.com to test subscription and connection flows. 21 |
  2. 22 |
  3. 23 |
    Set your keys
    24 | <% if (IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.RestHelper.appTokensSet()) 25 | { %> 26 | Your keys are set! 27 | <% } 28 | else 29 | { %> 30 | Set your application keys in the web.config. 31 | <% } %> 32 |
  4. 33 |
  5. 34 |
    Create or login to your account
    35 | <% if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) 36 | { %> 37 | You're signed in! 38 | <% } 39 | else 40 | { %> 41 | Sign In with Intuit or register for an account. 42 | <% } %> 43 |
  6. 44 |
  7. 45 |
    Authorize a connection
    46 | <% if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated && IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.RestHelper.appTokensSet() && IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.RestProfile.GetRestProfile().OAuthAccessToken.Length > 0) 47 | { %> 48 | You're connected! Manage your connection. 49 | <% } 50 | else 51 | { %> 52 | Connect a QuickBooks company file to this application. 53 | <% } %> 54 |
  8. 55 |
  9. 56 |
    Make calls to the QuickBooks APIs
    57 | Retrieve a list of customers from the connected QuickBooks company file (realm). 58 |
  10. 59 |
60 |
61 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Default.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.UI; 6 | using System.Web.UI.WebControls; 7 | 8 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 9 | { 10 | public partial class _Default : Page 11 | { 12 | protected void Page_Load(object sender, EventArgs e) 13 | { 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Default.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 11 | { 12 | 13 | 14 | public partial class _Default 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Global" Language="C#" %> 2 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Global.asax.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Optimization; 6 | using System.Web.Routing; 7 | using System.Web.Security; 8 | using IppDotNetSdkQuickBooksApiV3SampleWebFormsApp; 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 11 | { 12 | public class Global : HttpApplication 13 | { 14 | void Application_Start(object sender, EventArgs e) 15 | { 16 | // Code that runs on application startup 17 | BundleConfig.RegisterBundles(BundleTable.Bundles); 18 | AuthConfig.RegisterOpenAuth(); 19 | RouteConfig.RegisterRoutes(RouteTable.Routes); 20 | } 21 | 22 | void Application_End(object sender, EventArgs e) 23 | { 24 | // Code that runs on application shutdown 25 | 26 | } 27 | 28 | void Application_Error(object sender, EventArgs e) 29 | { 30 | // Code that runs when an unhandled error occurs 31 | 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/IPP/BlueDotMenuProxy.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="" Language="C#" AutoEventWireup="true" CodeBehind="BlueDotMenuProxy.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.BlueDotMenuProxy" %> 2 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/IPP/BlueDotMenuProxy.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.UI; 6 | using System.Web.UI.WebControls; 7 | 8 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 9 | { 10 | public partial class BlueDotMenuProxy : System.Web.UI.Page 11 | { 12 | protected void Page_Load(object sender, EventArgs e) 13 | { 14 | RestProfile profile = RestProfile.GetRestProfile(); 15 | Response.Write(RestHelper.callPlatform(profile, Constants.IppEndPoints.BlueDotAppMenuUrl)); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/IPP/BlueDotMenuProxy.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp { 11 | 12 | 13 | public partial class BlueDotMenuProxy { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/IPP/Constants.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Configuration; 6 | 7 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 8 | { 9 | public class Constants 10 | { 11 | /// 12 | /// OAuth EndPoints. 13 | /// 14 | public static class OauthEndPoints 15 | { 16 | /// 17 | /// Url Request Token 18 | /// 19 | public static string UrlRequestToken = ConfigurationManager.AppSettings["Url_Request_Token"] != null ? 20 | ConfigurationManager.AppSettings["Url_Request_Token"].ToString() : "/get_request_token"; 21 | 22 | /// 23 | /// Url Access Token 24 | /// 25 | public static string UrlAccessToken = ConfigurationManager.AppSettings["Url_Access_Token"] != null ? 26 | ConfigurationManager.AppSettings["Url_Access_Token"].ToString() : "/get_access_token"; 27 | 28 | /// 29 | /// Federation base url. 30 | /// 31 | public static string IdFedOAuthBaseUrl = ConfigurationManager.AppSettings["Intuit_OAuth_BaseUrl"] != null ? 32 | ConfigurationManager.AppSettings["Intuit_OAuth_BaseUrl"].ToString() : "https://oauth.intuit.com/oauth/v1"; 33 | 34 | /// 35 | /// Authorize url. 36 | /// 37 | public static string AuthorizeUrl = ConfigurationManager.AppSettings["Intuit_Workplace_AuthorizeUrl"] != null ? 38 | ConfigurationManager.AppSettings["Intuit_Workplace_AuthorizeUrl"].ToString() : "https://appcenter.intuit.com/Connect/Begin"; 39 | } 40 | 41 | /// 42 | /// IPP Platform Endpoints 43 | /// 44 | public static class IppEndPoints 45 | { 46 | /// 47 | /// BlueDot Menu Url. 48 | /// 49 | public static string BlueDotAppMenuUrl = ConfigurationManager.AppSettings["BlueDot_AppMenuUrl"] != null ? 50 | ConfigurationManager.AppSettings["BlueDot_AppMenuUrl"].ToString() : "https://appcenter.intuit.com/api/v1/Account/AppMenu"; 51 | 52 | /// 53 | /// Disconnect url. 54 | /// 55 | public static string DisconnectUrl = ConfigurationManager.AppSettings["DisconnectUrl"] != null ? 56 | ConfigurationManager.AppSettings["DisconnectUrl"].ToString() : "https://appcenter.intuit.com/api/v1/Connection/Disconnect"; 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/IPP/RestHelper.cs: -------------------------------------------------------------------------------- 1 | using DevDefined.OAuth.Consumer; 2 | using DevDefined.OAuth.Framework; 3 | using Intuit.Ipp.Core; 4 | using Intuit.Ipp.Data; 5 | using Intuit.Ipp.DataService; 6 | using Intuit.Ipp.LinqExtender; 7 | using Intuit.Ipp.QueryFilter; 8 | using Intuit.Ipp.Security; 9 | using Intuit.Ipp.Exception; 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Configuration; 13 | using System.Linq; 14 | using System.Web; 15 | using System.Web.Profile; 16 | 17 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 18 | { 19 | public static class RestHelper 20 | { 21 | 22 | public static void disconnectRealm(RestProfile profile) 23 | { 24 | RestHelper.callPlatform(profile, Constants.IppEndPoints.DisconnectUrl); 25 | clearProfile(profile); 26 | } 27 | 28 | public static void clearProfile(RestProfile profile) 29 | { 30 | profile.OAuthAccessToken = ""; 31 | profile.OAuthAccessTokenSecret = ""; 32 | profile.RealmId = ""; 33 | profile.DataSource = -1; 34 | profile.Save(); 35 | } 36 | 37 | public static string callPlatform(RestProfile profile, string url) 38 | { 39 | 40 | OAuthConsumerContext consumerContext = new OAuthConsumerContext 41 | { 42 | ConsumerKey = ConfigurationManager.AppSettings["consumerKey"].ToString(), 43 | SignatureMethod = SignatureMethod.HmacSha1, 44 | ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"].ToString() 45 | }; 46 | 47 | OAuthSession oSession = new OAuthSession(consumerContext, Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlRequestToken, 48 | Constants.OauthEndPoints.AuthorizeUrl, 49 | Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlAccessToken); 50 | 51 | oSession.ConsumerContext.UseHeaderForOAuthParameters = true; 52 | if (profile.OAuthAccessToken.Length > 0) 53 | { 54 | oSession.AccessToken = new TokenBase 55 | { 56 | Token = profile.OAuthAccessToken, 57 | ConsumerKey = ConfigurationManager.AppSettings["consumerKey"].ToString(), 58 | TokenSecret = profile.OAuthAccessTokenSecret 59 | }; 60 | 61 | IConsumerRequest conReq = oSession.Request(); 62 | conReq = conReq.Get(); 63 | conReq = conReq.ForUrl(url); 64 | try 65 | { 66 | conReq = conReq.SignWithToken(); 67 | return conReq.ReadBody(); 68 | } 69 | catch (Exception ex) 70 | { 71 | throw ex; 72 | } 73 | } 74 | return ""; 75 | } 76 | 77 | private static DataService getDataService(RestProfile profile) 78 | { 79 | ServiceContext serviceContext = getServiceContext(profile); 80 | return new DataService(serviceContext); 81 | } 82 | 83 | private static ServiceContext getServiceContext(RestProfile profile) 84 | { 85 | var consumerKey = ConfigurationManager.AppSettings["consumerKey"].ToString(); 86 | var consumerSecret = ConfigurationManager.AppSettings["consumerSecret"].ToString(); 87 | OAuthRequestValidator oauthValidator = new OAuthRequestValidator(profile.OAuthAccessToken, profile.OAuthAccessTokenSecret, consumerKey, consumerSecret); 88 | return new ServiceContext(profile.RealmId, (IntuitServicesType)profile.DataSource, oauthValidator); 89 | } 90 | 91 | public static List getCustomerList(RestProfile profile) 92 | { 93 | ServiceContext serviceContext = getServiceContext(profile); 94 | QueryService customerQueryService = new QueryService(serviceContext); 95 | return customerQueryService.ExecuteIdsQuery("SELECT * FROM Customer").ToList(); 96 | 97 | } 98 | 99 | public static bool appTokensSet() 100 | { 101 | try 102 | { 103 | var consumerKey = ConfigurationManager.AppSettings["consumerKey"].ToString(); 104 | var consumerSecret = ConfigurationManager.AppSettings["consumerSecret"].ToString(); 105 | return consumerKey.Length > 0 && consumerSecret.Length > 0; 106 | } 107 | catch { return false; } 108 | } 109 | } 110 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/IPP/RestProfile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web.Profile; 5 | using System.Web.Security; 6 | using System.Web; 7 | 8 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 9 | { 10 | public class RestProfile : ProfileBase 11 | { 12 | public RestProfile() { } 13 | 14 | public static RestProfile GetRestProfile(string username) 15 | { 16 | return Create(username) as RestProfile; 17 | } 18 | 19 | public static RestProfile GetRestProfile() 20 | { 21 | return Create(Membership.GetUser().UserName) as RestProfile; 22 | } 23 | 24 | [SettingsAllowAnonymous(false)] 25 | public string RealmId 26 | { 27 | get { return base["RealmId"] as string; } 28 | set { base["RealmId"] = value; } 29 | } 30 | 31 | [SettingsAllowAnonymous(false)] 32 | public string OAuthAccessToken 33 | { 34 | get { return base["OAuthAccessToken"] as string; } 35 | set { base["OAuthAccessToken"] = value; } 36 | } 37 | 38 | [SettingsAllowAnonymous(false)] 39 | public string OAuthAccessTokenSecret 40 | { 41 | get { return base["OAuthAccessTokenSecret"] as string; } 42 | set { base["OAuthAccessTokenSecret"] = value; } 43 | } 44 | 45 | [SettingsAllowAnonymous(false)] 46 | public int DataSource 47 | { 48 | get { object dataSource = base["DataSource"]; if (!dataSource.Equals(null)) { return (int)dataSource; } else { return -1; } } 49 | set { base["DataSource"] = value; } 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/AppDetails.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/AppDetails.PNG -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/AppTokensAndKeys.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/AppTokensAndKeys.PNG -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/accent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/accent.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/bullet.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/heroAccent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/heroAccent.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList0.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList1.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList2.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList3.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList4.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList5.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList6.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList7.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList8.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Images/orderedList9.png -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/ManageConnection.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="Manage QuickBooks Connection" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ManageConnection.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.ManageConnection" %> 2 | 3 |
4 |

<%: Title %>.

5 |
6 |
7 | 8 |

Status: Not Logged In

9 |

10 | Sign In with Intuit or register for an account. 11 |

12 |
13 | 14 |

Status: Not Connected

15 |

16 | 17 |

18 |
19 | 20 |

Status: Connected

21 |

22 | You're connected! You should now see the Blue Dot menu in the upper-right hand corner. If you would like to disconnect your company file, click the Disconnect button below. You can always reconnect with a couple of clicks. 23 |

24 |

25 | 26 |

27 |
28 | 29 |

Status: App Tokens Not Found

30 |

31 | Set your appplication keys in the web.config file. 32 |

33 |
34 |
35 | 47 |
48 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/ManageConnection.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Profile; 6 | using System.Web.UI; 7 | using System.Web.UI.WebControls; 8 | 9 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 10 | { 11 | public partial class ManageConnection : System.Web.UI.Page 12 | { 13 | protected void Page_Load(object sender, EventArgs e) 14 | { 15 | loadVisibleSections(); 16 | } 17 | 18 | protected void disconnect_Click(object sender, EventArgs e) 19 | { 20 | try 21 | { 22 | RestHelper.disconnectRealm(RestProfile.GetRestProfile()); 23 | } 24 | catch 25 | { 26 | 27 | } 28 | finally { loadVisibleSections(); } 29 | } 30 | 31 | private void loadVisibleSections() 32 | { 33 | notLoggedIn.Visible = false; 34 | notConnected.Visible = false; 35 | connected.Visible = false; 36 | appTokensNotFound.Visible = false; 37 | if (!RestHelper.appTokensSet()) 38 | { 39 | appTokensNotFound.Visible = true; 40 | } 41 | else if (!System.Web.HttpContext.Current.User.Identity.IsAuthenticated) 42 | { 43 | notLoggedIn.Visible = true; 44 | } 45 | else 46 | { 47 | notConnected.Visible = RestProfile.GetRestProfile().OAuthAccessToken == ""; 48 | connected.Visible = RestProfile.GetRestProfile().OAuthAccessToken != ""; 49 | } 50 | (this.Master as SiteMaster).ToggleBlueDotMenuVisibility(); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/ManageConnection.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp { 11 | 12 | 13 | public partial class ManageConnection { 14 | 15 | /// 16 | /// notLoggedIn control. 17 | /// 18 | /// 19 | /// Auto-generated field. 20 | /// To modify move field declaration from designer file to code-behind file. 21 | /// 22 | protected global::System.Web.UI.WebControls.PlaceHolder notLoggedIn; 23 | 24 | /// 25 | /// notConnected control. 26 | /// 27 | /// 28 | /// Auto-generated field. 29 | /// To modify move field declaration from designer file to code-behind file. 30 | /// 31 | protected global::System.Web.UI.WebControls.PlaceHolder notConnected; 32 | 33 | /// 34 | /// connected control. 35 | /// 36 | /// 37 | /// Auto-generated field. 38 | /// To modify move field declaration from designer file to code-behind file. 39 | /// 40 | protected global::System.Web.UI.WebControls.PlaceHolder connected; 41 | 42 | /// 43 | /// disconnect control. 44 | /// 45 | /// 46 | /// Auto-generated field. 47 | /// To modify move field declaration from designer file to code-behind file. 48 | /// 49 | protected global::System.Web.UI.WebControls.Button disconnect; 50 | 51 | /// 52 | /// appTokensNotFound control. 53 | /// 54 | /// 55 | /// Auto-generated field. 56 | /// To modify move field declaration from designer file to code-behind file. 57 | /// 58 | protected global::System.Web.UI.WebControls.PlaceHolder appTokensNotFound; 59 | 60 | /// 61 | /// A1 control. 62 | /// 63 | /// 64 | /// Auto-generated field. 65 | /// To modify move field declaration from designer file to code-behind file. 66 | /// 67 | protected global::System.Web.UI.HtmlControls.HtmlAnchor A1; 68 | 69 | /// 70 | /// A4 control. 71 | /// 72 | /// 73 | /// Auto-generated field. 74 | /// To modify move field declaration from designer file to code-behind file. 75 | /// 76 | protected global::System.Web.UI.HtmlControls.HtmlAnchor A4; 77 | 78 | /// 79 | /// A2 control. 80 | /// 81 | /// 82 | /// Auto-generated field. 83 | /// To modify move field declaration from designer file to code-behind file. 84 | /// 85 | protected global::System.Web.UI.HtmlControls.HtmlAnchor A2; 86 | 87 | /// 88 | /// A3 control. 89 | /// 90 | /// 91 | /// Auto-generated field. 92 | /// To modify move field declaration from designer file to code-behind file. 93 | /// 94 | protected global::System.Web.UI.HtmlControls.HtmlAnchor A3; 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OAuth/Callback.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Callback.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OAuth.Callback" %> 2 | 3 |

Finishing OAuth Authentication Flow...

4 |
5 | 6 | 27 | 28 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OAuth/Callback.aspx.cs: -------------------------------------------------------------------------------- 1 | using DevDefined.OAuth.Consumer; 2 | using DevDefined.OAuth.Framework; 3 | using Intuit.Ipp.Core; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Configuration; 7 | using System.Linq; 8 | using System.Web; 9 | using System.Web.UI; 10 | using System.Web.UI.WebControls; 11 | 12 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OAuth 13 | { 14 | public partial class Callback : System.Web.UI.Page 15 | { 16 | protected void Page_Load(object sender, EventArgs e) 17 | { 18 | if (Request.QueryString.HasKeys()) 19 | { 20 | var oauthVerifyer = Request.QueryString["oauth_verifier"].ToString(); 21 | 22 | RestProfile profile = RestProfile.GetRestProfile(); 23 | 24 | profile.RealmId = Request.QueryString["realmId"].ToString(); 25 | 26 | switch (Request.QueryString["dataSource"].ToString().ToLower()) 27 | { 28 | case "qbo": profile.DataSource = (int)IntuitServicesType.QBO; break; 29 | 30 | } 31 | 32 | OAuthConsumerContext consumerContext = new OAuthConsumerContext 33 | { 34 | ConsumerKey = ConfigurationManager.AppSettings["consumerKey"].ToString(), 35 | ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"].ToString(), 36 | SignatureMethod = SignatureMethod.HmacSha1 37 | }; 38 | 39 | IOAuthSession clientSession = new OAuthSession(consumerContext, 40 | Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlRequestToken, 41 | Constants.OauthEndPoints.IdFedOAuthBaseUrl, 42 | Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlAccessToken); 43 | 44 | try 45 | { 46 | IToken accessToken = clientSession.ExchangeRequestTokenForAccessToken((IToken)Session["requestToken"], oauthVerifyer); 47 | profile.OAuthAccessToken = accessToken.Token; 48 | profile.OAuthAccessTokenSecret = accessToken.TokenSecret; 49 | profile.Save(); 50 | } 51 | catch 52 | { 53 | 54 | } 55 | } 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OAuth/Callback.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OAuth 11 | { 12 | 13 | 14 | public partial class Callback 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OAuth/Grant.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Grant.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OAuth.Grant" %> 2 | 3 |

Starting OAuth Authentication Flow...

4 |
5 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OAuth/Grant.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.UI; 6 | using System.Web.UI.WebControls; 7 | using DevDefined.OAuth.Consumer; 8 | using DevDefined.OAuth.Framework; 9 | using System.Configuration; 10 | 11 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OAuth 12 | { 13 | public partial class Grant : System.Web.UI.Page 14 | { 15 | /// 16 | /// 17 | /// Sender of the event. 18 | /// Event Args. 19 | protected void Page_Load(object sender, EventArgs e) 20 | { 21 | var oauth_callback_url = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath + ConfigurationManager.AppSettings["oauth_callback_url"]; 22 | var consumerKey = ConfigurationManager.AppSettings["consumerKey"]; 23 | var consumerSecret = ConfigurationManager.AppSettings["consumerSecret"]; 24 | var oauthEndpoint = Constants.OauthEndPoints.IdFedOAuthBaseUrl; 25 | IToken token = (IToken)HttpContext.Current.Session["requestToken"]; 26 | IOAuthSession session = CreateSession(consumerKey, consumerSecret, oauthEndpoint); 27 | IToken requestToken = session.GetRequestToken(); 28 | HttpContext.Current.Session["requestToken"] = requestToken; 29 | var RequestToken = requestToken.Token; 30 | var TokenSecret = requestToken.TokenSecret; 31 | oauthEndpoint = Constants.OauthEndPoints.AuthorizeUrl + "?oauth_token=" + RequestToken + "&oauth_callback=" + UriUtility.UrlEncode(oauth_callback_url); 32 | Response.Redirect(oauthEndpoint); 33 | } 34 | 35 | /// 36 | /// Creates Session 37 | /// 38 | /// Returns OAuth Session 39 | protected IOAuthSession CreateSession(string consumerKey, string consumerSecret, string oauthEndpoint) 40 | { 41 | OAuthConsumerContext consumerContext = new OAuthConsumerContext 42 | { 43 | ConsumerKey = consumerKey, 44 | ConsumerSecret = consumerSecret, 45 | SignatureMethod = SignatureMethod.HmacSha1 46 | }; 47 | return new OAuthSession(consumerContext, 48 | Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlRequestToken, 49 | oauthEndpoint, 50 | Constants.OauthEndPoints.IdFedOAuthBaseUrl + Constants.OauthEndPoints.UrlAccessToken); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OAuth/Grant.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OAuth 11 | { 12 | 13 | 14 | public partial class Grant 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OpenID/Connect.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="OpenID Connect" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Connect.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OpenID.Connect" %> 2 | 3 |

Logging you in with OpenID...

4 |
5 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OpenID/Connect.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Web; 6 | using System.Web.UI; 7 | using System.Web.UI.WebControls; 8 | using System.Configuration; 9 | using DotNetOpenAuth.Messaging; 10 | using DotNetOpenAuth.OpenId; 11 | using DotNetOpenAuth.OpenId.Extensions.AttributeExchange; 12 | using DotNetOpenAuth.OpenId.RelyingParty; 13 | using System.Web.Security; 14 | 15 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OpenID 16 | { 17 | public partial class Connect : System.Web.UI.Page 18 | { 19 | protected void Page_Load(object sender, EventArgs e) 20 | { 21 | var openIdRelyingParty = new OpenIdRelyingParty(); 22 | var openid_identifier = ConfigurationManager.AppSettings["openid_identifier"]; 23 | var returnUrl = "~/OpenID/Connect"; 24 | var response = openIdRelyingParty.GetResponse(); 25 | if (response == null) 26 | { 27 | // Stage 2: user submitting Identifier 28 | Identifier id; 29 | if (Identifier.TryParse(openid_identifier, out id)) 30 | { 31 | IAuthenticationRequest request = openIdRelyingParty.CreateRequest(openid_identifier); 32 | FetchRequest fetch = new FetchRequest(); 33 | fetch.Attributes.Add(new AttributeRequest(WellKnownAttributes.Contact.Email)); 34 | fetch.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.FullName)); 35 | fetch.Attributes.Add(new AttributeRequest("http://axschema.org/intuit/realmId")); 36 | request.AddExtension(fetch); 37 | request.RedirectToProvider(); 38 | } 39 | } 40 | else 41 | { 42 | if (response.FriendlyIdentifierForDisplay == null) 43 | { 44 | Response.Redirect("~/OpenID/Connect"); 45 | } 46 | 47 | // Stage 3: OpenID Provider sending assertion response 48 | //Session["FriendlyIdentifier"] = response.FriendlyIdentifierForDisplay; 49 | FetchResponse fetch = response.GetExtension(); 50 | if (fetch != null) 51 | { 52 | var openIdEmail = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email); 53 | var openIdFullName = fetch.GetAttributeValue(WellKnownAttributes.Name.FullName); 54 | var openIdRealmId = fetch.GetAttributeValue("http://axschema.org/intuit/realmId"); 55 | 56 | string userName = Membership.GetUserNameByEmail(openIdEmail); 57 | if (userName == null) 58 | { 59 | Membership.CreateUser(openIdEmail, Guid.NewGuid().ToString(), openIdEmail); 60 | FormsAuthentication.SetAuthCookie(openIdEmail, true); 61 | if (Request.QueryString["Subscribe"] != null) 62 | { 63 | String csname = "DirectConnectScript"; 64 | Type cstype = this.GetType(); 65 | ClientScriptManager csm = Page.ClientScript; 66 | 67 | // Check to see if the startup script is already registered. 68 | if (!csm.IsStartupScriptRegistered(cstype, csname)) 69 | { 70 | StringBuilder cstext = new StringBuilder(); 71 | cstext.AppendLine(""); 76 | csm.RegisterStartupScript(cstype, csname, cstext.ToString()); 77 | } 78 | } 79 | } 80 | else if (Request.QueryString["Disconnect"] != null) 81 | { 82 | RestHelper.clearProfile(RestProfile.GetRestProfile()); 83 | Response.Redirect("~/ManageConnection"); 84 | } 85 | else if (userName != null) 86 | { 87 | FormsAuthentication.SetAuthCookie(userName, true); 88 | if (!string.IsNullOrEmpty(returnUrl)) 89 | { 90 | Response.Redirect("~/Default"); 91 | } 92 | } 93 | } 94 | 95 | } 96 | } 97 | } 98 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OpenID/Connect.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OpenID 11 | { 12 | 13 | 14 | public partial class Connect 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OpenID/Logout.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Logout.aspx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OpenID.Logout" %> 2 | 3 |

Logging you out of Intuit App Center...

4 |
-------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OpenID/Logout.aspx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Web; 6 | using System.Web.UI; 7 | using System.Web.UI.WebControls; 8 | 9 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OpenID 10 | { 11 | public partial class Logout : System.Web.UI.Page 12 | { 13 | protected void Page_Load(object sender, EventArgs e) 14 | { 15 | String csname = "LogoutScript"; 16 | Type cstype = this.GetType(); 17 | ClientScriptManager csm = Page.ClientScript; 18 | 19 | // Check to see if the startup script is already registered. 20 | if (!csm.IsStartupScriptRegistered(cstype, csname)) 21 | { 22 | StringBuilder cstext = new StringBuilder(); 23 | cstext.AppendLine(""); 31 | csm.RegisterStartupScript(cstype, csname, cstext.ToString()); 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/OpenID/Logout.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.OpenID 11 | { 12 | 13 | 14 | public partial class Logout 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("IppDotNetSdkQuickBooksApiV3SampleWebFormsApp")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("IppDotNetSdkQuickBooksApiV3SampleWebFormsApp")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("9f022daa-53ba-40e3-81e7-0c7e14ae22c2")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Scripts/WebForms/DetailsView.js: -------------------------------------------------------------------------------- 1 | //CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/DetailsView.js 2 | function DetailsView() { 3 | this.pageIndex = null; 4 | this.dataKeys = null; 5 | this.createPropertyString = DetailsView_createPropertyString; 6 | this.setStateField = DetailsView_setStateValue; 7 | this.getHiddenFieldContents = DetailsView_getHiddenFieldContents; 8 | this.stateField = null; 9 | this.panelElement = null; 10 | this.callback = null; 11 | } 12 | function DetailsView_createPropertyString() { 13 | return createPropertyStringFromValues_DetailsView(this.pageIndex, this.dataKeys); 14 | } 15 | function DetailsView_setStateValue() { 16 | this.stateField.value = this.createPropertyString(); 17 | } 18 | function DetailsView_OnCallback (result, context) { 19 | var value = new String(result); 20 | var valsArray = value.split("|"); 21 | var innerHtml = valsArray[2]; 22 | for (var i = 3; i < valsArray.length; i++) { 23 | innerHtml += "|" + valsArray[i]; 24 | } 25 | context.panelElement.innerHTML = innerHtml; 26 | context.stateField.value = createPropertyStringFromValues_DetailsView(valsArray[0], valsArray[1]); 27 | } 28 | function DetailsView_getHiddenFieldContents(arg) { 29 | return arg + "|" + this.stateField.value; 30 | } 31 | function createPropertyStringFromValues_DetailsView(pageIndex, dataKeys) { 32 | var value = new Array(pageIndex, dataKeys); 33 | return value.join("|"); 34 | } 35 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Scripts/WebForms/Focus.js: -------------------------------------------------------------------------------- 1 | //CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebForms.js 2 | function WebForm_FindFirstFocusableChild(control) { 3 | if (!control || !(control.tagName)) { 4 | return null; 5 | } 6 | var tagName = control.tagName.toLowerCase(); 7 | if (tagName == "undefined") { 8 | return null; 9 | } 10 | var children = control.childNodes; 11 | if (children) { 12 | for (var i = 0; i < children.length; i++) { 13 | try { 14 | if (WebForm_CanFocus(children[i])) { 15 | return children[i]; 16 | } 17 | else { 18 | var focused = WebForm_FindFirstFocusableChild(children[i]); 19 | if (WebForm_CanFocus(focused)) { 20 | return focused; 21 | } 22 | } 23 | } catch (e) { 24 | } 25 | } 26 | } 27 | return null; 28 | } 29 | function WebForm_AutoFocus(focusId) { 30 | var targetControl; 31 | if (__nonMSDOMBrowser) { 32 | targetControl = document.getElementById(focusId); 33 | } 34 | else { 35 | targetControl = document.all[focusId]; 36 | } 37 | var focused = targetControl; 38 | if (targetControl && (!WebForm_CanFocus(targetControl)) ) { 39 | focused = WebForm_FindFirstFocusableChild(targetControl); 40 | } 41 | if (focused) { 42 | try { 43 | focused.focus(); 44 | if (__nonMSDOMBrowser) { 45 | focused.scrollIntoView(false); 46 | } 47 | if (window.__smartNav) { 48 | window.__smartNav.ae = focused.id; 49 | } 50 | } 51 | catch (e) { 52 | } 53 | } 54 | } 55 | function WebForm_CanFocus(element) { 56 | if (!element || !(element.tagName)) return false; 57 | var tagName = element.tagName.toLowerCase(); 58 | return (!(element.disabled) && 59 | (!(element.type) || element.type.toLowerCase() != "hidden") && 60 | WebForm_IsFocusableTag(tagName) && 61 | WebForm_IsInVisibleContainer(element) 62 | ); 63 | } 64 | function WebForm_IsFocusableTag(tagName) { 65 | return (tagName == "input" || 66 | tagName == "textarea" || 67 | tagName == "select" || 68 | tagName == "button" || 69 | tagName == "a"); 70 | } 71 | function WebForm_IsInVisibleContainer(ctrl) { 72 | var current = ctrl; 73 | while((typeof(current) != "undefined") && (current != null)) { 74 | if (current.disabled || 75 | ( typeof(current.style) != "undefined" && 76 | ( ( typeof(current.style.display) != "undefined" && 77 | current.style.display == "none") || 78 | ( typeof(current.style.visibility) != "undefined" && 79 | current.style.visibility == "hidden") ) ) ) { 80 | return false; 81 | } 82 | if (typeof(current.parentNode) != "undefined" && 83 | current.parentNode != null && 84 | current.parentNode != current && 85 | current.parentNode.tagName.toLowerCase() != "body") { 86 | current = current.parentNode; 87 | } 88 | else { 89 | return true; 90 | } 91 | } 92 | return true; 93 | } 94 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Scripts/WebForms/GridView.js: -------------------------------------------------------------------------------- 1 | //CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/GridView.js 2 | function GridView() { 3 | this.pageIndex = null; 4 | this.sortExpression = null; 5 | this.sortDirection = null; 6 | this.dataKeys = null; 7 | this.createPropertyString = GridView_createPropertyString; 8 | this.setStateField = GridView_setStateValue; 9 | this.getHiddenFieldContents = GridView_getHiddenFieldContents; 10 | this.stateField = null; 11 | this.panelElement = null; 12 | this.callback = null; 13 | } 14 | function GridView_createPropertyString() { 15 | return createPropertyStringFromValues_GridView(this.pageIndex, this.sortDirection, this.sortExpression, this.dataKeys); 16 | } 17 | function GridView_setStateValue() { 18 | this.stateField.value = this.createPropertyString(); 19 | } 20 | function GridView_OnCallback (result, context) { 21 | var value = new String(result); 22 | var valsArray = value.split("|"); 23 | var innerHtml = valsArray[4]; 24 | for (var i = 5; i < valsArray.length; i++) { 25 | innerHtml += "|" + valsArray[i]; 26 | } 27 | context.panelElement.innerHTML = innerHtml; 28 | context.stateField.value = createPropertyStringFromValues_GridView(valsArray[0], valsArray[1], valsArray[2], valsArray[3]); 29 | } 30 | function GridView_getHiddenFieldContents(arg) { 31 | return arg + "|" + this.stateField.value; 32 | } 33 | function createPropertyStringFromValues_GridView(pageIndex, sortDirection, sortExpression, dataKeys) { 34 | var value = new Array(pageIndex, sortDirection, sortExpression, dataKeys); 35 | return value.join("|"); 36 | } 37 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Scripts/WebForms/IPP/Setup.js: -------------------------------------------------------------------------------- 1 | intuit.ipp.anywhere.setup({ 2 | menuProxy: appBaseUrl + '/IPP/BlueDotMenuProxy.aspx', 3 | grantUrl: appBaseUrl + '/OAuth/Grant.aspx' 4 | }); -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Scripts/WebForms/MSAjax/MicrosoftAjaxApplicationServices.js: -------------------------------------------------------------------------------- 1 | //CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjaxApplicationServices.js 2 | //---------------------------------------------------------- 3 | // Copyright (C) Microsoft Corporation. All rights reserved. 4 | //---------------------------------------------------------- 5 | // MicrosoftAjaxApplicationServices.js 6 | Type._registerScript("MicrosoftAjaxApplicationServices.js",["MicrosoftAjaxWebServices.js"]);Type.registerNamespace("Sys.Services");Sys.Services._ProfileService=function(){Sys.Services._ProfileService.initializeBase(this);this.properties={}};Sys.Services._ProfileService.DefaultWebServicePath="";Sys.Services._ProfileService.prototype={_defaultLoadCompletedCallback:null,_defaultSaveCompletedCallback:null,_path:"",_timeout:0,get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_defaultSaveCompletedCallback:function(){return this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:function(a){this._defaultSaveCompletedCallback=a},get_path:function(){return this._path||""},load:function(c,d,e,f){var b,a;if(!c){a="GetAllPropertiesForCurrentUser";b={authenticatedUserOnly:false}}else{a="GetPropertiesForCurrentUser";b={properties:this._clonePropertyNames(c),authenticatedUserOnly:false}}this._invoke(this._get_path(),a,false,b,Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[d,e,f])},save:function(d,b,c,e){var a=this._flattenProperties(d,this.properties);this._invoke(this._get_path(),"SetPropertiesForCurrentUser",false,{values:a.value,authenticatedUserOnly:false},Function.createDelegate(this,this._onSaveComplete),Function.createDelegate(this,this._onSaveFailed),[b,c,e,a.count])},_clonePropertyNames:function(e){var c=[],d={};for(var b=0;b0&&a.charAt(0)==="#")a=a.substring(1);return a};Sys._Application.prototype.get_enableHistory=function(){return this._enableHistory};Sys._Application.prototype.set_enableHistory=function(a){this._enableHistory=a};Sys._Application.prototype.add_navigate=function(a){this.get_events().addHandler("navigate",a)};Sys._Application.prototype.remove_navigate=function(a){this.get_events().removeHandler("navigate",a)};Sys._Application.prototype.addHistoryPoint=function(c,f){this._ensureHistory();var b=this._state;for(var a in c){var d=c[a];if(d===null){if(typeof b[a]!=="undefined")delete b[a]}else b[a]=d}var e=this._serializeState(b);this._historyPointIsNew=true;this._setState(e,f);this._raiseNavigate()};Sys._Application.prototype.setServerId=function(a,b){this._clientId=a;this._uniqueId=b};Sys._Application.prototype.setServerState=function(a){this._ensureHistory();this._state.__s=a;this._updateHiddenField(a)};Sys._Application.prototype._deserializeState=function(a){var e={};a=a||"";var b=a.indexOf("&&");if(b!==-1&&b+27){var e=document.title;document.title=c;this._setState(a);document.title=e}else this._setState(a);this._raiseNavigate()}else{this._setState(a);this._raiseNavigate()}}};Sys._Application.prototype._raiseNavigate=function(){var d=this._historyPointIsNew,c=this.get_events().getHandler("navigate"),b={};for(var a in this._state)if(a!=="__s")b[a]=this._state[a];var e=new Sys.HistoryEventArgs(b);if(c)c(this,e);if(!d){var f;try{if(Sys.Browser.agent===Sys.Browser.Firefox&&window.location.hash&&(!window.frameElement||window.top.location.hash))Sys.Browser.version<3.5?window.history.go(0):(location.hash=this.get_stateString())}catch(g){}}};Sys._Application.prototype._serializeState=function(d){var b=[];for(var a in d){var e=d[a];if(a==="__s")var c=e;else b[b.length]=a+"="+encodeURIComponent(e)}return b.join("&")+(c?"&&"+c:"")};Sys._Application.prototype._setState=function(a,b){if(this._enableHistory){a=a||"";if(a!==this._currentEntry){if(window.theForm){var d=window.theForm.action,e=d.indexOf("#");window.theForm.action=(e!==-1?d.substring(0,e):d)+"#"+a}if(this._historyFrame&&this._historyPointIsNew){var f=document.createElement("div");f.appendChild(document.createTextNode(b||document.title));var g=f.innerHTML;this._ignoreIFrame=true;var c=this._historyFrame.contentWindow.document;c.open("javascript:''");c.write(""+g+"parent.Sys.Application._onIFrameLoad('+Sys.Serialization.JavaScriptSerializer.serialize(a)+");");c.close()}this._ignoreTimer=false;this._currentEntry=a;if(this._historyFrame||this._historyPointIsNew){var h=this.get_stateString();if(a!==h){window.location.hash=a;this._currentEntry=this.get_stateString();if(typeof b!=="undefined"&&b!==null)document.title=b}}this._historyPointIsNew=false}}};Sys._Application.prototype._updateHiddenField=function(b){if(this._clientId){var a=document.getElementById(this._clientId);if(a)a.value=b}}; -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Scripts/WebForms/MSAjax/MicrosoftAjaxSerialization.js: -------------------------------------------------------------------------------- 1 | //CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjaxSerialization.js 2 | //---------------------------------------------------------- 3 | // Copyright (C) Microsoft Corporation. All rights reserved. 4 | //---------------------------------------------------------- 5 | // MicrosoftAjaxSerialization.js 6 | Type._registerScript("MicrosoftAjaxSerialization.js",["MicrosoftAjaxCore.js"]);Type.registerNamespace("Sys.Serialization");Sys.Serialization.JavaScriptSerializer=function(){};Sys.Serialization.JavaScriptSerializer.registerClass("Sys.Serialization.JavaScriptSerializer");Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs=[];Sys.Serialization.JavaScriptSerializer._charsToEscape=[];Sys.Serialization.JavaScriptSerializer._dateRegEx=new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"',"g");Sys.Serialization.JavaScriptSerializer._escapeChars={};Sys.Serialization.JavaScriptSerializer._escapeRegEx=new RegExp('["\\\\\\x00-\\x1F]',"i");Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal=new RegExp('["\\\\\\x00-\\x1F]',"g");Sys.Serialization.JavaScriptSerializer._jsonRegEx=new RegExp("[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]","g");Sys.Serialization.JavaScriptSerializer._jsonStringRegEx=new RegExp('"(\\\\.|[^"\\\\])*"',"g");Sys.Serialization.JavaScriptSerializer._serverTypeFieldName="__type";Sys.Serialization.JavaScriptSerializer._init=function(){var c=["\\u0000","\\u0001","\\u0002","\\u0003","\\u0004","\\u0005","\\u0006","\\u0007","\\b","\\t","\\n","\\u000b","\\f","\\r","\\u000e","\\u000f","\\u0010","\\u0011","\\u0012","\\u0013","\\u0014","\\u0015","\\u0016","\\u0017","\\u0018","\\u0019","\\u001a","\\u001b","\\u001c","\\u001d","\\u001e","\\u001f"];Sys.Serialization.JavaScriptSerializer._charsToEscape[0]="\\";Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs["\\"]=new RegExp("\\\\","g");Sys.Serialization.JavaScriptSerializer._escapeChars["\\"]="\\\\";Sys.Serialization.JavaScriptSerializer._charsToEscape[1]='"';Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['"']=new RegExp('"',"g");Sys.Serialization.JavaScriptSerializer._escapeChars['"']='\\"';for(var a=0;a<32;a++){var b=String.fromCharCode(a);Sys.Serialization.JavaScriptSerializer._charsToEscape[a+2]=b;Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[b]=new RegExp(b,"g");Sys.Serialization.JavaScriptSerializer._escapeChars[b]=c[a]}};Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder=function(b,a){a.append(b.toString())};Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder=function(a,b){if(isFinite(a))b.append(String(a));else throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers)};Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder=function(a,c){c.append('"');if(Sys.Serialization.JavaScriptSerializer._escapeRegEx.test(a)){if(Sys.Serialization.JavaScriptSerializer._charsToEscape.length===0)Sys.Serialization.JavaScriptSerializer._init();if(a.length<128)a=a.replace(Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal,function(a){return Sys.Serialization.JavaScriptSerializer._escapeChars[a]});else for(var d=0;d<34;d++){var b=Sys.Serialization.JavaScriptSerializer._charsToEscape[d];if(a.indexOf(b)!==-1)if(Sys.Browser.agent===Sys.Browser.Opera||Sys.Browser.agent===Sys.Browser.FireFox)a=a.split(b).join(Sys.Serialization.JavaScriptSerializer._escapeChars[b]);else a=a.replace(Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[b],Sys.Serialization.JavaScriptSerializer._escapeChars[b])}}c.append(a);c.append('"')};Sys.Serialization.JavaScriptSerializer._serializeWithBuilder=function(b,a,i,g){var c;switch(typeof b){case "object":if(b)if(Number.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(b,a);else if(Boolean.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(b,a);else if(String.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(b,a);else if(Array.isInstanceOfType(b)){a.append("[");for(c=0;c0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a,false,g)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var d=[],f=0;for(var e in b){if(e.startsWith("$"))continue;if(e===Sys.Serialization.JavaScriptSerializer._serverTypeFieldName&&f!==0){d[f++]=d[0];d[0]=e}else d[f++]=e}if(i)d.sort();a.append("{");var j=false;for(c=0;c0)f=window.setTimeout(v,e);k.execute();return null}var d=new Sys.Net.WebRequest;d.set_url(u);d.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!m){o=Sys.Serialization.JavaScriptSerializer.serialize(l);if(o==="{}")o=""}d.set_body(o);d.add_completed(x);if(e&&e>0)d.set_timeout(e);d.invoke();function x(d){if(d.get_responseAvailable()){var f=d.get_statusCode(),c=null;try{var e=d.getResponseHeader("Content-Type");if(e.startsWith("application/json"))c=d.get_object();else if(e.startsWith("text/xml"))c=d.get_xml();else c=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),h=k==="true";if(h){if(c)c=new Sys.Net.WebServiceError(false,c.Message,c.StackTrace,c.ExceptionType,c)}else if(e.startsWith("application/json"))c=!c||typeof c.d==="undefined"?c:c.d;if(f<200||f>=300||h){if(b){if(!c||!h)c=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a));c._statusCode=f;b(c,g,a)}}else if(j)j(c,g,a)}else{var i;if(d.get_timedOut())i=String.format(Sys.Res.webServiceTimedOut,a);else i=String.format(Sys.Res.webServiceFailedNoMsg,a);if(b)b(new Sys.Net.WebServiceError(d.get_timedOut(),i,"",""),g,a)}}return d};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys._jsonp=0;Sys.Net.WebServiceProxy._xdomain=/^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;Sys.Net.WebServiceError=function(d,e,c,a,b){this._timedOut=d;this._message=e;this._stackTrace=c;this._exceptionType=a;this._errorObject=b;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace||""},get_exceptionType:function(){return this._exceptionType||""},get_errorObject:function(){return this._errorObject||null}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError"); -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Scripts/_references.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Scripts/_references.js -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Site.Master: -------------------------------------------------------------------------------- 1 | <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.SiteMaster" %> 2 | 3 | 4 | 5 | 6 | 7 | <%: Page.Title %> - My ASP.NET Application 8 | 9 | <%: Scripts.Render("~/bundles/modernizr") %> 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | <%--To learn more about bundling scripts in ScriptManager see http://go.microsoft.com/fwlink/?LinkID=272931&clcid=0x409 --%> 24 | <%--Framework Scripts--%> 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | <%--Site Scripts--%> 39 | 40 | 41 | 42 | 43 |
44 |
45 |
46 |

47 | IPP .NET Web Forms Sample App 48 |

49 |
50 |
51 |
52 | 53 | 54 | 58 | 59 | 60 |

61 | Hello, 62 | 63 | ! 64 | 65 |

66 |
67 |
68 |
    69 |
  • 70 | 71 |
  • 72 |
73 |
74 | 81 |
82 |
83 |
84 |
85 | 86 |
87 | 88 |
89 |
90 |
91 |
92 |
93 |

© <%: DateTime.Now.Year %> - My IPP QuickBooks API Integration

94 |
95 |
96 |
97 |
98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Site.Master.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Profile; 6 | using System.Web.Security; 7 | using System.Web.UI; 8 | using System.Web.UI.WebControls; 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 11 | { 12 | public partial class SiteMaster : MasterPage 13 | { 14 | private const string AntiXsrfTokenKey = "__AntiXsrfToken"; 15 | private const string AntiXsrfUserNameKey = "__AntiXsrfUserName"; 16 | private string _antiXsrfTokenValue; 17 | 18 | protected void Page_Init(object sender, EventArgs e) 19 | { 20 | // The code below helps to protect against XSRF attacks 21 | var requestCookie = Request.Cookies[AntiXsrfTokenKey]; 22 | Guid requestCookieGuidValue; 23 | if (requestCookie != null && Guid.TryParse(requestCookie.Value, out requestCookieGuidValue)) 24 | { 25 | // Use the Anti-XSRF token from the cookie 26 | _antiXsrfTokenValue = requestCookie.Value; 27 | Page.ViewStateUserKey = _antiXsrfTokenValue; 28 | } 29 | else 30 | { 31 | // Generate a new Anti-XSRF token and save to the cookie 32 | _antiXsrfTokenValue = Guid.NewGuid().ToString("N"); 33 | Page.ViewStateUserKey = _antiXsrfTokenValue; 34 | 35 | var responseCookie = new HttpCookie(AntiXsrfTokenKey) 36 | { 37 | HttpOnly = true, 38 | Value = _antiXsrfTokenValue 39 | }; 40 | if (FormsAuthentication.RequireSSL && Request.IsSecureConnection) 41 | { 42 | responseCookie.Secure = true; 43 | } 44 | Response.Cookies.Set(responseCookie); 45 | } 46 | 47 | Page.PreLoad += master_Page_PreLoad; 48 | } 49 | 50 | protected void master_Page_PreLoad(object sender, EventArgs e) 51 | { 52 | if (!IsPostBack) 53 | { 54 | // Set Anti-XSRF token 55 | ViewState[AntiXsrfTokenKey] = Page.ViewStateUserKey; 56 | ViewState[AntiXsrfUserNameKey] = Context.User.Identity.Name ?? String.Empty; 57 | } 58 | else 59 | { 60 | // Validate the Anti-XSRF token 61 | if ((string)ViewState[AntiXsrfTokenKey] != _antiXsrfTokenValue 62 | || (string)ViewState[AntiXsrfUserNameKey] != (Context.User.Identity.Name ?? String.Empty)) 63 | { 64 | throw new InvalidOperationException("Validation of Anti-XSRF token failed."); 65 | } 66 | } 67 | } 68 | 69 | protected void Page_Load(object sender, EventArgs e) 70 | { 71 | ToggleBlueDotMenuVisibility(); 72 | } 73 | 74 | public void ToggleBlueDotMenuVisibility() 75 | { 76 | if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated && RestHelper.appTokensSet() && !Request.FilePath.Contains("OAuth")) 77 | { 78 | RestProfile profile = RestProfile.GetRestProfile(); 79 | blueDotMenu.Visible = profile.OAuthAccessToken.Length > 0; 80 | } 81 | else { blueDotMenu.Visible = false; } 82 | 83 | } 84 | } 85 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Site.Master.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp { 11 | 12 | 13 | public partial class SiteMaster { 14 | 15 | /// 16 | /// HeadContent control. 17 | /// 18 | /// 19 | /// Auto-generated field. 20 | /// To modify move field declaration from designer file to code-behind file. 21 | /// 22 | protected global::System.Web.UI.WebControls.ContentPlaceHolder HeadContent; 23 | 24 | /// 25 | /// blueDotMenu control. 26 | /// 27 | /// 28 | /// Auto-generated field. 29 | /// To modify move field declaration from designer file to code-behind file. 30 | /// 31 | protected global::System.Web.UI.HtmlControls.HtmlGenericControl blueDotMenu; 32 | 33 | /// 34 | /// FeaturedContent control. 35 | /// 36 | /// 37 | /// Auto-generated field. 38 | /// To modify move field declaration from designer file to code-behind file. 39 | /// 40 | protected global::System.Web.UI.WebControls.ContentPlaceHolder FeaturedContent; 41 | 42 | /// 43 | /// MainContent control. 44 | /// 45 | /// 46 | /// Auto-generated field. 47 | /// To modify move field declaration from designer file to code-behind file. 48 | /// 49 | protected global::System.Web.UI.WebControls.ContentPlaceHolder MainContent; 50 | 51 | /// 52 | /// FooterContent control. 53 | /// 54 | /// 55 | /// Auto-generated field. 56 | /// To modify move field declaration from designer file to code-behind file. 57 | /// 58 | protected global::System.Web.UI.WebControls.ContentPlaceHolder FooterContent; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Site.Mobile.Master: -------------------------------------------------------------------------------- 1 | <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.Mobile.master.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.Site_Mobile" %> 2 | <%@ Register Src="~/ViewSwitcher.ascx" TagPrefix="friendlyUrls" TagName="ViewSwitcher" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |

Mobile Master Page

15 | 16 |
17 | 18 |
19 | 20 |
21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Site.Mobile.Master.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.UI; 6 | using System.Web.UI.WebControls; 7 | 8 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 9 | { 10 | public partial class Site_Mobile : System.Web.UI.MasterPage 11 | { 12 | protected void Page_Load(object sender, EventArgs e) 13 | { 14 | 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Site.Mobile.Master.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp { 11 | 12 | 13 | public partial class Site_Mobile { 14 | 15 | /// 16 | /// HeadContent control. 17 | /// 18 | /// 19 | /// Auto-generated field. 20 | /// To modify move field declaration from designer file to code-behind file. 21 | /// 22 | protected global::System.Web.UI.WebControls.ContentPlaceHolder HeadContent; 23 | 24 | /// 25 | /// form1 control. 26 | /// 27 | /// 28 | /// Auto-generated field. 29 | /// To modify move field declaration from designer file to code-behind file. 30 | /// 31 | protected global::System.Web.UI.HtmlControls.HtmlForm form1; 32 | 33 | /// 34 | /// FeaturedContent control. 35 | /// 36 | /// 37 | /// Auto-generated field. 38 | /// To modify move field declaration from designer file to code-behind file. 39 | /// 40 | protected global::System.Web.UI.WebControls.ContentPlaceHolder FeaturedContent; 41 | 42 | /// 43 | /// MainContent control. 44 | /// 45 | /// 46 | /// Auto-generated field. 47 | /// To modify move field declaration from designer file to code-behind file. 48 | /// 49 | protected global::System.Web.UI.WebControls.ContentPlaceHolder MainContent; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/ViewSwitcher.ascx: -------------------------------------------------------------------------------- 1 | <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ViewSwitcher.ascx.cs" Inherits="IppDotNetSdkQuickBooksApiV3SampleWebFormsApp.ViewSwitcher" %> 2 |
3 | <%: CurrentView %> view | Switch to <%: AlternateView %> 4 |
-------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/ViewSwitcher.ascx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Routing; 6 | using System.Web.UI; 7 | using System.Web.UI.WebControls; 8 | using Microsoft.AspNet.FriendlyUrls.Resolvers; 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp 11 | { 12 | public partial class ViewSwitcher : System.Web.UI.UserControl 13 | { 14 | protected string CurrentView { get; private set; } 15 | 16 | protected string AlternateView { get; private set; } 17 | 18 | protected string SwitchUrl { get; private set; } 19 | 20 | protected void Page_Load(object sender, EventArgs e) 21 | { 22 | // Determine current view 23 | var isMobile = WebFormsFriendlyUrlResolver.IsMobileView(new HttpContextWrapper(Context)); 24 | CurrentView = isMobile ? "Mobile" : "Desktop"; 25 | 26 | // Determine alternate view 27 | AlternateView = isMobile ? "Desktop" : "Mobile"; 28 | 29 | // Create switch URL from the route, e.g. ~/__FriendlyUrls_SwitchView/Mobile?ReturnUrl=/Page 30 | var switchViewRouteName = "AspNet.FriendlyUrls.SwitchView"; 31 | var switchViewRoute = RouteTable.Routes[switchViewRouteName]; 32 | if (switchViewRoute == null) 33 | { 34 | // Friendly URLs is not enabled or the name of the switch view route is out of sync 35 | this.Visible = false; 36 | return; 37 | } 38 | var url = GetRouteUrl(switchViewRouteName, new { view = AlternateView, __FriendlyUrls_SwitchViews = true }); 39 | url += "?ReturnUrl=" + HttpUtility.UrlEncode(Request.RawUrl); 40 | SwitchUrl = url; 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/ViewSwitcher.ascx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // 5 | // Changes to this file may cause incorrect behavior and will be lost if 6 | // the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace IppDotNetSdkQuickBooksApiV3SampleWebFormsApp { 11 | 12 | 13 | public partial class ViewSwitcher { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Web.Debug.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/Web.Release.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/favicon.ico -------------------------------------------------------------------------------- /IppDotNetSdkQuickBooksApiV3SampleWebFormsApp/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Intuit Partner Platform 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Sample Banner](views/Callout.png)][ss1] 2 | 3 | Quickbooks API V3 - ASP.NET Web Forms Sample App (C#) 4 | ====================== 5 | 6 | ## Note : This sample uses OAuth1.0 7 | 8 | This .NET sample app demonstrates an integration with the [QuickBooks API v3](https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v3). This app supports Intuit's OpenID for creating and authorizing a user to log in, as well as OAuth for authorizing a connection to a QuickBooks company file (realm). Subscriptions from Intuit's App Center can be tested using the settings below, as well as in-app connections to QuickBooks. 9 | 10 | Requirements 11 | ------------------------- 12 | 13 | In addition to the changes in the previous section, certain references are auto-linked: 14 | 15 | 16 | * [NuGet](http://www.nuget.org/) 17 | * .NET Framework 4.6.1 18 | * IIS Express 19 | * Windows 7 20 | 21 | With this sample app, you can 22 | ------------------------------- 23 | 24 | * Create an account and sign in to the application 25 | * Authenticate and provision accounts with Single Sign-In feature using Open ID 26 | * Authorize access to QuickBooks Company Data using OAuth 27 | * Access QuickBooks data 28 | * Use Disconnect link to disconnect from QuickBooks 29 | * Use Intuit Logout feature to sign out of app and the Intuit App Center 30 | * Use the Direct Connect to Intuit feature to test the Try/Buy flow from Intuit App Center 31 | * Configure the SDK for custom logging, serialization and retry mechanisms 32 | 33 | To get started 34 | ------------ 35 | 36 | * Create an account in [developer.intuit.com](http://developer.intuit.com) 37 | * Create an app on [developer.intuit.com](http://developer.intuit.com) and the associated app token, consumer key, and consumer secret.[ 38 | * Copy the app tokens and keys to the project's web.config file 39 | * Configure your app to test the flows from the App Center and Blue Dot menu 40 | 41 | For more information 42 | ------------ 43 | 44 | * [Visit](https://developer.intuit.com) developer.intuit.com to become an IPP Developer and read more about the APIs and SDKs 45 | * [View](https://developer.intuit.com/docs) our API documentation. 46 | * [Test](https://developer.intuit.com/v2/apiexplorer?apiname=V3QBO) QuickbBooks API calls on the API Explorer. 47 | * [Connect](https://developer.intuit.com/v2/help) with us and let us know if you have any questions, feedback or issues. 48 | 49 | [ss1]: https://help.developer.intuit.com/s/samplefeedback?cid=9010&repoName=QuickbooksV3API-DotNet 50 | -------------------------------------------------------------------------------- /packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /views/Callout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/views/Callout.png -------------------------------------------------------------------------------- /views/Sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntuitDeveloper/QuickbooksV3API-DotNet/db8940fc6bb40341f34e06a8ac20a3f5771a118b/views/Sample.png --------------------------------------------------------------------------------