曾经有个Shopify客户想在我们客户仓库中发货,因而想要和我们的WMS系统进行对接。可当我到Shopify的开发中心一看,上面还是搞得挺详细的,也挺标准,不过Shopify的开发人员还是挺卷的,老是爱发布新版本。因此,开发文档也有好几个版本,真够烦的。后面想想,Shopify这东东还是挺流行的,看看Nutget上有没有相关的开发插件。上去看了一下,还真让我找到了个与Shopify对接的东东——ShopifySharp。
下面说说实现Shopify对接的两个基本的功能,其他功能也是大同小异,可以参照这两个功能实现。
var filter = new ShopifySharp.Filters.OrderListFilter()
{
UpdatedAtMin = DateTime.Now.AddDays(-1),
UpdatedAtMax = DateTime.Now,
FulfillmentStatus = "",
FinancialStatus = "paid"
};
/// <summary>
/// Pull Shopify Orders by filter
/// </summary>
/// <param name="url">Shopify Url</param>
/// <param name="token">Shopify Token</param>
/// <param name="filters">Search filter</param>
/// <returns></returns>
public static async Task<ShopifySharp.Lists.ListResult<Order>> GetOrders(string url, string token, ShopifySharp.Filters.OrderListFilter filters = null)
{
var service = new ShopifySharp.OrderService(url, token);
var orders = await service.ListAsync(filters);
return orders;
}
上述例子中实现了拉取Shopify上一天内已付款的订单。接取到对应的订单后,那就使劲造吧,老铁。
这个功能稍微崎岖,
第一步,先获取到对应订单的FulfillmentOrder。
/// <summary>
/// Get FufillmentOrder
/// </summary>
/// <param name="url">Shopify Url</param>
/// <param name="token">Shopify Token</param>
/// <param name="orderId">Order Id</param>
/// <returns></returns>
public static FulfillmentOrder GetOrderFulfillment(string url, string token, long orderId)
{
var servoce = new FulfillmentOrderService(url, token);
return servoce.ListAsync(orderId)?.Result?.FirstOrDefault(o => o.Status == _FULFILL_STATUS_OPEN);
}
第二步,从返回的FulfillmentOrder中获取到对应的Fulfillment ID,建立起更新内容。
var shopifyRequest = new ShopifySharp.FulfillmentShipping()
{
NotifyCustomer = true
,
TrackingInfo = new TrackingInfo()
{
Company = "Delivery Company",
Number = "Tracking Number"
},
FulfillmentRequestOrderLineItems = new List<LineItemsByFulfillmentOrder>() { new LineItemsByFulfillmentOrder() {
FulfillmentOrderId = fulfillment.Id
} }
};
第三步,把前面组合起来的内容推送到Shopify。
public static Fulfillment SendOrderFulfillment(string url, string token, ShopifySharp.FulfillmentShipping fulfillment)
{
var servoce = new FulfillmentService(url, token);
return servoce.CreateAsync(fulfillment).Result;
}
好了,一个简单而完整的Shopify获取订单,更新订单的流程走完了,希望能帮到有需要的老铁。
实属班门弄斧不自量,权作抛砖引玉撩一笑。