Java 微信小程序-发货信息录入接口 对接代码

这篇具有很好参考价值的文章主要介绍了Java 微信小程序-发货信息录入接口 对接代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


微信小程序-发货信息录入接口开发文档

POST https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=ACCESS_TOKEN


一、实体类

1.WxDeliverGoodsDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
@Schema(description = "微信小程序-发货信息录入-入参DTO")
public class WxDeliverGoodsDTO implements Serializable {

	@Schema(description = "必填 订单,需要上传物流信息的订单")
	@NotNull(message = "order_key不能为空")
	private OrderKeyDTO order_key;

	@Schema(description = "必填 物流模式,发货方式枚举值:1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品,虚拟商品,例如话费充值,点卡等,无实体配送形式 4、用户自提")
	@NotNull(message = "logistics_type不能为空")
	private Integer logistics_type;

	@Schema(description = "必填 发货模式,发货模式枚举值:1、UNIFIED_DELIVERY(统一发货)2、SPLIT_DELIVERY(分拆发货) 示例值: UNIFIED_DELIVERY")
	@NotNull(message = "delivery_mode不能为空")
	private Integer delivery_mode;

	@Schema(description = "分拆发货模式时必填,用于标识分拆发货模式下是否已全部发货完成,只有全部发货完成的情况下才会向用户推送发货完成通知。示例值: true/false")
	private Boolean is_all_delivered;

	@Schema(description = "必填 物流信息列表,发货物流单列表,支持统一发货(单个物流单)和分拆发货(多个物流单)两种模式,多重性: [1, 10]")
	@NotNull(message = "shipping_list不能为空")
	private List<ShippingDTO> shipping_list;

	@Schema(description = "必填 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00`")
	@NotBlank(message = "upload_time不能为空")
	private String upload_time;

	@Schema(description = "必填 支付者,支付者信息")
	@NotNull(message = "payer不能为空")
	private PayerDTO payer;

}

2.PayerDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
public class PayerDTO implements Serializable {

	@Schema(description = "必填 用户标识,用户在小程序appid下的唯一标识。 下单前需获取到用户的Openid 示例值: oUpF8uMuAJO_M2pxb1Q9zNjWeS6o 字符字节限制: [1, 128]")
	@NotBlank(message = "openid不能为空")
	private String openid;
}

3.ShippingDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
public class ShippingDTO implements Serializable {

	@Schema(description = "物流单号,物流快递发货时必填,示例值: 323244567777 字符字节限制: [1, 128]")
	private String tracking_no;

	@Schema(description = "物流公司编码,快递公司ID,参见「查询物流公司编码列表」,物流快递发货时必填, 示例值: DHL 字符字节限制: [1, 128]")
	private String express_company;

	@Schema(description = "必填 商品信息,例如:微信红包抱枕*1个,限120个字以内")
	@NotBlank(message = "item_desc不能为空")
	private String item_desc;

	@Schema(description = "联系方式,当发货的物流公司为顺丰时,联系方式为必填,收件人或寄件人联系方式二选一")
	private ContactDTO contact;
}

4.ContactDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;

/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
public class ContactDTO implements Serializable {

	@Schema(description = "寄件人联系方式,寄件人联系方式,采用掩码传输,最后4位数字不能打掩码 示例值: `189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024")
	private String consignor_contact;

	@Schema(description = "收件人联系方式,收件人联系方式为,采用掩码传输,最后4位数字不能打掩码 示例值: `189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024")
	private String receiver_contact;
}

5.OrderKeyDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
public class OrderKeyDTO implements Serializable {

	@Schema(description = "必填 订单单号类型,用于确认需要上传详情的订单。枚举值1,使用下单商户号和商户侧单号;枚举值2,使用微信支付单号。")
	@NotNull(message = "order_number_type不能为空")
	private Integer order_number_type;

	@Schema(description = "原支付交易对应的微信订单号")
	private String transaction_id;

	@Schema(description = "支付下单商户的商户号,由微信支付生成并下发。")
	private String mchid;

	@Schema(description = "商户系统内部订单号,只能是数字、大小写字母`_-*`且在同一个商户号下唯一")
	private String out_trade_no;
}

