koubei.marketing.campaign.activity.modify(活动修改接口)java版

简介: 说明:  本帖是利用支付宝正式环境测试账号测试活动修改接口接口,请求中根据文档传入了必传参数,大家可以配置自己的环境,根据自己的需求严格按照文档要求添加相关的可选参数,此demo仅供参考 测试环境:Eclipse+JDK1.6及以上+Tomcat6.0及以上       需要注意的是当前接口只能针对“已启动(STARTED)”的活动,修改特定的属性。

说明: 
 本帖是利用支付宝正式环境测试账号测试活动修改接口接口,请求中根据文档传入了必传参数,大家可以配置自己的环境,根据自己的需求严格按照文档要求添加相关的可选参数,此demo仅供参考 
测试环境:Eclipse+JDK1.6及以上+Tomcat6.0及以上      
 
需要注意的是当前接口只能针对“已启动(STARTED)”的活动,修改特定的属性。通过活动修改接口,可修改一下几点: 活动结束时间/券有效期 —— 只可延长 活动库存 —— 只可追加 活动参与限制(包含每月/周/日) —— 只可追加 活动门店/券适用门店 —— 只可追加 
下面以修改营销活动延期1个月为例演示如何使用接口。如需了解更详细的活动创建配置说明, 
可参进阶说明。 

koubei.marketing.campaign.activity.modify(活动修改接口)接口示例代码 

