首页 > 其他分享 >支付宝-创建商家券活动

支付宝-创建商家券活动

时间:2022-11-09 16:47:09浏览次数:67  
标签:createModel 支付宝 请求 商家 MERCHANT 创建 new

支付宝-创建商家券活动

官方文档 https://opendocs.alipay.com/open/03s1jd?ref=api&scene=a0667e04ac87431eb7e6adc5f13cc8ba

本篇只是附上 创建代码!
重要的事情说三遍!

一定要看接入指南
一定要看接入指南
一定要看接入指南
 
1.创建商家券活动接口同步返回创建请求受理结果,但并不代表创建成功,只有当接收异步通知(alipay.marketing.activity.message.created)才表示活动创建成功。
2.当activity_base_info.code_mode=MERCHANT_UPLOAD时,当接收到异步通知alipay.marketing.activity.message.created (商家券活动创建通知)后,还需要进行券码导入alipay.marketing.activity.ordervouchesh

创建商家券活动

public ResponseResult<String> alipayMarketingActivityOrderVoucherCreate() {
  // 定义时间格式
  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

  // 创建商家券活动模型类
  AlipayMarketingActivityOrdervoucherCreateModel createModel = new AlipayMarketingActivityOrdervoucherCreateModel();
  // 创建商家券活动请求类
  AlipayMarketingActivityOrdervoucherCreateRequest createRequest = new AlipayMarketingActivityOrdervoucherCreateRequest();
  // 创建商家券活动响应类
  AlipayMarketingActivityOrdervoucherCreateResponse createResponse;

  try {
      // 外部业务单号
      createModel.setOutBizNo(UUID.randomUUID().toString().replace("-", ""));
      /*
          商户自接入模式:SELF_MODE
          服务商代接入模式:AGENCY_MODE
       */
      createModel.setMerchantAccessMode("SELF_MODE");

      //==============================================活动基础信息=================================================
      ActivityBaseInfo activityBaseInfo = new ActivityBaseInfo();
      // 活动名称
      activityBaseInfo.setActivityName("满100减50活动");
      /*
          商户上传自定义code: MERCHANT_UPLOAD
          发奖时指定券码发奖: MERCHANT_API
       */
      // 码模式
      activityBaseInfo.setCodeMode("MERCHANT_UPLOAD");
      // 活动基础信息添加到请求参数中
      createModel.setActivityBaseInfo(activityBaseInfo);


      //==============================================券发放模式=================================================
      VoucherSendModeInfo voucherSendModeInfo = new VoucherSendModeInfo();
      // 券发放模式  直领模式: DIRECT_SEND_MODE
      voucherSendModeInfo.setVoucherSendMode("DIRECT_SEND_MODE");
      // 券发放规则
      VoucherSendRuleInfo voucherSendRuleInfo = new VoucherSendRuleInfo();
      /*
          发行券的数量
          code_mode=MERCHANT_UPLOAD模式下数量必须为0。 其他模式下该数值必须是大于0的整数。
       */
      voucherSendRuleInfo.setQuantity(0L);
      // 每人领取限制 1.默认按照支付宝账号进行领取限制。 2.不填写或填入0表示没有领取限制。
      voucherSendRuleInfo.setQuantityLimitPerUser(0L);
      // 券发放开始时间 格式:yyyy-MM-dd HH:mm:ss
      voucherSendRuleInfo.setPublishStartTime(new Date());
      /*
          券发放结束时间 格式:yyyy-MM-dd HH:mm:ss
          1.publish_end_time必须大于当前时间
          2.publish_end_time必须大于publish_start_time
          3.券发放结束时间publish_end_time 与 券发放开始时间publish_start_time 间隔必须小于等于180天
       */
      voucherSendRuleInfo.setPublishEndTime(simpleDateFormat.parse("2022-11-30 06:00:00"));
      voucherSendModeInfo.setVoucherSendRuleInfo(voucherSendRuleInfo);
      // 券发放模式添加到请求参数中
      createModel.setVoucherSendModeInfo(voucherSendModeInfo);


      //==============================================券优惠抵扣信息=================================================
      VoucherDeductInfo voucherDeductInfo = new VoucherDeductInfo();
      /*
          满减券: FIX_VOUCHER
          折扣券: DISCOUNT_VOUCHER
          特价券: SPECIAL_VOUCHER
       */
      voucherDeductInfo.setVoucherType("FIX_VOUCHER");
      // 满减券
      FixVoucherInfo fixVoucherInfo = new FixVoucherInfo();
      // 面额 取值范围:[0.1,3000] 单位为元
      fixVoucherInfo.setAmount("50");
      // 门槛金额 取值范围:[0.1,50000] 1.该字段不填写,认为无门槛。 2.币种为人民币,单位为元。 3.小数点以后最多保留两位
      fixVoucherInfo.setFloorAmount("100");
      voucherDeductInfo.setFixVoucherInfo(fixVoucherInfo);
      // 券优惠抵扣信息添加到请求参数中
      createModel.setVoucherDeductInfo(voucherDeductInfo);


      //==============================================券可用范围=================================================
      VoucherAvailableScopeInfo voucherAvailableScopeInfo = new VoucherAvailableScopeInfo();
      // 券可用地理位置
      VoucherAvailableGeographyScopeInfo geographyScopeInfo = new VoucherAvailableGeographyScopeInfo();
      /*
          可用门店: SHOP
          可用城市: CITY_CODE
       */
      // 券可用地理位置类型
      geographyScopeInfo.setAvailableGeographyScopeType("SHOP");
      // 券可用门店
      VoucherAvailableGeographyShopInfo geographyShopInfo = new VoucherAvailableGeographyShopInfo();
      // new VoucherAvailableGeographyAllShopInfo()全部门店可用
      geographyShopInfo.setAvailableGeographyAllShop(new VoucherAvailableGeographyAllShopInfo());
      geographyScopeInfo.setAvailableGeographyShopInfo(geographyShopInfo);
      voucherAvailableScopeInfo.setVoucherAvailableGeographyScopeInfo(geographyScopeInfo);
      // 券可用范围添加到请求参数中
      createModel.setVoucherAvailableScopeInfo(voucherAvailableScopeInfo);


      //==============================================券核销限制=================================================
      VoucherUseRuleInfo voucherUseRuleInfo = new VoucherUseRuleInfo();
      //券核销时间
      VoucherUseTimeInfo voucherUseTimeInfo = new VoucherUseTimeInfo();
      /*
          绝对时间: ABSOLUTE
          相对时间: RELATIVE
       */
      voucherUseTimeInfo.setPeriodType("ABSOLUTE");
      VoucherAbsolutePeriodInfo voucherAbsolutePeriodInfo = new VoucherAbsolutePeriodInfo();
      //券可使用的开始时间
      voucherAbsolutePeriodInfo.setValidBeginTime(new Date());
      //券可使用的结束时间
      voucherAbsolutePeriodInfo.setValidEndTime(simpleDateFormat.parse("2022-12-30 07:00:00"));

      voucherUseTimeInfo.setAbsolutePeriodInfo(voucherAbsolutePeriodInfo);
      voucherUseRuleInfo.setVoucherUseTimeInfo(voucherUseTimeInfo);
      //券核销限制添加到请求参数中
      createModel.setVoucherUseRuleInfo(voucherUseRuleInfo);


      //==============================================券引导详情=================================================
      VoucherCustomerGuideInfo voucherCustomerGuideInfo = new VoucherCustomerGuideInfo();
      //券核销详情
      VoucherUseGuideInfo voucherUseGuideInfo = new VoucherUseGuideInfo();
      /*
          券码扫码核销: OFFLINE_CODE
          小程序线上核销: MINI_APP
       */
      List<String> guideList = new ArrayList<>();
      guideList.add("MINI_APP");
      // 使用引导模式
      voucherUseGuideInfo.setUseGuideMode(guideList);
      // 小程序核销引导
      VoucherMiniAppUseGuideInfo voucherMiniAppUseGuideInfo = new VoucherMiniAppUseGuideInfo();
      // 指定跳转到mini_app_id时的具体页面路径
      voucherMiniAppUseGuideInfo.setMiniAppUrl("alipays://platformapi/startapp?appId=2017052601179134");
      voucherUseGuideInfo.setMiniAppUseGuideInfo(voucherMiniAppUseGuideInfo);
      voucherCustomerGuideInfo.setVoucherUseGuideInfo(voucherUseGuideInfo);
      // 券引导详情添加到请求参数中
      createModel.setVoucherCustomerGuideInfo(voucherCustomerGuideInfo);


      //==============================================券展示信息=================================================
      VoucherDisplayPatternInfo voucherDisplayPatternInfo = new VoucherDisplayPatternInfo();
      // 商户品牌名称
      voucherDisplayPatternInfo.setBrandName("肯德基");
      // 上传图片接口
      AlipayMarketingMaterialImageUploadRequest request = new AlipayMarketingMaterialImageUploadRequest();
      // 获取本地图片地址 因为是本地项目运行所以图方便 就选择了本地的图片
      FileItem fileContent = new FileItem("C://123.png");
      // 图片的byte字节数组。图片大小限制为2M
      request.setFileContent(fileContent);
      // brand_logo字段,file_key=PROMO_BRAND_LOGO,上传图片尺寸600*600,支持格式:png、jpg、jpeg、bmp,大小不超过2MB
      request.setFileKey("PROMO_BRAND_LOGO");
      request.setMerchantAccessMode("AGENCY_MODE");
      // 返回的resource_id即为该参数的值。
      AlipayMarketingMaterialImageUploadResponse response = alipayClient.execute(request);
      voucherDisplayPatternInfo.setBrandLogo(response.getResourceId());
      // 券详细使用说明
      voucherDisplayPatternInfo.setVoucherDescription("1、本券不可兑换现金,不可找零。2、每个用户最多可以领取1张。3、如果订单发生退款,优惠券无法退还。");
      // 券展示信息添加到请求参数中
      createModel.setVoucherDisplayPatternInfo(voucherDisplayPatternInfo);

      // 设置请求参数
      createRequest.setBizModel(createModel);
      // 发送请求
      createResponse = alipayClient.execute(createRequest);
  } catch (Exception e) {
      throw new RuntimeException(e);
  }
  return createResponse.isSuccess() ? ResponseResult.success("创建成功", createResponse.getActivityId()) : ResponseResult.success("创建失败", null);
}

上面就是 创建商家券的所有代码了,其实很简单官方文档下也有示例。
需要注意的有以下几点
1.创建商家券时候选的码模式选择为 商户上传自定义code: MERCHANT_UPLOAD,因为是沙箱环境,领券操作只能是码模式为MERCHANT_UPLOAD这种券
2.创建成功后并不真的代表以成功,必须接收到异步通知消息才是创建成功。配置异步通知消息

标签:createModel,支付宝,请求,商家,MERCHANT,创建,new
From: https://www.cnblogs.com/zjh0420/p/16874266.html

相关文章