二、junit测试接口


import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;

@SpringBootTest
@Slf4j
public class WeiXinApplicationTests {

	/**
	 * 发货信息录入接口-模拟入参
	 */
	private static WxDeliverGoodsDTO getWxDeliverGoodsVo(){
		WxDeliverGoodsDTO vo = new WxDeliverGoodsDTO();
		OrderKeyDTO order_key = new OrderKeyDTO();
		order_key.setMchid("");
		order_key.setOrder_number_type(2);	// 必填
		order_key.setOut_trade_no("");
		order_key.setTransaction_id("fake-transid-20221214190427-1");

		ArrayList<ShippingDTO> list = new ArrayList<>();
		ShippingDTO shipping = new ShippingDTO();
		shipping.setExpress_company("STO");
		shipping.setItem_desc("微信气泡狗集线器*1");	// 必填
		shipping.setTracking_no("fake-trackingno-2022121419042711");
		ContactDTO contact = new ContactDTO();
//		contact.setConsignor_contact("+86-177****1234");
		contact.setConsignor_contact("13278653987".replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));	// 手机号掩码处理
		contact.setReceiver_contact("");
		shipping.setContact(contact);
		list.add(shipping);

		PayerDTO payer = new PayerDTO();
		payer.setOpenid("ogqztkPsejM9MQAFfwCQSCi4oNg3");	// 必填

		vo.setOrder_key(order_key);	// 必填
		vo.setLogistics_type(1);	// 必填
		vo.setDelivery_mode(1);		// 必填
		vo.setIs_all_delivered(false);	// 分拆发货模式时必填
		vo.setShipping_list(list);	// 必填
//		vo.setUpload_time("2022-12-15T13:29:35.120+08:00");	// 必填
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
		vo.setUpload_time(sdf.format(new Date()));	// 必填
		vo.setPayer(payer);	// 必填

		return vo;
	}

	/**
	 * 微信小程序-发货信息录入接口
	 * */
	@Test
	void test01(){
		try {
			String accessToken = "接口调用凭证accessToken";
			String url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token="+accessToken+"";
			/* 获取模拟入参 */
			WxDeliverGoodsVo vo = WeiXinApplicationTests.getWxDeliverGoodsVo();
			String param = JSONObject.toJSONString(vo);
			System.out.println("入参 = " + param);
			String result = HttpUtil.post(url, param);

			JSONObject jsonObject = JSON.parseObject(result);
			int errcode = jsonObject.getInteger("errcode");
			if (errcode != 0) {
				String errmsg = jsonObject.getString("errmsg");
				String err = String.format("微信小程序-发货信息录入接口异常,code码:%s, msg:%s", errcode, errmsg);
				log.error(err);
				throw new CommonException(errcode, "微信小程序-发货信息录入接口异常:" + errmsg);
			}
		} catch (Exception e) {
			throw new CommonException(e.getMessage());
		}
	}
}


三、对接获取 express_company 物流公司编码

参见「查询物流公司编码列表」对接代码

对接微信小程序订单发货,Java,java,微信小程序文章来源地址https://www.toymoban.com/news/detail-776712.html

