您的位置:首页 > 其它

eBay Notification介绍

2015-06-17 14:33 555 查看
 

1.简介

"通知服务"(约定为Notification的中文名称),是EbayAPI提供的一个便捷的工具,具有实时性的特点。

 

其设计思想基于发布-订阅模式。一旦客户端订阅了需要通知的事件,服务器发送通知时,客户端就实时接收从eBay发送的通知。

 

官网API文档:

http://developer.ebay.com/Devzone/guides/ebayfeatures/Notifications/Notifications.html 此文档应该是最好的第一手资料.

 

论坛帖子:

http://community.ebay.cn/thread-1200288175-1-1.html 此帖子比较全面.

 

.NET WebService接收例子:

https://ebaydts.com/eBayKBDetails?KBid=2112 直接可以拿过来用,主要是对SOAP消息接收的配置。

2.Usage

2.1流程描述

1)使用SetNotificationPreference接口去设定订阅的event type、通知地址(email或url)

2)如果选择Email,只需考虑收到邮件之后你将如何处理;

3)如果选择URL,则需要提供一个地址,如ebayapi.company.com的地址来接收,此处注意,端口号尽量使用80(8080和443没有试过,应该可以过),但是用了94,结果死活都收不到。问了ebay的技术,只能用默认端口。

4)当有订阅的event发生时,ebay会主动推送消息去你事先设定好的通知地址上。

 

2.2 设置接收地址

 

主要分为提醒邮箱设置默认接收URL指定URL(最多25个)三块。

依次分别是AlertEmail,ApplicationURL,DeliveryURLDetailType

[Test]

public
void SetNotification_EnableOrDisable_ApplicaitonDelivery_Test()

{

    var context = ApiContextFactory.GetApiContext(token);

    //var context = SandBoxEnvironment.GetApiContextOfSendBox();

    SetNotificationPreferencesCall call = new SetNotificationPreferencesCall(context);

 
    var enable = EnableCodeType.Enable;

    var type = new ApplicationDeliveryPreferencesType()

    {

        AlertEmail = "mailto://1050244110@qq.com",

        AlertEnable = enable,

        AlertEnableSpecified = true,

 
        ApplicationURL = "mailto://1050244110@qq.com",

        ApplicationEnable = enable,

        ApplicationEnableSpecified = true,

 
        DeliveryURLDetails = new DeliveryURLDetailTypeCollection(

            new DeliveryURLDetailType[] {

            new DeliveryURLDetailType()

            {

                Status = enable,

                DeliveryURLName = "seller1_Delivery",

                DeliveryURL = "http://address1.com",

                StatusSpecified = true

            },new DeliveryURLDetailType(){

                    Status = enable,

                    DeliveryURLName = "seller2_Delivery",

                    DeliveryURL = "http://address2.com",

                    StatusSpecified = true

            }})

    };

 
    call.SetNotificationPreferences(type);

}

 

查看指定结果

[Test]

public
void GetNotification_RoleCodeType_Application_Test()

{

    var context = ApiContextFactory.GetApiContext(token);

    //var context = SandBoxEnvironment.GetApiContextOfSendBox();

    GetNotificationPreferencesCall call = new GetNotificationPreferencesCall(context);

    call.GetNotificationPreferences(NotificationRoleCodeType.Application);

    Console.WriteLine(call.ApplicationDeliveryPreferences);

    Console.WriteLine(call.ApplicationDeliveryPreferences.AlertEmail);

    Console.WriteLine(call.ApplicationDeliveryPreferences.ApplicationURL);

    Console.WriteLine(call.ApplicationDeliveryPreferences.AlertEnable.ToString());

    Console.WriteLine(call.ApplicationDeliveryPreferences.ApplicationEnable.ToString());

    Console.WriteLine(call.ApplicationDeliveryPreferences.DeviceType.ToString());

    Console.WriteLine(call.ApplicationDeliveryPreferences.NotificationPayloadType.ToString());

    foreach (DeliveryURLDetailType item in call.ApplicationDeliveryPreferences.DeliveryURLDetails)

    {

        Console.WriteLine(item.DeliveryURL);

        Console.WriteLine(item.DeliveryURLName);

        Console.WriteLine(item.Status.ToString());

    }

}

 

 

2.3订阅EventType

 

[Test]

public
void SetNotificationPreferences_EnableOrDisbable_EventTypes()

{

    var context = ApiContextFactory.GetApiContext(token);

    //var context = SandBoxEnvironment.GetApiContextOfSendBox();

    SetNotificationPreferencesCall call = new SetNotificationPreferencesCall(context);

 
    var enable = EnableCodeType.Enable;

    call.DeliveryURLName = "seller1_ Delivery "; //如果指定了,则使用对应名称的URL,反之,则使用 ApplicationURL

    var coll = new NotificationEnableTypeCollection();

 
    coll.Add(new NotificationEnableType()

    {

        EventEnable = enable,

        EventEnableSpecified = true,

        EventType = NotificationEventTypeCodeType.AuctionCheckoutComplete,

        EventTypeSpecified = true

    });

 
    coll.Add(new NotificationEnableType()

    {

        EventEnable = enable,

        EventEnableSpecified = true,

        EventType = NotificationEventTypeCodeType.FixedPriceTransaction,

        EventTypeSpecified = true

    });

 
    coll.Add(new NotificationEnableType()

    {

        EventEnable = enable,

        EventEnableSpecified = true,

        EventType = NotificationEventTypeCodeType.EndOfAuction,

        EventTypeSpecified = true

    });

 

 
    call.SetNotificationPreferences(coll);

}

 

查看订阅结果

 

[Test]

public
void GetNotification_UserLevel_Test()

{

 
    var context = ApiContextFactory.GetApiContext(token);

    //var context = SandBoxEnvironment.GetApiContextOfSendBox();

 
    GetNotificationPreferencesCall call = new GetNotificationPreferencesCall(context);

    call.GetNotificationPreferences(NotificationRoleCodeType.User);

 
    Console.WriteLine(call.DeliveryURLName);

    Console.WriteLine(call.DetailLevelList.Count);

 
    foreach (NotificationEnableType item in call.UserDeliveryPreferenceList)

    {

        Console.WriteLine(item.EventEnable.ToString());

        Console.WriteLine(item.EventType.ToString());

    }

}

 

2.4 邮件接收结果截图

内容就是XML文档。



3.注意事项

3.1 端口

如果使用http或https的方式,端口号尽量使用默认端口号(80,443)

3.2 token

订阅某个卖家的EventType时,需要指定此卖家的token;

3.3 ApplicationDeliveryPreferencesType

当ApplicationDeliveryPreferencesType设置为Disable时,所有启用的订阅事件将不发送,除非将其又设置为Enable。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: