我们正在迁移到BC,我使用“usexml”函数通过API获取订单,因为我必须为每个订单输出一个文件。我已经成功从BC获取订单、订单中的产品以及送货地址。为了达到这个目的,我不得不添加一些函数到bigcommerce.php库中,因为虽然它们在在线文档中被引用,但它们实际上并不存在于该库中。我最后一步是获取与订单相关联的优惠券。我在库中实现的函数如下所示:
// 缺失于库中的函数,已于030215 PH添加 - 获取订单上的产品
// 缺失于库中的函数,已于030215 PH添加 - 获取订单上的产品
public static function getOrderProducts($id)
{
return self::getCollection('/orders/' . $id . '/products','Order');
}
// Function missing form library added 030215 - Get Shipping adds on order
public static function getOrderShippingAddresses($id)
{
return self::getCollection('/orders/' . $id .'/shipping_addresses','Order');
}
// 030215添加缺失的表单库功能- 在订单上获取优惠券
public static function getOrderCoupons($id)
{
return self::getCollection('/orders/' . $id . '/coupons','Order');
}
虽然语法相似,但我无法让getOrderCoupons函数返回优惠券信息以替代正常的getOrders返回提供的链接。
我正在使用与获取运输地址相同的逻辑来处理优惠券,如下所示。欢迎提出任何解决方案。
注意:Bigcommerce :: useXML();被使用,因此正在使用XML字符串。
$shipping_xml = Bigcommerce::getOrderShippingAddresses($order->id);
$shippings = simplexml_load_string($shipping_xml);
// 每个订单应该只有一个配送地址
foreach($shippings as $shipping) {
$xmlship = $shipping->asXML();
$domship = new DOMDocument();
$domship = dom_import_simplexml($shipping);
$domordship = dom_import_simplexml($order->shipping_addresses);
$domship = $domordship->ownerDocument->importNode($domship, TRUE);
$domordship->appendChild($domship);
}
$coupon_xml = Bigcommerce::getOrderCoupons($order->id);
$coupons = simplexml_load_string($coupon_xml);
// 每个订单只能使用一张优惠券
foreach($coupons as $coupon) {
$xmlcoup = $coupon->asXML();
$domcoup = new DOMDocument();
$domcoup = dom_import_simplexml($coupon);
$domordcoup = dom_import_simplexml($order->coupons);
$domcoup = $domordcoup->ownerDocument->importNode($domcoup, TRUE);
$domordcoup->appendChild($domcoup);
}