到了这里,关于Java 微信小程序-发货信息录入接口 对接代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 微信小程序对接SSE接口记录

    微信小程序对接SSE接口记录 需求 :公司项目对接gpt,gpt产生的结果是分段返回,所以要求在产生结果时,有打字机的效果。原本是由定时器调用,后来优化改为服务端使用SSE接口。 小程序使用起来比较方便,但是要求小程序 基本库 的版本需要在 2.20.2 以上。文档地址移步这

    2024年02月15日
    浏览(11)
  • 微信小程序支付-java对接微信

     一共是两个方法: 一个方法后台生成预支付订单,得到预支付交易会话标识prepay_id,传给前端,让前端调起小程序支付; 一个是支付回调 目录 一、生成预支付订单  注意: 二、 支付回调         封装参数向微信发送生成预支付交易单请求,微信会返回一个prepay_id,再将

    2024年02月12日
    浏览(14)
  • 微信小程序查看接口信息(抓包)

    微信小程序查看接口信息(抓包)

    本文仅供交流学习使用 主要参考: https://cloud.tencent.com/developer/article/1833591 https://www.cnblogs.com/x1you/p/12033839.html 由于参考文章在baidu权重不高(google才查到的), 所以自己重新记录一篇, 方便他人, 也防止参考文章丢失. 需要知道微信小程序的接口地址 下载charles,一键安装即可 https:

    2024年02月02日
    浏览(13)
  • Python对接微信小程序V3接口进行支付,并使用uwsgi+nginx+django进行https部署

    网上找了很多教程,但是很乱很杂,并且教程资源很少且说的详细。这里就记录一下分享给大家 共分为以下几个步骤: 目录 一、开始前准备信息 二、使用前端code获取用户的openid 三、对接小程序v3接口下单 四、小程序支付的回调 五、安装并启动uwsgi 六、安装并启动nginx 七、

    2024年02月12日
    浏览(17)
  • 【微信小程序】微信小程序的接口调入 获取太阳码 根据返回值的类型进行接收,微信接口可能直接返回图片,也可能返回一个错误信息的json,同时兼容处理这两种情况

    【微信小程序】微信小程序的接口调入 获取太阳码 根据返回值的类型进行接收,微信接口可能直接返回图片,也可能返回一个错误信息的json,同时兼容处理这两种情况

    在开发一个关于微信小程序的过程中,有一个这样的需求,要求生成微信小程序的太阳码,然而这个东西的请求方式我们是这样的:我作为后端服务去请求这个太阳码的二维码,然后将获取到的太阳码二维码的图片返回给小程序端进行接收,然后小程序端进行一个展示 原本以

    2024年02月04日
    浏览(22)
  • 微信小程序的动态表单,实现房屋租赁的多租客录入

    微信小程序的动态表单,实现房屋租赁的多租客录入

    本文将介绍如何使用 微信小程序 编写 动态表单 ,最终实现 房屋租赁系统 中 多租客录入 的业务。 在阅读本文前,您需要对微信小程序的开发有一个初步的了解,以便更容易的学会开发动态表单。 作者主页 :Designer 小郑 作者简介 :浙江某公司软件工程师,负责开发管理公

    2024年02月09日
    浏览(13)
  • 微信小程序获取用户信息(getUserProfile接口回收后)——通过头像昵称填写获取用户头像和昵称

    微信小程序获取用户信息(getUserProfile接口回收后)——通过头像昵称填写获取用户头像和昵称

    背景:最近在用uniapp写微信小程序授权登录的时候,发现项目在微信开发者工具中调试是正常的,但是在真机运行时,返回的用户数据中昵称变成了微信用户,头像变成了默认的灰底头像。接着去百度了一下发现出现这个问题的原因是getUserProfile接口被回收了,微信小程序基

    2024年02月11日
    浏览(45)
  • 微信小程序 --调用JAVA接口的方法

    在微信小程序中调用后端的Java接口,通常有以下几种方式: 1.HTTP请求:可以使用小程序的网络请求API,如wx.request(),通过发送HTTP请求来调用后端的Java接口。请求可以使用GET、POST等常见的HTTP方法,并通过请求头、请求体传递数据和参数。后端Java应用可以使用框架如Spring B

    2024年02月15日
    浏览(9)
  • Java实现微信小程序相关接口

    订阅通知 获取用户openid 获取用户手机号 微信支付 PayVo类 getFee方法 WXPayUtil类 支付成功回调接口 微信退款 MD5Util类 PayConfig类 WxPayConstant类

    2024年02月12日
    浏览(7)
  • 【微信支付】java-微信小程序支付-V3接口

    【微信支付】java-微信小程序支付-V3接口

    最开始需要在微信支付的官网注册一个商户; 在管理页面中申请关联小程序,通过小程序的 appid 进行关联;商户号和appid之间是多对多的关系 进入微信公众平台,功能-微信支付中确认关联 具体流程请浏览官方文档:接入前准备-小程序支付 | 微信支付商户平台文档中心 流程走

    2024年02月06日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包