Интеграция OAuth с QuickBooks с помощью Scribe

QuickBooks имеет свои собственные библиотеки SDK, которые могут легко помочь в общении между третьими сторонами. Но размер файла их библиотеки составляет около 6 МБ, что очень много для простой интеграции API.

После стольких поисков и нахождения решения с помощью Scribe я решил опубликовать это, чтобы другие разработчики могли его использовать.

поддержка intuit не собирается вам в этом помогать и не будет исправлять свой документ.

По сути, проблема заключается в том, как интегрировать Quickbooks с помощью Scribe.


person Santosh Giri    schedule 09.06.2015    source источник


Ответы (1)


БИБЛИОТЕКА: scribe-1.3.5.jar

public class QBOAuthDemo {
    private static String CONSUMER_KEY = "<Consumer_Key>";
    private static String CONSUMER_SECRET ="<Consumer_Secret>";
    private static String TOKEN = "<Token>";
    private static String TOKEN_SECRET = "<Token_Secret>";
    private static String API_END_URL = "https://sandbox-quickbooks.api.intuit.com/v3";

public static void main(String[] args) throws IOException {
        OAuthService qbService = new ServiceBuilder()
                .provider(QuickBooksAPI.class)
                .apiKey(CONSUMER_KEY)
                .apiSecret(CONSUMER_SECRET)
                .debug()     //In order to Debug and view in Console
                .callback("http://localhost:8080")
                .build();
        Token tokenAccess = new Token(TOKEN, TOKEN_SECRET);
        System.out.println("Token Access = "+tokenAccess);

        OAuthRequest request = new OAuthRequest(Verb.GET, API_END_URL+"/company/<YOUR-COMPANYID>/customer/<customerid>");
        qbService.signRequest(tokenAccess, request);
        request.addHeader("Content-Type","application/xml" );
        Response response = request.send();
        System.out.println(response.getBody());
    }
}

Это позволит просто подключиться и получить информацию о клиенте в формате XML (также поддерживает JSON).

Ответ, который вы получите как

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IntuitResponse
    xmlns="http://schema.intuit.com/finance/v3" time="2015-06-09T06:07:39.787-07:00">
    <Customer domain="QBO" sparse="false">
        <Id>64</Id>
        <SyncToken>1</SyncToken>
        <MetaData>
            <CreateTime>2015-06-09T03:18:00-07:00</CreateTime>
            <LastUpdatedTime>2015-06-09T03:18:15-07:00</LastUpdatedTime>
        </MetaData>
        <Title>Mr</Title>
        <GivenName>DummyIND</GivenName>
        <MiddleName>B</MiddleName>
        <FamilyName>IND</FamilyName>
        <FullyQualifiedName>IND King Crafts</FullyQualifiedName>
        <CompanyName>IND King Crafts</CompanyName>
        <DisplayName>IND King Crafts</DisplayName>
        <PrintOnCheckName>IND King Crafts</PrintOnCheckName>
        <Active>true</Active>
        <PrimaryPhone>
            <FreeFormNumber>(000) 555-5555</FreeFormNumber>
        </PrimaryPhone>
        <Mobile>
            <FreeFormNumber>555-5555-6666</FreeFormNumber>
        </Mobile>
        <PrimaryEmailAddr>
            <Address>[email protected]</Address>
        </PrimaryEmailAddr>
        <DefaultTaxCodeRef>2</DefaultTaxCodeRef>
        <Taxable>true</Taxable>
        <BillAddr>
            <Id>96</Id>
            <Line1>123 Main Street</Line1>
            <City>Mountain View</City>
            <Country>USA</Country>
            <CountrySubDivisionCode>CA</CountrySubDivisionCode>
            <PostalCode>94042</PostalCode>
            <Lat>37.37982969999999</Lat>
            <Long>-122.114632</Long>
        </BillAddr>
        <ShipAddr>
            <Id>97</Id>
            <Line1>123 Main Street</Line1>
            <City>Mountain View</City>
            <Country>IND</Country>
            <CountrySubDivisionCode>CA</CountrySubDivisionCode>
            <PostalCode>94042</PostalCode>
            <Lat>36.168973</Lat>
            <Long>-96.173524</Long>
        </ShipAddr>
        <Notes>Here are other details.</Notes>
        <Job>false</Job>
        <BillWithParent>false</BillWithParent>
        <Balance>0</Balance>
        <BalanceWithJobs>0</BalanceWithJobs>
        <CurrencyRef name="United States Dollar">USD</CurrencyRef>
        <PreferredDeliveryMethod>Print</PreferredDeliveryMethod>
    </Customer>
</IntuitResponse>

Файл класса для QuickBooksAPI.JAVA

import org.scribe.builder.api.DefaultApi10a;
import org.scribe.model.Token;

public class QuickBooksAPI extends DefaultApi10a{

    @Override
    public String getAccessTokenEndpoint() {
        return "https://oauth.intuit.com/oauth/v1/get_access_token";
    }

    @Override
    public String getAuthorizationUrl(Token requestToken) {
        String str = String.format("https://appcenter.intuit.com/connect/begin?oauth_token=%s",requestToken.getToken());
        return str;
    }

    @Override
    public String getRequestTokenEndpoint() {
        return "https://oauth.intuit.com/oauth/v1/get_request_token";
    }
}

QuickBooks поддерживает подпись HMAC-SHA1, которая автоматически обрабатывается Scribe. Чтобы выполнить пакетную операцию, вы можете указать URL-адрес: QUICKBOOKS BATCHOPERATION

person Santosh Giri    schedule 09.06.2015