سؤال

أحاول إنشاء صفحة ASP.NET تتصل بالطبعة QuickBooks عبر الإنترنت، وقراءة بضع قيم وعرض النتائج. حتى الآن لقد قمت بتنزيل QuickBooks SDK لكنني لم أتمكن من العثور على مثال بسيط خطوة بخطوة حول كيفية إنشاء صفحة ASP.NET للاتصال بكسرات QuickBooks عبر الإنترنت. وثائق QuickBooks SDK و SDK نفسها مربكة للغاية وتأثيرها. أي شخص يعرف برامج تعليمية خطوة بخطوة بسيطة في مكان البدء ... أو ربما تلميح في أول شيء يجب القيام به.

هل كانت مفيدة؟

المحلول 2

فيما يلي جميع الخطوات التي أخذتها للحصول على هذا العمل. شكر خاص ل كيث بالمر تعليقاته وإجاباته و موقعه الذي ساعدني حقا في الحصول على هذا العمل.

  1. تسجيل طلبك في http://appreg.quickbooks.com.. وبعد هذا سيمنحك معرف التطبيق الخاص بك واسم التطبيق. لقد استخدمت هذه الإعدادات:

    • تطبيق الهدف: قارب
    • البيئة: الإنتاج
    • نوع التطبيق: سطح المكتب

      • (باستخدام سطح المكتب جعل الأمور أسهل بكثير بقدر ما تحتاج إلى شهادات)
    • يتم إرسال مفتاح التحقق إلى عنوان بريدك الإلكتروني الذي تحتاج إلى إدخاله في الصفحة 2 من هذا المعالج.

  2. قم بإعداد اتصال QBOE الخاص بك. وبعد بمجرد الانتهاء من تسجيل طلبك في الخطوة 1، ستحصل بعد ذلك على معرف تطبيق. استخدم هذا المعرف في عنوان URL أدناه لإعداد اتصال QBOE الخاص بك:
    • https://login.quickbooks.com/j/qbn/sdkapp/confirm؟serviceid=2004&appid=.APP_ID
    • ملاحظة: تأكد من استبدال App_ID في عنوان URL أعلاه مع معرف التطبيق الذي تم إنشاؤه عند تسجيل طلبك.
    • سوف يأخذك المعالج إلى الخطوات التالية:
      1. تحديد اسم اتصالك.
      2. منح حقوق الوصول - أعطيت جميع الحقوق المحاسبية لأن هذا كان أسهل.
      3. حدد أمان تسجيل الدخول - قمت بإيقاف تشغيل أمان تسجيل الدخول. هذا مهم لأنه يجعل تقديم XML إلى القرونة أسهل بكثير لأنك لا تحتاج إلى الحصول على تذكرة جلسة لكل مستخدم.
      4. سيتم بعد ذلك إعطاء مفتاح اتصال.
  3. في هذه المرحلة لديك الآن 3 أجزاء مهمة من المعلومات من أجل الوصول إلى حساب EquickBooks عبر الإنترنت (QBOE).
    • اسم التطبيق
    • رقم الاستمارة
    • مفتاح الاتصال
  4. أضف XML إلى QBOE مع 3 قطع معلومات الوصول والطلب الفعلي في قاعدة بيانات QBOE الخاصة بك. هنا هو نموذج رمز C # الذي سينشر إلى بوابة QBOE. سيؤدي ذلك إلى إرجاع جميع العملاء في قاعدة بيانات QuickBooks الخاصة بك. تأكد من تحديث XML أدناه باستخدام اسم التطبيق ومعرف التطبيق ومفتاح الاتصال.

    string requestUrl = null;
    requestUrl = "https://apps.quickbooks.com/j/AppGateway";
    
    HttpWebRequest WebRequestObject = null;
    StreamReader sr = null;
    HttpWebResponse WebResponseObject = null;
    StreamWriter swr = null;
    
    try
    {
        WebRequestObject = (HttpWebRequest)WebRequest.Create(requestUrl);
        WebRequestObject.Method = "POST";
        WebRequestObject.ContentType = "application/x-qbxml";
        WebRequestObject.AllowAutoRedirect = false;
    
        string post = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
        <?qbxml version=""6.0""?>
        <QBXML>
          <SignonMsgsRq>
            <SignonDesktopRq>
              <ClientDateTime>%%CLIENT_DATE_TIME%%</ClientDateTime>
              <ApplicationLogin>APPLICATION_LOGIN</ApplicationLogin>
              <ConnectionTicket>CONNECTION_TICKET</ConnectionTicket>
              <Language>English</Language>
              <AppID>APP_ID</AppID>
              <AppVer>1</AppVer>
            </SignonDesktopRq>
          </SignonMsgsRq>
          <QBXMLMsgsRq onError=""continueOnError"">
            <CustomerQueryRq requestID=""2"" />
          </QBXMLMsgsRq>
        </QBXML>";
    
    
    
        post = post.Replace("%%CLIENT_DATE_TIME%%", DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"));
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(post);
        post = xmlDoc.InnerXml;
        WebRequestObject.ContentLength = post.Length;
        swr = new StreamWriter(WebRequestObject.GetRequestStream());
        swr.Write(post);
        swr.Close();
        WebResponseObject = (HttpWebResponse)WebRequestObject.GetResponse();
        sr = new StreamReader(WebResponseObject.GetResponseStream());
        string Results = sr.ReadToEnd();
        }
    finally
        {
            try
            {
                sr.Close();
            }
            catch
            {
            }
    
            try
            {
                WebResponseObject.Close();
                WebRequestObject.Abort();
            }
            catch
            {
            }
        }
    
  5. أشياء زوجين لملاحظة:

    • كما هو موضح من قبل Keith Palmer، يجب أن يكون إصدار QBXML 6.0 (على الرغم من أن المرجع الموحد في شاشة IDN يظهر 7.0)
    • كنت بحاجة إلى تضمين سمة OnError = "MOWONERROR".
    • تحديد خاصية WebRequestObject.contentLength هو مطلوب.
    • يجب أن يكون نوع المحتوى "تطبيق / X-QBXML"
    • وأخيرا تلقيت العديد من "خادم بعيد بإرجاع خطأ: (400) طلب سيء". استثناءات غير مفيدة على الإطلاق ولكن في النهاية كنت قادرا على تتبعها لشيء خاطئ مع XML. لذلك إذا تلقيت الاستثناء هذا، فابحث إلى XML الخاص بك كمصدر للمشكلة.

نصائح أخرى

إجابة yishai هي جزئيا صحيح، ولكن ليس تماما.

أنت يمكن لديك تطبيق تطبيقات ASP .NET في طلبات المشكلة بدون الاضطرار إلى إرسال المستخدم إلى QuickBooks عبر الإنترنت في الصفحة إذا كنت تتأكد من تعيين تفضيلات الأمان بشكل صحيح عند توصيل التطبيق الخاص بك إلى QuickBooks Enline Edition.

أثناء عملية تسجيل التطبيق / عملية الاتصال، ستطلب منك ذلك إذا كنت ترغب في تشغيل أمان تسجيل الدخول أو إيقاف تشغيله بموجب موجه على النحو التالي. يجب أن تخبره أنك تريد اطفئه تسجيل الدخول الأمن إذا كنت تريد أن تكون قادرا على الوصول إلى بيانات الإصدار QuickBooks عبر الإنترنت بدون إجبار المستخدم على تسجيل الدخول في كل مرة. المطالبة شيء مثل:

"هل تريد تشغيل أمان تسجيل الدخول؟"

يجب عليك تحديد: "لا يمكن لأي شخص يمكنه تسجيل الدخول إلى [اسم التطبيق] استخدام الاتصال".

خارج ذلك، Yishai صحيحة حول هذه العملية. لإعادة تشديد، باختصار:

  • سجل لحساب QBOE
  • سجل طلبك المتكامل خدمة INTIT
  • قم بزيارة رابط معين لربط طلب تقييمك لحساب QBOE الخاص بك (تأكد من إيقاف تشغيل أمان تسجيل الدخول عندما يطلب منك!)
  • جعل طلبات نشر HTTPS لنظام Intuit's Servers للتوقيع على استخدام Intuit Connection Netuit، ستوفر لك
  • قم بإجراء طلبات مشاركة HTTPS لإرسال طلبات QBXML إلى خوادم Intuit، والتي يمكنك استخدامها لإضافة، وتعديل، والحذف، والاستعلام عن السجلات داخل الإصدار QuickBooks عبر الإنترنت.

هناك بعض الوثائق الإضافية وطلبات بعض الأمثلة على بلدي QuickBooks التنمية والتكامل Wiki, ، على وجه التحديد QuickBooks Integion Edition Integration صفحة.

لقد قمت ببناء حل يقوم به ما تطلبه في PHP الذي يضيف بيانات واستفسارات واستفساراتها داخل إصدار QuickBooks عبر الإنترنت دون مطالبة المستخدم بتسجيل الدخول في كل مرة، ويعمل مثل البطل. يدفع واسحب بيانات الطلب بين عربة التسوق PHP (Virtuemart) و Conicebooks Enline Edition. رمز PHP متاح هنا:QuickBooks PHP Framework.

كملاحظة جانبية، إلا إذا كنت على دراية للغاية بإنشاء شهادات SSL وإرسالها عبر مشاركات HTTPS، فسوف توفر نفسك الكثير من المتاعب باستخدام طراز الاتصالات المكتبية، وليس النموذج المستضاف. فقط تأكد من الحفاظ على تذكرة الاتصال الخاصة بك مشفرة بشكل آمن.

أيضا، اقتراح Yishai ل: "واحد هو ضرب برمجيا صفحة تسجيل الدخول الخاصة بهم وتقديم بيانات الاعتماد كما لو كنت مستخدما. أنا متأكد من أنه ليس" مدعوم "ولكن من المرجح أن يعمل". يذهب على وجه التحديد ضد إرشادات الأمن / المطور Intuit و SDK المنصوص عليها. إذا قبضوا عليك القيام بذلك، فسيحظرون طلبك من الاتصال بسرعة إلى QuickBooks.

يتم تحديد الخطوط العريضة لما عليك القيام به في الفصل 7 من وثائق QBSDK (على الأقل في إصدار 7.0 من SDK الذي لدي). يجب عليك فتح حساب اختبار والحصول على إذن للاتصال بخوادمهم.

بمجرد أن يكون لديك إعداد حسابك، يتكون إجراء المصادقة الأساسية من إعادة توجيه المستخدم الخاص بك إلى موقع QuickBooks عبر الإنترنت لتسجيل الدخول، وبمجرد قيام المستخدم بذلك، يستدعي QuickBooks التطبيق الخاص بك مع وظيفة HTTPS مع تذكرة، وهو أساسا مقبض الجلسة التي يمكنك استخدامها لطلباتك، بحيث يعرف النظام أنك مصادق عليه. عندما تحصل على هذا الاستجابة، تقوم بتحليلها وإرسال طلب تسجيل الدخول الخاص بك إلى النظام بناء على ما سبقت عد.

ثم (إذا فهمت الوثائق بشكل صحيح)، فأنت تقوم بشكل أساسي بوظائف HTTPS لملفات XML مع طلبات QuickBooks، وحصلت على استجابات XML التي يجب عليك تحليلها للحصول على البيانات التي تريدها.

آمل أن تبدأك.

إن بقية SDK هي وثائق (التي ستحتاج إلى معرفة كيفية تشكيل طلباتك وتحليل ردودك) وكل شيء آخر يهتم بكيفية التواصل مع منتج سطح المكتب. الشيء الوحيد الذي ستحتاج إليه من بقية الوثائق هو كيفية القيام باستخدام الأخطاء، وهو أمر مهم حقا إذا كنت تقوم بنشر البيانات إلى QuickBooks. إذا كنت تقرأ فقط، فلا يهم (إما أن يعمل طلبك أو لا، فلا داعي للقلق بشأن إعادة المحاولة أو إذا كان ذلك من شأنه أن يؤدي إلى بيانات مكررة).

تحرير: إعطاء حالة الاستخدام المحدد الخاص بك أرى خيارين. (أنت لست مجنونا، ليس فقط سيناريو QuickBooks النموذجي).

واحد هو ضرب برمجيا صفحة تسجيل الدخول الخاصة بهم وتقديم بيانات الاعتماد كما لو كنت مستخدم. أنا متأكد من أنه ليس "مدعوم" لكنه من المرجح أن يعمل.

والآخر هو ذاكرة التخزين المؤقت للنتائج (والتي ربما يجب عليك القيام بها على أي حال) ولديها شاشة مسؤول حيث يقوم شخص ما بتسجيل الدخول إلى QuickBooks عبر الإنترنت وتحديث النتائج كل صباح أو مساء أو مهما كان من المنطقي.

في معظم الشركات الصغيرة، سوف يختارون الخيار الأول، ولكن الشخص الثاني سيعمل بشكل أكثر باستمرار، بقوة ويتم دعمه في الواقع من قبل Intuit إذا كان لديك مشكلة.

هذا يبدو قريبا جدا من ما تحتاجه: www.quickbooksconnector.com.

لم يكن قادرا على تنزيله بعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top