微信小程序 发货信息录入接口 对接

/**
     * 获取小程序的access_token
     * @return
     */
    public String  getAccessToken() {
        /*if(RedisUtil.hasKey(accessTokenToRedis)){
            return RedisUtil.get(accessTokenToRedis);
        }*/
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+wechatpayAppid+"&secret="+wechatpayAppsecret)
                .get()
                .build();

        try {
            Response response = client.newCall(request).execute();
            Gson gson=new Gson();
            Type mapType = new TypeToken<Map<String, Object>>(){}.getType();
            Map<String, String> map = gson.fromJson(response.body().string(), mapType);
            //7200秒失效
            //RedisUtil.set(accessTokenToRedis,map.get("access_token"),7000);
            return map.get("access_token");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 发货操作
     * @param dto
     * @return
     */
    public Map<String, Object>  uploadShippingInfo(UploadShippingInfoDto dto) {
        String accessToken = getAccessToken();
        String format = DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss.SSSXXX");

        Map<String,Object> param=new HashMap<>();
        //param.put("access_token",accessToken);

        Map<String,Object> orderKey=new HashMap<>();
        orderKey.put("order_number_type",1);
        orderKey.put("mchid",wechatpayMchid);
        orderKey.put("out_trade_no",dto.getOutTradeNo());

        param.put("order_key",orderKey);

        param.put("logistics_type",1);
        param.put("delivery_mode",1);

        List<Map<String,Object>> shippingList=new ArrayList<>();
        Map<String,Object> shippingListMap=new HashMap<>();
        shippingListMap.put("tracking_no",dto.getTrackingNo());

        /**
         * 编码详见
         * https://api.weixin.qq.com/cgi-bin/express/delivery/open_msg/get_delivery_list?access_token=85_jL0AcektxhTuYO9RujtOPX2Ohf6i5zuWlNRJSc4gK0opZy76517YOV4ecOrheVR0ogq8ORF0WoZa-N-M91muD6g9HHWIaBPUmq0IPmHMTPZd2OpY0LK2SqjteHUTIBdAGANCV
         */
        shippingListMap.put("express_company",dto.getExpressCompany());
        shippingListMap.put("item_desc",dto.getItemDesc());

        Map<String,Object> contact=new HashMap<>();
        contact.put("consignor_contact",dto.getConsignorContact());
        contact.put("receiver_contact",dto.getReceiverContact());

        shippingListMap.put("contact",contact);

        shippingList.add(shippingListMap);

        param.put("shipping_list",shippingList);
        param.put("upload_time",format);

        Map<String,Object> payer=new HashMap<>();
        payer.put("openid",dto.getOpenid());

        param.put("payer",payer);

        Gson gson = new Gson();
        String s = gson.toJson(param);
        System.out.println(s);

        OkHttpClient client = new OkHttpClient();

        MediaType mediaType = MediaType.parse("application/json;charset=utf-8");
        String json = s;

        RequestBody body = RequestBody.create(json,mediaType);

        Request request = new Request.Builder()
                .url("https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token="+accessToken)
                .addHeader("content-type", "application/json")
                .post(body)
                .build();

        try {
            Response response = client.newCall(request).execute();
            String string = response.body().string();
            Type mapType = new TypeToken<Map<String, Object>>(){}.getType();
            Map<String, Object> map = gson.fromJson(string, mapType);
            System.out.println(string);
            return map;
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    public static void main(String[] args) {
        WeChatPayment weChatPayment=new WeChatPayment();
        String accessToken = weChatPayment.getAccessToken();
        System.out.println(accessToken);


        UploadShippingInfoDto dto=new UploadShippingInfoDto();
        dto.setTrackingNo("323244567777");
        dto.setExpressCompany("OTHER");//没有邮政电商标快,所以选择其他
        dto.setItemDesc("微信红包抱枕");

        dto.setConsignorContact("134****7296");
        dto.setReceiverContact("134****7296");

        dto.setOpenid("otrMZ7SSsffe4EcN0qLCCuTyH3ng");

        dto.setOutTradeNo("1843820608564105216");

        Map<String, Object> map = weChatPayment.uploadShippingInfo(dto);
        System.out.println(map);
    }
package com.yami.shop.payment.dto;

import lombok.Data;

@Data
public class UploadShippingInfoDto {
    //微信商户订单号
    private String outTradeNo;

    //发货openID
    private String openid;

    //物流单号
    private String trackingNo;

    //物流公司编码
    private String expressCompany;

    //商品名称
    private String itemDesc;

    //发件人联系方式
    private String consignorContact;

    //发件人联系方式
    private String receiverContact;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值