package com.alipay.demo;  import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.Random;  import com.alipay.api.AlipayApiException;import com.alipay.api.AlipayClient;import com.alipay.api.DefaultAlipayClient;import com.alipay.api.domain.BudgetInfo;import com.alipay.api.domain.ConstraintInfo;import com.alipay.api.domain.ItemInfo;import com.alipay.api.domain.KoubeiMarketingCampaignActivityModifyModel;import com.alipay.api.domain.PidShopInfo;import com.alipay.api.domain.PointCard;import com.alipay.api.domain.PromoTool;import com.alipay.api.domain.PublishChannel;import com.alipay.api.domain.RecruitTool;import com.alipay.api.domain.SendRule;import com.alipay.api.domain.UseRule;import com.alipay.api.domain.Voucher;import com.alipay.api.request.KoubeiMarketingCampaignActivityModifyRequest;import com.alipay.api.response.KoubeiMarketingCampaignActivityModifyResponse;import com.alipay.config.AlipayConfig;  public class koubeiMarketingCampaignActivityModify {    /**     *     * koubei.marketing.campaign.activity.modify 活动修改接口     *     * @throws ParseException     * @throws AlipayApiException     */    public static void main(String[] args) throws ParseException, AlipayApiException {          AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,                AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset,                AlipayConfig.alipay_public_key, AlipayConfig.sign_type);        KoubeiMarketingCampaignActivityModifyRequest request = new KoubeiMarketingCampaignActivityModifyRequest();        KoubeiMarketingCampaignActivityModifyModel model = new KoubeiMarketingCampaignActivityModifyModel();          // 外部批次ID,用户指定,每次请求保持唯一        model.setOutBizNo(getOutBizNoModify());        // 活动id        model.setCampId("20180314000000002577674000151339");        // 活动名称 不允许修改,必须与活动详情查询的结果保持一致        model.setName("口碑门店消费满10元送1元代金券");        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date startTime = sdf.parse("2018-03-15 00:00:00");        Date endTime = sdf.parse("2018-4-15 00:00:00");        // 活动开始时间 不允许修改,必须与活动详情查询的结果保持一致        model.setStartTime(startTime);        // 活动结束时间 活动结束时间只允许延长        model.setEndTime(endTime);        // 活动类型 不允许修改,必须与活动详情查询的结果保持一致        model.setType("RECHARGE_SEND");        // 活动详细说明 不允许修改,必须与活动详情查询的结果保持一致        model.setDesc("该活动是用于挽回流失用户的");        // 投放渠道 当活动类型为DIRECT_SEND或者REAL_TIME_SEND时必填,为CONSUME_SEND时必须为空        // model.setPublishChannels(getPublishChannelsModify());        // 招商工具        model.setRecruitTool(getRecruitToolModify());        // 活动预算        model.setBudgetInfo(getBudgetInfoModify());        // 活动限制信息        model.setConstraintInfo(getConstraintInfoModify());          /******** 营销工具集 **********/        List toolList = new ArrayList();        toolList.add(getPromoToolModify());        model.setPromoTools(toolList);        request.setBizModel(model);        KoubeiMarketingCampaignActivityModifyResponse response = alipayClient.execute(request);        if (response.isSuccess()) {            System.out.println("调用成功");        } else {            System.out.println("调用失败");        }        System.out.println(response.getBody());    }      // 招商工具信息    private static RecruitTool getRecruitToolModify() throws ParseException {        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date startTime = sdf.parse("2018-03-15 00:00:00");        Date endTime = sdf.parse("2018-04-15 00:00:00");        RecruitTool recruitTool = new RecruitTool();        // 招商开始时间        recruitTool.setStartTime(startTime);        // 招商结束时间        recruitTool.setEndTime(endTime);        // 招商pid和pid对应的门店列表(对于品牌商,此字段必填,活动和券的适用门店为空。对于商圈,此字段需为空,门店需要填在活动和券的适用门店上)        recruitTool.setPidShops(getPidShopsModify());        return recruitTool;    }      // 招商pid和pid对应的门店列表(对于品牌商,此字段必填,活动和券的适用门店为空。对于商圈,此字段需为空,门店需要填在活动和券的适用门店上)    private static List getPidShopsModify() {        List pidShopsList = new ArrayList();        PidShopInfo pidShopInfo = new PidShopInfo();        // 商户pid        pidShopInfo.setPid("2088501624560335");        // pid下的门店列表        pidShopInfo.setShopIds(getShopIdsModify());        pidShopsList.add(pidShopInfo);        return pidShopsList;    }      // pid下的门店列表    private static List getShopIdsModify() {        List shopIds = new ArrayList();        shopIds.add("2017031500077000000027299729");        shopIds.add("2017031000077000000027197410");        return shopIds;    }      /**     * 外部批次ID     *     * @return     */    private static String getOutBizNoModify() {        SimpleDateFormat simpleDateFormat;        simpleDateFormat = new SimpleDateFormat("yyyyMMdd");        Date date = new Date();        String str = simpleDateFormat.format(date);        Random random = new Random();        int rannum = (int) (random.nextDouble() * (999 - 100 + 1)) + 100;// 获取5位随机数        return str + rannum;// 当前时间    }      /**     * 投放渠道 当活动类型为DIRECT_SEND或者REAL_TIME_SEND时必填,为CONSUME_SEND时必须为空     *     * @return     */    private static List getPublishChannelsModify() {        // TODO Auto-generated method stub        List l = new ArrayList();        PublishChannel p = new PublishChannel();        p.setType("SHOP_DETAIL");        p.setName("投放到店铺");        l.add(p);        return l;    }      /**     * 活动限制信息     *     * @return     */    private static ConstraintInfo getConstraintInfoModify() {        ConstraintInfo constraintInfo = new ConstraintInfo();        // 活动期间用户能够参与的次数限制 ,不填则不做限制        // constraintInfo.setUserWinCount("1");        // 活动期间用户能够参与的频率限制 ,不填则不限制参与频率, 每日中奖1次: D||1        // constraintInfo.setUserWinFrequency("D||3");        // 人群规则组ID 人群规则组ID 仅直发奖类型活动设置有效,通过调用营销活动人群组规则创建接口参数返回        // 针对指定人群的约束条件        // constraintInfo.setCrowdRestriction("NEW_MEMBER_PROMO");        // 活动适用的门店列表仅品牌商发起的招商活动可为空 最多支持10w家门店        constraintInfo.setSuitShops(getSuitShopsModify());        // 最低消费金额,单位元 仅在创建消费送礼包活动时设置        // constraintInfo.setMinCost("10");        return constraintInfo;    }      /**     * 券对象,当活动类型为POINT_SEND时为null,其他活动类型此字段必填     *     * @return     * @throws ParseException     */    private static Voucher getVoucherModify() throws ParseException {        Voucher voucher = new Voucher();        // 券类型,目前支持以下类型: EXCHANGE:兑换券; MONEY:代金券; REDUCETO:减至券; RATE:折扣券        voucher.setType("MONEY");        // 该字段仅在兑换券条件下(即券类型为EXCHANGE),用于设置兑换券的核销方式        // voucher.setVerifyMode("MERCHANT_SCAN");        // 名称        voucher.setName("口碑门店满20减5");          // 券的使用说明        List UseInstructionsList = new ArrayList();        UseInstructionsList.add("口碑门店满20减5特价优惠");        voucher.setUseInstructions(UseInstructionsList);        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date startTime = sdf.parse("2018-03-15 00:00:00");        Date endTime = sdf.parse("2018-04-15 00:00:00");        voucher.setStartTime(startTime);        voucher.setEndTime(endTime);        // 券LOGO文件ID,调用图片上传接口alipay.offline.material.image.upload获得        voucher.setLogo("gKpPK40RSNeBiMxDsat8CQAAACMAAQED");        // 券有效期类型,目前支持以下类型: RELATIVE:相对有效期 ,FIXED:绝对有效期        voucher.setValidateType("FIXED");        // 券副标题        voucher.setBrandName("券副标题测试");        // 券生效的方式,目前支持以下方式 立即生效:IMMEDIATELY; 延迟生效:DELAY 仅在券有效期类型为相对有效期时生效        voucher.setEffectType("IMMEDIATELY");        // 券面额        voucher.setWorthValue("1");        // 券的使用规则信息        voucher.setUseRule(getUseRuleModify());        // 单品信息 兑换券不允许设置单品信息 减至券必须设置单品信息 其他类型券可按需设置        voucher.setItemInfo(getItemInfoModify());        // 券的备注        voucher.setVoucherNote("券的备注测试");        return voucher;    }      /**     * Item_Info 单品信息     *     * @return     */    private static ItemInfo getItemInfoModify() {        // TODO Auto-generated method stub        ItemInfo itemInfo = new ItemInfo();        // 单品券说明        itemInfo.setItemText("单品卷测试");        // 单品名称        itemInfo.setItemName("测试单品优惠");        // 券适用的单品码列表 最少配置1个单品码 最多配置500个单品码        itemInfo.setItemIds(getitemIdsModify());        return itemInfo;    }      /**     * item_ids 单品码列表     *     * @return     */    private static List getitemIdsModify() {          List l = new ArrayList();        l.add("000123456");        return l;    }      /**     * 券的使用规则信息     *     * @return     */    private static UseRule getUseRuleModify() {        UseRule useRule = new UseRule();        // 券适用门店列表        // 仅品牌商发起的招商活动可为空        // 直发奖类型活动必须与活动适用门店一致        // 最多支持10w家门店        useRule.setSuitShops(getSuitShopsModify());        return useRule;    }      /**     * 活动适用的门店列表 仅品牌商发起的招商活动可为空 最多支持10w家门店     *     * @return     */    private static List getSuitShopsModify() {          List SuitShops = new ArrayList();        SuitShops.add("2017031500077000000027299729");        SuitShops.add("2017031000077000000027197410");        return SuitShops;    }      /**     * 营销工具集     *     * @return     * @throws ParseException     */    private static PromoTool getPromoToolModify() throws ParseException {        PromoTool promoTool = new PromoTool();        // 券对象        promoTool.setVoucher(getVoucherModify());        // 单个营销工具的生效状态,当在招商部分券失效后会使用这个字段        // promoTool.setStatus("");        // 奖品发放的规则        promoTool.setSendRule(getSendRuleModify());        // 集点卡工具,仅在活动类型为POINT_SEND时才有效且必填,其他活动类型此字段必须为null        // promoTool.setPointCard(getPointCardModify());        // 奖品发放的规则        promoTool.setSendRule(getSendRuleModify());        return promoTool;    }      /**     * 集点卡工具,仅在活动类型为POINT_SEND时才有效且必填,其他活动类型此字段必须为null     *     */    private static PointCard getPointCardModify() {          PointCard pointCard = new PointCard();        // 工具类型,目前支持: 集点卡:POINT_CARD        // pointCard.setType("POINT_CARD");        // //工具的名称        // pointCard.setName("集点卡");        // //工具的描述        // pointCard.setDesc("集点卡的功能描述");        // //工具的有效期的起始时间        // pointCard.setStartTime(startTime);        // //工具的有效期的结束时间(必须晚于活动的结束时间)        // pointCard.setEndTime(endTime);        // //工具的LOGO文件ID        // pointCard.setLogo("1T8Pp00AT7eo9NoAJkMR3AAAACMAAQEC");          return pointCard;    }      /**     * 奖品发放的规则     *     * @return     */    private static SendRule getSendRuleModify() {        // TODO Auto-generated method stub        SendRule s = new SendRule();        // 发券最低消费金额        s.setMinCost("100");        return s;    }      /**     * 活动预算     *     * @return     */    private static BudgetInfo getBudgetInfoModify() {        // 活动预算        BudgetInfo budgetInfo = new BudgetInfo();        // 预算类型        budgetInfo.setBudgetType("QUANTITY");        // 预算数量        budgetInfo.setBudgetTotal("10258");        return budgetInfo;    }  }

请求参数注意事项: 

1.app_auth_token:ISV/开发者可以通过第三方应用授权([url]https://openclub.alipay.com/read.php?tid=1649[/url])得到商家授权令牌(app_auth_token)作为请求参数传入,实现代商家发起请求的能力; 
2.voucher.Logo:券LOGO文件ID,调用alipay.offline.material.image.upload(图片上传接口)获得,接口示例 
可点击[url]https://openclub.alipay.com/read.php?tid=2316[/url]根据帖子进行测试获取image_id 
3.SuitShops:活动适用的门店列表 ,这个需要使用查询商户的门店编号列表接口([url]https://openclub.alipay.com/read.php?tid=2321[/url])进行查询获取 

4.camp_id(活动id)通过koubei.marketing.campaign.activity.create (活动创建接口)([url]https://openclub.alipay.com/read.php?tid=2638[/url])调用成功同步返回

5.name 活动名称 不允许修改,必须与活动详情查询的结果保持一致 
6.start_time 活动开始时间 不允许修改,必须与活动详情查询的结果保持一致 
7.end_time 活动结束时间 活动结束时间只允许延长 
[color='''''rgba(0, 0, 0, 0.650980392156863)''''']8.type 活动类型 不允许修改,必须与活动详情查询的结果保持一致[color='''''rgba(0, 0, 0, 0.650980392156863)''''']9.desc 活动详细说明 不允许修改,必须与活动详情查询的结果保持一致 
调用成功返回信息: 

{"koubei_marketing_campaign_activity_modify_response":{"code":"10000","msg":"Success","camp_status":"MODIFYING"},"sign":"ZEzTg0IckPXO/OFrvi1g5q6bwTE20DfWe+XU2mGuxu3YOgQiVrhnz1H6oL5MFSHLT2/rv5mEtNk8NwBldJki826ZzcOjy03oRDfTgpiFnEFGjAebDGz2Rz3r8rjDr2JDtyPXlFTGSFtMqa8qPzSS7d8ZMRS8HCMD8crxWOOhZbs="}

如何查看生成的优惠券: 
1.创建活动成功后,可以到沙箱工具中点击口碑门店账号&二维码转换工具 :[url]https://openhome.alipay.com/platform/appDaily.htm?tab=tool[/url]


2.将你填写的SuitShops放入,生成二维码 



3.使用沙箱手机钱包扫码查看你的优惠券 

71_25168_1c5e4d053a8c4ac.png




如有疑问欢迎跟帖提问,不足之处欢迎多多吐槽!!!

目录
相关文章
|
23小时前
|
存储 安全 Java
[Java基础面试题] Map 接口相关
[Java基础面试题] Map 接口相关
|
6天前
|
Java 开发者
探索 Java 的函数式接口和 Lambda 表达式
【4月更文挑战第19天】Java 中的函数式接口和 Lambda 表达式提供了简洁、灵活的编程方式。函数式接口有且仅有一个抽象方法,用于与 Lambda(一种匿名函数语法)配合,简化代码并增强可读性。Lambda 表达式的优点在于其简洁性和灵活性,常用于事件处理、过滤和排序等场景。使用时注意兼容性和变量作用域,它们能提高代码效率和可维护性。
|
7天前
|
Java
Java接口中可以定义哪些方法?
【4月更文挑战第13天】
14 0
Java接口中可以定义哪些方法?
|
9天前
|
设计模式 Java
Java接口与抽象类
Java接口与抽象类
17 0
|
13天前
|
安全 Java 编译器
接口之美,内部之妙:深入解析Java的接口与内部类
接口之美,内部之妙:深入解析Java的接口与内部类
35 0
接口之美,内部之妙:深入解析Java的接口与内部类
|
15天前
|
存储 Java
java接口和内部类
java接口和内部类
|
16天前
|
缓存 安全 Java
Java中函数式接口详解
Java 8引入函数式接口,支持函数式编程。这些接口有单一抽象方法,可与Lambda表达式结合,简化代码。常见函数式接口包括:`Function<T, R>`用于转换操作,`Predicate<T>`用于布尔判断,`Consumer<T>`用于消费输入,`Supplier<T>`用于无参生成结果。开发者也可自定义函数式接口。Lambda表达式使实现接口更简洁。注意异常处理和线程安全。函数式接口广泛应用于集合操作、并行编程和事件处理。提升代码可读性和效率,是现代Java开发的重要工具。
29 0
|
17天前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
40 0
|
17天前
|
Java
Java中的多线程实现:使用Thread类与Runnable接口
【4月更文挑战第8天】本文将详细介绍Java中实现多线程的两种方法:使用Thread类和实现Runnable接口。我们将通过实例代码展示如何创建和管理线程,以及如何处理线程同步问题。最后,我们将比较这两种方法的优缺点,以帮助读者在实际开发中选择合适的多线程实现方式。
23 4
|
19天前
|
Java
在Java中,定义一个接口的步骤如下
【4月更文挑战第6天】在Java中,定义一个接口的步骤如下
5 1