一、上海导购网CPS接口:从上海导购网引导过来的用户在本商城下订单后,本商家应该按协议好的分成规则支付给上海导购网一定的佣金
//首次将本商城订单数据推送给第三方合作商家(上海导购网)
//要求:从上海导购网过来的用户在本商城下订单后需将订单数据推送到上海导购网,以便于上海导购网核对订单数据,计算佣金额度
public function shunion_postorder() {
define("SHOP_NO", "shunion_360buy"); //商户代码,唯一
define("COMMON_DISCOUNT", 0.065); //返佣比率,从上海导购网过来的用户在本商城下订单后,会返订单总额的6.5%的佣金给上海导购网作为报酬
define("PUSH_URL", "xxx"); //上海导购网推送接口,需要将订单数据推送给该接口即可
define("SHOP_KEY","xxx"); //商户标识,唯一
define("union_id","shunion"); //一般为固定值"shunion"
$sql = "SELECT * FROM ".$this->pre."ads_shunion WHERE is_send = '0'";//查询未推送到上海导购网的订单数据,is_send=0代表未推送的订单,is_send=1代表订单已推送
$data_list = $this->db->get_all($sql);
foreach($data_list as $key=>$val){//订单逐一循环推送
$data = $this->get_order_by_id($val['order_id']); //根据订单id获取获取订单表中数据
$order = array_merge($data_list[$key],$data);
$goods = $this->get_order_items($val['order_id']); //根据订单号获取该订单的所有商品信息
//生成订单内容,因为上海导购网(第三方接口)要求推送的数据为xml格式
$content = '<?xml version="1.0" encoding="utf-8" ?>';
$content .= '<shunion_data version="1.0" >';
$content .= '<order>';
$content .= '<order_time>'.date("Y-m-d H:i:s",$order["add_time"]).'</order_time>'; //订单创建时间
$content .= '<order_no>'.$order["order_sn"].'</order_no>'; //订单号
$content .= '<shop_no>'.SHOP_NO.'</shop_no>'; //商户代码
$content .= '<total_price>'.$order["total_amount"].'</total_price>'; //总的订单金额
$content .= '<total_qty>'.$order["packet_num"].'</total_qty>'; //订单中总的商品数量
$content .= '<u_id>'.$order["u_id"].'</u_id>'; //上海导购网会员id,必须写入cookie,在用户提交订单时读取并且记录,推送订单时需将该字段回传,如果会员未登陆上海导购网,则该值为0
$content .= '<username>'.$order["username"].'</username>'; //上海导购用户名
$content .= '<is_pay>'.$order["pay_status"].'</is_pay>'; //订单是否支付,1-已支付 0-未支付
$content .= '<pay_type>'.$order["pay_type_id"].'</pay_type>'; //支付类型,1 - 在线支付;2 - 货到付款;3 - 其他
$content .= '<order_status>'.$order["status"].'</order_status>'; //订单状态,-1 - 取消订单;1 - 待审核;2 - 待配货;3 - 待发货;4 - 配送中;5 - 已收货;6 - 部分退货;7 - 全部退货
$content .= '<deli_name></deli_name>'; //快递公司名称
$content .= '<deli_no>'.$order["express_sn"].'</deli_no>'; //快递单号
$content .= '<tracking_code>'.$order["tracking_code"].'</tracking_code>'; //效果追踪识别码,必须写入cookie,在用户提交订单时读取并且记录,推送订单时需将该字段回传,值永远不为空
$content .= '<pass_code>'.md5(strtolower($order["order_sn"].SHOP_NO.$order["u_id"].SHOP_KEY)).'</pass_code>';
$content .= '<commission>'.number_format($order['total_amount']*COMMON_DISCOUNT,2,".","").'</commission>';//该订单的总佣金
$content .= '<products_all>';
foreach($goods as $g){ //当前订单下商品信息
$content .= '<product>';
$content .= '<product_id>'.$g["product_id"].'</product_id>'; //商品id
$content .= '<product_name>'.$g["product_name"].'</product_name>'; //商品名称
$content .= '<product_url>'.'http://www.360buy.com/product-'.$g['product_id'].'.html'.'</product_url>'; //商品对应的网址
$content .= '<product_qty>'.$g["quantity"].'</product_qty>'; //商品数量
$content .= '<product_price>'.$g["price"].'</product_price>'; //商品单价
$content .= '<product_comm>'.number_format($g["price"]*$g['quantity']*COMMON_DISCOUNT,2,".","").'</product_comm>';//该商品的佣金,如果没有,则为0
$content .= '<comm_no>A</comm_no>';
$content .= '</product>';
}
$content .= '</products_all>';
$content .= '<coupons_all>';
$content .= '<coupon>';
$content .= '<coupon_no></coupon_no>';
$content .= '<coupon_qty>0</coupon_qty>';
$content .= '<coupon_price>0</coupon_price>';
$content .= '<comm_no></comm_no>';
$content .= '</coupon>';
$content .= '</coupons_all>';
$content .= '</order>';
$content .= '</shunion_data>';
$post_data = "content=".$content;
//推送订单数据给第三方导购网
$ch = curl_init();//初始化一个curl会话
curl_setopt($ch, CURLOPT_HEADER,0);//是否将头部信息包含在输出中,设置是否显示头信息
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设定返回的数据是否自动显示
curl_setopt($ch, CURLOPT_URL, PUSH_URL);//推送接口:这段脚本发送一个POST请求给该推送接口
curl_setopt($ch, CURLOPT_POST, 1);//设置为POST传输,这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);//推送字段数据,POST过去数据
$ret = curl_exec($ch);//执行一个curl会话
curl_close($ch);//关闭一个curl会话
if($ret){//如果推送成功,则标识此订单为已推送,这样下次都不再推送此订单了
$sql = "UPDATE ".$this->pre."ads_shunion SET is_send = 1 WHERE order_id={$val['order_id']}";
$this->db->query($sql);
}
}
}
二、上海导购网接受到的订单数据