<?xml version="1.0" encoding="UTF-8" ?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5.0" 
    xmlns:xl="http://www.w3.org/1999/xlink" 
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xsi:schemaLocation="http://docbook.org/ns/docbook ../../content/dtd/docbook.xsd"
    xmlns="http://docbook.org/ns/docbook">
    
    <title>The Ebay application introduction.</title>
    <para>
        Ebay application will be use for merchant integration between OFBiz and eBay.It is possible to export products from your store into categories on Ebay site  also import an orders from ebay. You can use fuctions  on this application to setup auction on ebay for the sell your stuff on ebay.
    </para>
<section>
        <title>How to setup OFBiz integration eBay.</title>
            <orderedlist>
                <listitem><para>Register  with ebay developer site for obtain keys and certificate (eBayExport.devId,eBayExport.appId,eBayExport.cerId and eBayExport.token etc.) at <link xl:href="https://developer.ebay.com/join/">Join with ebay developers</link> </para></listitem>
        <listitem>
            <para>
                After registered it should be following the keys below  :# ebay keys example
                <orderedlist>
                    <listitem><para>eBayExport.devID=f3586481-93c7-4aaf-ab87-d383d56b71b1</para></listitem>
                    <listitem><para>eBayExport.appID=antwebc0f-9bf9-4829-998b-e5e8fb773ac</para></listitem>
                    <listitem><para>eBayExport.certID=7f363bc0-11d6-489a-a54d-4a44de82f790</para></listitem>
                </orderedlist>
                # token key generated from ebay account example :
                <orderedlist>
                    <listitem><para>eBayExport.token=AgAAAA**AQAAAA**aAAAAA**Ccn7Sg.....</para></listitem>
                </orderedlist>
            </para>
        </listitem>
                <listitem>
            <para>
                Following file in specialpurpose/ebay/config/eBayExport.properties.  You will see Merchant  configurations.                    
                For :             
                eBayExport.xmlGatewayUri :
                    <orderedlist>
                    <listitem><para>https://api.sandbox.ebay.com/ws/api.dll (sandbox environment used for testing and develoment )if you want to use for testing should select sandbox enviroment.  </para></listitem>
                    <listitem><para>https://api.ebay.com/ws/api.dll (production environment). </para></listitem>
                    </orderedlist>
                For : eBayExport.siteID    :
                    <orderedlist>
                    <listitem><para>It was siteId you want to sell products ex: site id (0=US, 101=Italy, ...) obtain from <link xl:href="http://developer.ebay.com/DevZone/XML/docs/Reference/eBay/types/SiteCodeType.html">SiteCodeType</link>
        </para></listitem>
                    </orderedlist>
                
            </para>
        </listitem>
                
                <listitem>
            <para>
                Go to ebay-->Ebay Configurations screen(see link in the bottom of page) This screen will displayed ebay configurations  with each stores. You need to  “add” or “edit”   the configuration keys you got from ebay for each productstores into this screen. This configuration  is for connect to ebay site and export or import data to ebay.
            </para>
        </listitem>
                <listitem><para>Go to ebay-->Export to eBay screen or eBay orders Import then try to test export products and import orders from ebay. </para></listitem>
            </orderedlist>
    </section>
</section>

