微信小程序发货信息录入

微信小程序发货信息录入

一、发货信息录入接口

1、 用户交易后,默认资金将会进入冻结状态,开发者在发货后,需要在小程序平台录入相关发货信息,平台会将发货信息以消息的形式推送给购买的微信用户。

2、 如果你已经录入发货信息,在用户尚未确认收货的情况下可以通过该接口修改发货信息,但一个支付单只能更新一次发货信息,请谨慎操作。

3、 如暂时没有完成相关API的对接开发工作,你也可以登陆小程序的后台,通过发货信息管理页面手动录入发货信息。

二、接口及调用方式(https)

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

三、请求及返回参数

1、请求参数
![在这里插入图片描述](https://img-blog.csdnimg.cn/548c6668e21b41fb89bf5684c2b7fe96.png在这里插入图片描述
2、响应参数
在这里插入图片描述

四、JAVA代码

1、依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

@Autowired
private RestTemplate restTemplate;

1、测试示例

1.1、 参数说明

transactionId:微信支付返回的支付单号(微信退款也需要用)

2.2、 此方式采用的是自取方式:logistics_type为4,不需要填写物流等信息

2.3、 如果采用发货方式,下方代码注释部分放开即可

public String toSendGoods(String transactionId) {
        String accessToken = AccessTokenUtil.getAccessToken();
        String url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=" + accessToken;
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        OrderKey orderKey = new OrderKey();
        orderKey.setOrder_number_type(2);
        orderKey.setTransaction_id(transactionId);
//        orderKey.setMchid("1622649992");
//        orderKey.setOut_trade_no("123123123123123");

        ShippingList shippingList = new ShippingList();
        shippingList.setItem_desc("微信气泡狗集线器*1");
//        shippingList.setTracking_no("yyy242144");
//        shippingList.setExpress_company("STO");

        Payer payer = new Payer();
        payer.setOpenid("oP9pG5GWD4yscKE1UZaxifcF7X1g");

        JSONObject signObject = new JSONObject();
        JSONArray objects = new JSONArray();
        objects.add(shippingList);

        signObject.put("order_key",orderKey);
        signObject.put("delivery_mode",1);
        signObject.put("logistics_type",4);
        signObject.put("shipping_list",objects);
        signObject.put("upload_time","2023-10-23T0:08:35.120+08:00");
        signObject.put("payer",payer);
        System.out.println(signObject);

        HttpEntity<JSONObject> requestEntity = new HttpEntity<JSONObject>(signObject, headers);
        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
        String body = responseEntity.getBody();
        JSONObject jsonObject = JSONArray.parseObject(body);
        return jsonObject.getString("errcode");
    }

2、工具类(getAccessToken方法)

注: 上述获取的accessToken,有效时间2小时,过期后需要再次获取

public class AccessTokenUtil {
    public static String getAccessToken() {
        log.info("initAccessToken:开始运行...");
        String accessToken = null;
        //获取tokcen接口
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ Configure.getAppID()+"&secret="+Configure.getSecret();
        try {
            URL urlGet = new URL(url);
            HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
            http.setRequestMethod("GET"); // 必须是get方式请求
            http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            http.setDoOutput(true);
            http.setDoInput(true);
            System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
            System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
            http.connect();
            InputStream is = http.getInputStream();
            int size = is.available();
            byte[] jsonBytes = new byte[size];
            is.read(jsonBytes);
            String message = new String(jsonBytes, "UTF-8");
            JSONObject demoJson = JSONObject.parseObject(message);
            accessToken = demoJson.getString("access_token");

            log.info("返回accessToken:"+accessToken);
            log.info("initAccessToken:运行结束...");
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return accessToken;

    }
}

一个在学习的开发者,勿喷,欢迎交流

### 微信小程序实现订单信息录入功能 在微信小程序中,实现订单信息录入主要依赖于表单组件以及与服务器端的数据交互。对于尚未完成相关API对接开发的情况,可以通过登录小程序后台,在发货信息管理页面手动录入发货信息[^3]。 #### 表单构建 为了创建一个用于收集用户输入的界面,可以利用`<form>`标签来包裹各个输入字段。下面是一个简单的HTML结构示例: ```html <form bindsubmit="formSubmit"> <view class="section"> <text>收货地址</text> <input name="address" placeholder="请输入您的收货地址"/> </view> <!-- 更多表单项 --> <button formType="submit">提交订单</button> </form> ``` 此代码片段展示了如何定义基本的表单布局,并设置了按钮点击事件处理函数名为`formSubmit`。 #### 数据验证与提交 当用户填写完毕并点击“提交”按钮时,会触发预先设定好的JavaScript方法来进行数据校验和发送操作。这里给出一段简化版的逻辑流程说明: ```javascript Page({ data: { formData: {} }, // 获取表单值 formSubmit(e) { const value = e.detail.value; wx.request({ url: 'https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info', method: "POST", header: {'content-type': 'application/json'}, data: JSON.stringify(value), success(res){ console.log('成功', res.data); } }) } }) ``` 上述脚本实现了获取表单内所有控件的内容并将它们作为JSON对象传递给指定URL的过程。需要注意的是,实际项目里应当加入更严格的错误检测机制和服务端认证措施以保障安全性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值