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.使用沙箱手机钱包扫码查看你的优惠券 




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

目录
相关文章
|
10月前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
378 1
|
11月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
294 11
|
12月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
1405 23
|
12月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。
1291 0
|
12月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
550 12
|
Java API 网络架构
java调用api接口自动判断节假日信息
java调用api接口自动判断节假日信息
3881 0
|
消息中间件 缓存 前端开发
从资损百万到零事故:Java 接口幂等设计的艺术与实践
在分布式系统中,重复请求常引发严重资损,如支付双扣、库存超卖等问题,其根源在于接口缺乏幂等性设计。本文通过真实案例揭示幂等性的重要性,并详解8种主流解决方案,涵盖唯一请求ID、乐观锁、悲观锁、状态机等,帮助开发者构建稳定系统,保障业务一致性。无论你是架构师还是开发工程师,都能从中获得实战指导,有效规避重复调用带来的风险。
1264 2
|
存储 安全 Java
深入理解Java序列化接口及其实现机制
记住,序列化不仅仅是把对象状态保存下来那么简单,它涉及到类的版本控制、安全性和性能等多个重要方面。正确理解和实现Java序列化机制对于构建高效、安全和可维护的Java应用至关重要。
370 0
|
安全 Java API
Java 抽象类与接口在 Java17 + 开发中的现代应用实践解析
《Java抽象类与接口核心技术解析》 摘要:本文全面剖析Java抽象类与接口的核心概念与技术差异。抽象类通过模板设计实现代码复用,支持具体方法与状态管理;接口则定义行为规范,实现多态支持。文章详细对比了两者在实例化、方法实现、继承机制等方面的区别,并提供了模板方法模式(抽象类)和策略模式(接口)的典型应用示例。特别指出Java8+新特性为接口带来的灵活性提升,包括默认方法和静态方法。最后给出最佳实践建议:优先使用接口定义行为规范,通过抽象类实现代码复用,合理组合两者构建灵活架构。
471 2