支付宝-同步核销券码

支付宝-同步核销券码

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

注意事项:
1.创建商家券之后 可以在异步通知消息内直接同步券码。这也是官方推荐的
2.同步券码成功后,并不代表该商家券可以领取了。我们需要进行提交库存该商家券才会生效 也就是 修改商家券活动发券数量上限
3.修改商家券活动发券数量上限 所传入的券数量必须是和同步券码的数量一致
4.沙箱环境不会校验券码有效性。
5.沙箱环境下券核销后,对应商家券活动的“券已核销数量”不会更新。
如果我讲的听不懂可以看 接入指南

直接上代码了

请求参数

@Data
public class AlipayVoucherCodeDepositReq  implements Serializable {

    private static final long serialVersionUID = 474437106418183323L;

    @NotBlank(message = "活动ID不能为空")
    @ApiModelProperty(value = "活动ID-选填")
    private String activityId;

    @NotEmpty(message = "券码的数量列表不能为空")
    @ApiModelProperty(value = "券码的数量列表。接口参数为列表类型" +
            "限制:目前最大上传 1000 个。单个code最长64位。" +
            "商户上传的券code列表,code允许包含的字符有0-9、a-z、A-Z、-、_、+、=、|。")
    private List<String> voucherCodes;
}

同步券码

public ResponseResult<JSONObject> alipayMarketingActivityOrderVoucherCodeDeposit(AlipayVoucherCodeDepositReq alipayVoucherCodeDepositReq) {

    // 获取支付宝客户端
    AlipayClient alipayClient = DefaultAlipayConfig.ALIPAY_CLIENT;
    // 同步商家券券码模型类
    AlipayMarketingActivityOrdervoucherCodedepositModel codeDepositModel = new AlipayMarketingActivityOrdervoucherCodedepositModel();
    // 同步商家券券码请求类
    AlipayMarketingActivityOrdervoucherCodedepositRequest codeDepositRequest = new AlipayMarketingActivityOrdervoucherCodedepositRequest();
    // 同步商家券券码响应类
    AlipayMarketingActivityOrdervoucherCodedepositResponse codeDepositResponse;

    // 定义响应结果
    JSONObject jsonObject = new JSONObject();
    try {
        // 活动ID
        codeDepositModel.setActivityId(alipayVoucherCodeDepositReq.getActivityId());
        // 券码列表
        codeDepositModel.setVoucherCodes(alipayVoucherCodeDepositReq.getVoucherCodes());
        // 外部业务单号,用作幂等控制
        codeDepositModel.setOutBizNo(UUID.randomUUID().toString().replace("-",""));
        /*
            商户接入模式
            SELF_MODE 商户自接入模式
            AGENCY_MODE 服务商代接入模式
         */
        codeDepositModel.setMerchantAccessMode("SELF_MODE");
        // 设置请求参数
        codeDepositRequest.setBizModel(codeDepositModel);
        // 发送请求
        codeDepositResponse = alipayClient.execute(codeDepositRequest);
        if (codeDepositResponse.isSuccess()) {
            // 响应信息
            String bodyData = codeDepositResponse.getBody();
            // 解析响应结果
            jsonObject = JSON.parseObject(bodyData);
        }
    } catch (AlipayApiException e) {
        throw new RuntimeException(e);
    }
    return codeDepositResponse.isSuccess() ? ResponseResult.success("同步成功", jsonObject) : ResponseResult.success("同步失败", jsonObject);
}
posted @ 2022-11-09 17:08  橙香五花肉  阅读(112)  评论(0编辑  收藏  举报