为什么生成的卡券与实际的卡券长度不一致?

为什么生成的卡券与实际的卡券长度不一致?

用户调用 youzan.trade.virtualticket.third.create.3.0.2 生成的卡券 Code 是 21 位,在用户自己的服务器上看到的和日志管理 debug 看到的都一样

但是实际上二维码识别出来的却是 20 位

image.png

image.png

答: 这是因为卡券的长度限制最大为 20 位,系统默认会对截取前 20 位作为卡券编码,因此在使用的时候需要注意,否则会导致第三方系统保存的数据与实际卡券不一致的问题。

我们可以在 YouzanTradeVirtualticketThirdCreateParams 这个类中看到解释:

public class YouzanTradeVirtualticketThirdCreateParams extends AbstractApiParams {

  public static final Long serialVersionUID = 1L;
  /** 统一核销码 如果长度小于20,有赞微商城则无法识别 */
  @JSONField(name = "code")
  private String code;
  /** 券码 */
  @JSONField(name = "ticket_nos")
  private List<String> ticketNos;
  /** orderNo,兼容方案,orderIdvsorderNo存在一个即可 */
  @JSONField(name = "tid")
  private String tid;