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




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

目录
相关文章
|
1月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
126 3
|
4天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
34 6
|
21天前
|
Java API
Java中内置的函数式接口
Java中内置的函数式接口
22 2
|
25天前
|
Java
在Java中如何实现接口?
实现接口是 Java 编程中的一个重要环节,它有助于提高代码的规范性、可扩展性和复用性。通过正确地实现接口,可以使代码更加灵活、易于维护和扩展。
46 3
|
24天前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
71 1
|
24天前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
49 1
|
24天前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
39 1
|
1月前
|
Java Android开发
Eclipse 创建 Java 接口
Eclipse 创建 Java 接口
27 1
|
1月前
|
Java
java线程接口
Thread的构造方法创建对象的时候传入了Runnable接口的对象 ,Runnable接口对象重写run方法相当于指定线程任务,创建线程的时候绑定了该线程对象要干的任务。 Runnable的对象称之为:线程任务对象 不是线程对象 必须要交给Thread线程对象。 通过Thread的构造方法, 就可以把任务对象Runnable,绑定到Thread对象中, 将来执行start方法,就会自动执行Runable实现类对象中的run里面的内容。
39 1
|
1月前
|
Java 开发者
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
45 4