cn.binarywang.wx.miniapp.bean.delivery.base.WxMaDeliveryBaseRequest Maven / Gradle / Ivy
package cn.binarywang.wx.miniapp.bean.delivery.base;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
/**
* 微信小程序 即时配送 基础请求参数.
*
* @author Luo
* @version 1.0
* created on 2021-10-14 10:36
*/
@Data
@Accessors(chain = true)
public abstract class WxMaDeliveryBaseRequest implements Serializable {
private static final long serialVersionUID = -6811550517417623460L;
/**
* 配送公司ID.
*
* 是否必填:是
*
*/
@SerializedName("delivery_id")
private String deliveryId;
/**
* 唯一标识订单的 ID,由商户生成, 不超过 128 字节.
*
* 是否必填:是
*
*/
@SerializedName("shop_order_id")
private String shopOrderId;
/**
* 下单用户的openid.
*
* 是否必填:是
*
*/
@SerializedName("openid")
private String openid;
/**
* 商家门店编号,在配送公司登记,如果只有一个门店,美团闪送必填, 值为店铺id.
*
* 是否必填:是
*
*/
@SerializedName("shop_no")
private String shopNo;
/**
* 商家id,由配送公司分配的appKey.
*
* 是否必填:是
*
*/
@SerializedName("shopid")
private String shopId;
/**
* 用配送公司提供的appSecret加密的校验串.
*
* 除了平台本身的加解密和签名,和订单相关的请求还需要带上运力侧签名delivery_sign,签名规则为
* 如果接口请求里有字段shop_order_id ,则delivery_sign=SHA1(shopid + shop_order_id + AppSecret),其中shopid对应运力侧的appkey,shop_order_id对应订单id,AppSecret即配送公司帐号对应的秘钥
* 如果请求里没有字段shop_order_id ,则delivery_sign=SHA1(shopid + AppSecret),其中shopid对应运力侧的appkey,AppSecret即配送公司帐号对应的秘钥
* 示例:shopid=“test_shop_id”,shop_order_id =“test_shop_order_id”, AppSecret=“test_app_secrect”,则delivery_sign=“a93d8d6bae9a9483c1b1d4e8670e7f6226ec94cb”
* 是否必填:是
*
*/
@Setter(AccessLevel.NONE)
@SerializedName("delivery_sign")
private String deliverySign;
/**
* 配送公司分配的appSecret.
*
* 是否必填:是
*
*/
@Expose
private String appSecret;
/**
* 获取签名.
*
* 除了平台本身的加解密和签名,和订单相关的请求还需要带上运力侧签名delivery_sign,签名规则为
* 如果接口请求里有字段shop_order_id ,则delivery_sign=SHA1(shopid + shop_order_id + AppSecret),其中shopid对应运力侧的appkey,shop_order_id对应订单id,AppSecret即配送公司帐号对应的秘钥
* 如果请求里没有字段shop_order_id ,则delivery_sign=SHA1(shopid + AppSecret),其中shopid对应运力侧的appkey,AppSecret即配送公司帐号对应的秘钥
* 示例:shopid=“test_shop_id”,shop_order_id =“test_shop_order_id”, AppSecret=“test_app_secrect”,则delivery_sign=“a93d8d6bae9a9483c1b1d4e8670e7f6226ec94cb”
* 是否必填:是
*
*
* @return 结果
*/
public String getDeliverySign() {
if (StringUtils.isBlank(getShopId()) || StringUtils.isBlank(getAppSecret())) {
throw new RuntimeException("shopId or appSecret can not be empty");
}
String str = getShopId();
if (StringUtils.isNotBlank(getShopOrderId())) {
str = str.concat(getShopOrderId());
}
str = str.concat(getAppSecret());
this.deliverySign = DigestUtils.sha1Hex(str);
return this.deliverySign;
}
}