id; $store_id = $this->store_id; $goods_id = $this->goods_id; $out_item_id = $this->out_item_id; $category_id = $this->category_id; $store_mini = StoreAliMini::findOne($id); if (empty($goods_id) && strpos($out_item_id, 'cyy_') === 0) { $goods_id = str_replace('cyy_', '', $out_item_id); } if (empty($goods_id)) { throw new \Exception('非本商城商品,不可操作'); } $is_edit = 0; $request = new AlipayOpenAppItemCreateRequest(); //判断是否添加过商品 $alipayGoodsLog = AlipayGoodsLog::get($id, $goods_id); if ($alipayGoodsLog) { $is_edit = 1; $request = new AlipayOpenAppItemModifyRequest(); } $form = new AlipayThirdForm(); $goodsInfo = Goods::findOne(['id' => $goods_id, 'store_id' => $store_id]); $marketingImageResult = $form->uploadMarketingImage($id, $goodsInfo->cover_pic); if ($marketingImageResult['code']) { throw new \Exception('添加主图失败' . $marketingImageResult['msg']); } $goods_pic_list = GoodsPic::find()->where(['goods_id' => $goods_id, 'is_delete' => 0]) ->select('pic_url')->limit(3)->column(); $image_list = []; foreach ($goods_pic_list as $goods_pic_item) { $marketingPicListImageResult = $form->uploadMarketingImage($id, $goods_pic_item, AlipayMarketingImageEnhanceUploadRequest::ITEM_IMAGE_LIST); if (!$marketingPicListImageResult['code']) { $image_list[] = $marketingPicListImageResult['data']['image_id']; } } $sale_status = 'AVAILABLE'; if (!intval($goodsInfo->status)) { $sale_status = 'DELISTING'; } if (intval($goodsInfo->is_delete)) { $sale_status = 'FREEZE'; } $sku_list = []; if (intval($goodsInfo->use_attr)) { Goods::skuAttr($goodsInfo); $goods_attr = json_decode($goodsInfo->attr, true); foreach ($goods_attr as $goods_attr_index => $goods_attr_item) { $sku_list[$goods_attr_index]['sale_status'] = intval($goodsInfo->is_delete) ? $sale_status : 'DELISTING'; if ($goods_attr_item['num'] > 0) { $sku_list[$goods_attr_index]['sale_status'] = $sale_status; } $sku_attr_list = []; foreach ($goods_attr_item['attr_list'] as $attr_item) { $attr_name_arr = Attr::find()->alias('a')->leftJoin(['ag' => AttrGroup::tableName()], 'a.attr_group_id = ag.id') ->where(['a.id' => $attr_item['attr_id']])->select('a.attr_name, ag.attr_group_name') ->asArray()->one(); $sku_attr_list[] = [ 'attr_key' => $attr_name_arr['attr_group_name'], 'attr_value' => $attr_name_arr['attr_name'] ]; } $sku_list[$goods_attr_index]['sku_attrs'] = $sku_attr_list; $sku_list[$goods_attr_index]['sale_price'] = bcmul($goods_attr_item['price'], 100); $sku_list[$goods_attr_index]['out_sku_id'] = $goods_attr_item['cyy_skuId']; $thumb_img = ''; $marketingAttrImageResult = $form->uploadMarketingImage($id, $goods_attr_item['pic'], AlipayMarketingImageEnhanceUploadRequest::ITEM_SKU_THUMB_IMG); if (!$marketingAttrImageResult['code']) { $thumb_img = $marketingAttrImageResult['data']['image_id']; } $sku_list[$goods_attr_index]['thumb_img'] = $thumb_img; $sku_list[$goods_attr_index]['stock_num'] = $goods_attr_item['num']; $sku_list[$goods_attr_index]['barcode'] = $goods_attr_item['no']; $sku_list[$goods_attr_index]['original_price'] = bcmul($goods_attr_item['original_price'], 100); $sku_list[$goods_attr_index]['sku_type'] = 'SALE'; } } $data = [ 'title' => $goodsInfo->name, 'path' => "alipays://platformapi/startApp?appId={$store_mini->auth_app_id}page=goods/goods/goods?id=" . $goodsInfo->id, 'head_img' => $marketingImageResult['data']['image_id'], 'category_id' => $category_id,//test 'out_item_id' => 'cyy_' . $goodsInfo->id, 'sale_price' => bcmul($goodsInfo->price, 100), 'original_price' => bcmul($goodsInfo->original_price, 100), 'sale_status' => $sale_status, //可售卖: AVAILABLE; 已下架: DELISTING; 冻结: FREEZE 'item_type' => '1', 'desc' => '', 'direct_path' => "alipays://platformapi/startApp?appId={$store_mini->auth_app_id}page=goods/goods/goods?id=" . $goodsInfo->id, 'image_list' => $image_list, 'price_unit' => '元', 'stock_num' => $goodsInfo->goods_num, 'skus' => $sku_list, 'barcode' => $goodsInfo->goods_no, 'item_details_page_model' => 1 ]; if (empty(trim($category_id))) { unset($data['category_id']); } if (intval($goodsInfo->use_attr)) { unset($data['sale_price'], $data['original_price'], $data['sale_status'], $data['stock_num']); } else { unset($data['skus']); } if (!$is_edit) { unset($data['direct_path']); } else { unset($data['item_details_page_model']); } \Yii::error($data); $form->biz_content = json_encode($data); $result = $form->miniCommon($request, 0, $id); if (!empty($result->code) && $result->code == 10000) { AlipayGoodsLog::add($id, $goods_id, $result->item_id); return [ 'code' => 0, 'msg' => "成功", 'data' => $result ]; } else { throw new \Exception($result->sub_msg); } } catch (\Exception $e) { debug_log($e->getMessage(), 'alipay_goods.log'); return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } }