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。
相关文章推荐
- [leetcode] 5.Longest Palindromic Substring
- 【原创】Kafka producer原理 (Scala版同步producer)
- Linux下安装Redis及Linux下php安装Redis扩展
- Ibatis学习笔记
- js选项卡切换效果
- Android APP崩溃上传日志到服务器并且重启!
- [笔记][html][ios]点击元素有闪烁的解决办法
- pod 一些解释
- [leetcode] 4.Median of Two Sorted Arrays
- QTableWidget 列排序
- 试着用c写了一个多线程的同步
- 每天进步一点点——linux——touch
- 拍照或从相册中选择
- 技术面前,一切商业模式都是纸老虎
- asp.net 初级入门学习之ATM
- 数据库索引
- 字典树(Trie)
- 收藏:c语言的多线程同步
- gcc编译器选项
- hdoj 1408 盐水的故事 【double精度问题】