微信小程序对接发货功能

注:微信小程序对接发货功能

文档地址:https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html

php代码

common.php


use think\Config;
use think\Db;
use fast\Http;
use think\Cache;if(!function_exists('getAccessToken')){//获取tokenfunction getAccessToken(){$site = Config::get("site");$appId = '';if(array_key_exists('WX_AppID',$site)){$appId = $site['WX_AppID'];}$appSecret = '';if(array_key_exists('WX_AppSecret',$site)){$appSecret = $site['WX_AppSecret'];}$cacheKey = $appId . '@access_token';if (!Cache::get($cacheKey)) {// 请求API获取 access_token$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$appSecret}";$result = Http::get($url);$data = json_decode($result, true);// return $data['access_token'];// 写入缓存Cache::set($cacheKey, $data['access_token'], 5000);    // 7000}return Cache::get($cacheKey);}
}if(!function_exists('getWxSendOrderStatus')){//获取发货订单信息function getWxSendOrderStatus($transaction_id){$token = getAccessToken();$url = "https://api.weixin.qq.com/wxa/sec/order/get_order?access_token=" . $token;$data = ['transaction_id' => $transaction_id];$data = json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);$result = Http::post($url, $data);$result = json_decode($result, true);return $result;}
}if(!function_exists('set_jump_path')){//设置微信发货后,消息跳转地址,不设置为默认function set_jump_path(){$token = getAccessToken();$url = "https://api.weixin.qq.com/wxa/sec/order/set_msg_jump_path?access_token=" . $token;$data = ['path' => 'page_zhanghushezhi/myOrder/myOrder?conmen=3', //待收货订单列表页面];$data = json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);Http::post($url, $data);}
}if(!function_exists('sendDelivery')){//发货 物流15天自动确认,虚拟商品隔天自动确认function sendDelivery($order, $logistics_type=3){set_jump_path();$token = getAccessToken();$express_name = "";$express_no = "";if ($logistics_type == 1) {$express_name = $order['express_name'];$express_no = $order['express_no'];}$data = ['order_key' => ['order_number_type' => 2,   //订单单号类型,用于确认需要上传详情的订单。枚举值1,使用下单商户号和商户侧单号;枚举值2,使用微信支付单号。'transaction_id' => $order['transaction_id']],'logistics_type' => $logistics_type,//物流模式,发货方式枚举值:1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品,虚拟商品,例如话费充值,点卡等,无实体配送形式 4、用户自提'delivery_mode' => 1,   //发货模式,发货模式枚举值:1、UNIFIED_DELIVERY(统一发货)2、SPLIT_DELIVERY(分拆发货) 示例值: UNIFIED_DELIVERY'shipping_list' => [['tracking_no' => $express_no,'express_company' => $express_name,'item_desc' => $order['item_desc'] ?? "订单发货信息"]],'upload_time' => date('Y-m-d\TH:i:sP', time()),'payer' => ['openid' => $order['openid']]];$urlss = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=" . $token;$data = json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);$results = Http::post($urlss, $data);$results = json_decode($results, true);return $results;}
}

商家发货
在这里插入图片描述

/*** 店铺对订单发货** @ApiMethod (POST)* @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")* @param string $id  订单id*/public function fahuo(){try {$user_id = $this->user_id;$shop_id = $this->shop_id;    // 商家id      $id = $this->request->param('id', '');if (!$id) {$this->error('订单id不能为空');}$LitestoreorderModel = new LitestoreorderModel();$order = $LitestoreorderModel->getOrderDetail($id, false);if ($LitestoreorderModel->hasError()) {$this->error($LitestoreorderModel->getError());}if ($order['shop_id'] != $shop_id) {$this->error('订单错误');}if ($order->fahuo($id) !== false) {if($order['paytype'] == 2){// 获取微信发货订单信息$wxorder = getWxSendOrderStatus($order['transaction_id']);if($wxorder['errcode'] != 0){$this->error('获取微信订单失败');}$order_state = $wxorder['order']['order_state']; //订单状态枚举:(1) 待发货;(2) 已发货;(3) 确认收货;(4) 交易完成;(5) 已退款。if($order_state == 1){$data = ['transaction_id'=>$order['transaction_id'],'openid'=>$this->openid,'item_desc'=>'订单商品',];$results = sendDelivery($data);if ($results['errcode'] == 0) {$this->success('发货成功!');} else {$this->error("发货失败:" . $results['errmsg']);}}}$this->success('发货成功');}$this->error($order->getError());} catch (Exception $e) {$this->error($e->getMessage());}}

小程序确认收货

//点击确认收货按钮。
wx.openBusinessView({businessType: 'weappOrderConfirm',extraData: {merchant_id: merchant_id,merchant_trade_no: order_no,transaction_id: transaction_id},success() {},fail() {},complete() {}
});

首页app.js里的onShow

onShow(options) {if(options.referrerInfo && options.referrerInfo.extraData && options.referrerInfo.extraData.req_extradata){let t_status = options.referrerInfo.extraData.statuslet req_extradata = options.referrerInfo.extraData.req_extradataif(t_status=="success"){}}
}    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW远程开发与调试

在现代项目开发中,远程开发与调试已经成为一种常见的模式,特别是在使用LabVIEW进行工程项目时。本文将详细分析LabVIEW远程开发与调试的优缺点,并从多个角度说明如何建议客户采用这种方式,以提高项目效率和质量。 优点 灵活性和便…

Compose进阶——在非Compose作用域调用Compose函数

第一版,实现在非Compose作用域调用Compose函数: Composable fun test() {val fun1 Composable() {rememberTextMeasurer()}val test1 rememberTextMeasurer()val composer currentComposerButton(onClick {// 这是非Compose作用域,在此通…

2024华为OD机试真题-机场航班调度-C++(C卷D卷)

题目描述 XX 市机场停放了多架飞机,每架飞机都有自己的航班号 CA3385,CZ6678,SC6508 等, 航班号的前 2 个大写字母(或数字)代表航空公司的缩写,后面 4 个数字代表航班信息。 但是 XX 市机场只有一条起飞用跑道,调度人员需要安排目前停留在机场的航班有序起飞。 为保障航班…

Linux【安全 02】OpenSSH漏洞修复(离线升级最新版本流程)网盘分享3个安装包+26个离线依赖

OpenSSH离线升级最新版本流程 1. 漏洞信息2. 环境说明3.依赖安装3.1 在线安装3.2 离线安装 4.备份卸载4.1 备份4.2 卸载旧版本 5.安装5.1 zlib5.2 ssl5.3 openssh5.3.1 安装5.3.2 配置 6.脚本整理7.文件资源 本文仅针对CentOS7.8版本,其他版本未测试,安装…

# 使用 nmtui 命令工具管理 linux 网络,给网卡配置多个 IP 地址

使用 nmtui 命令工具管理 debian 系统 网络,给网卡配置多个 IP 地址 1、nmtui 是什么? nmtui 是 NetworkManager TUI(Text User Interface)的缩写,它提供了一个可视化的界面来管理网络连接。但是,在 Debi…

GSM信令流程(附着、去附着、PDP激活、修改流程)

1、联合附着流程 附着包括身份认证、鉴权等 2、去附着流程 用户发起去附着 SGSN发起去附着 HLR发起去附着 GSSN使用S4发起去附着 3、Activation Procedures(PDP激活流程) 4、PDP更新或修改流程 5、Deactivate PDP Context 6、RAU(Routeing Area Update)流程 7、鉴权加…

生成式AI,在云端的绽放与盛开

编辑:阿冒 设计:沐由 毫无疑问,生成式AI已然成为当今技术发展和应用创新的重要引擎之一。 过去的一年多时间里,我们每个人都在目睹和见证着生成式AI是如何以移山倒海的力量,为诸多行业带来革命性乃至颠覆性的变革&…

新版校园跑腿外卖独立版+APP+小程序前端外卖配送平台源码

同城校园跑腿外卖配送平台源码,这套目前全网还没有人分享过,这个是开源的,所以没有任何问题了,这套源码非常吊,支持自定义diy 你可以设计你的页面,设计你自己的风格,支持多校园,独立…

联软安全助手卸载教程

目录 1.前言 2.卸载联软安全助手 2.1 尝试杀死联软安全助手进程

Spring Boot集成Spring Task Scheduler快速入门demo

1.Spring Task Scheduler介绍 Spring Scheduler里有两个概念:任务(Task)和运行任务的框架(TaskExecutor/TaskScheduler)。TaskExecutor顾名思义,是任务的执行器,允许我们异步执行多个任务。Tas…

前端工程化工具系列(三) —— Stylelint(v16.6.1):CSS/SCSS 代码质量工具

Stylelint 是 CSS/SCSS 代码的静态分析工具,用于检查代码中的错误和样式违规。 1. 环境要求 v16 以上的 Stylelint,支持 Node.js 的版本为 v18.12.0。 在命令行中输入以下内容来查看当前系统中 node 的版本。 node -vNode.js 推荐使用 v18.20.3 或者 …

深度学习中的模型架构详解:RNN、LSTM、TextCNN和Transformer

深度学习中的模型架构详解:RNN、LSTM、TextCNN和Transformer 文章目录 深度学习中的模型架构详解:RNN、LSTM、TextCNN和Transformer循环神经网络 (RNN)RNN的优点RNN的缺点RNN的代码实现 长短期记忆网络 (LSTM)LSTM的优点LSTM的缺点LSTM的代码实现 TextCN…

海外金融牌照

一般来说牌照申请分两个大类:数字货币牌照和外汇牌照。每个国家的牌照具体监管的情况也是不一样的。申请牌照时该如何选择? 今天先说说区块链牌照,具有代表性的有美国msb牌照,加拿大msb牌照,爱沙尼亚数字货币牌照&…

mac电脑安卓设备文件传输助手:MacDroid pro 中文激活版

MacDroid Pro是一款专为Mac电脑和Android设备设计的软件,旨在简化两者之间的文件传输和数据管理,双向文件传输:支持从Mac电脑向Android设备传输文件,也可以将Android设备上的文件轻松传输到Mac电脑上。完整的文件访问和管理&#…

机器学习笔记 - PyTorch 分布式训练概览

一、简述 对于大规模的数据集,只能进行分布式训练,分布式训练会尽可能的利用我们的算力,使模型训练更加高效。PyTorch提供了Data Parallel包,它可以实现单机、多GPU并行。 PyTorch 数据并行模块的内部工作原理 上面的图像说明了PyTorch 如何在单个系统中利用多个 G…

目标检测——无人机搜索救援数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

springboot项目banner生成器

Spring Boot banner在线生成工具,制作下载英文banner.txt,修改替换banner.txt文字实现自定义,个性化启动banner-bootschool.netSpring Boot banner工具实现在线生成banner,轻松修改替换实现自定义banner,让banner.txt文…

基于Lumerical fdtd进行无序光子晶体波导的仿真设计及优化

光子晶体是一类通过不同折射率介质周期性的排列而形成的具有光波长量级的周期性人工微型结构,相比于传统晶体来说,由于介电函数的周期性分布,光子晶体也会产生一些类似于传统晶体的带隙,使光局域在带隙中无法传播。我们在完整的光…

Linux - 文件管理高级2

3.处理字符 sed ① sed 默认情况下不会修改原文件内容 ② sed 是一种非交互式的编辑器 3.1 工作原理 将原文件一行一行的进行处理,取出一行,放入“模式空间进行处理”,处理完成之后将结果输出到屏幕上,然后读取下一行&#xf…

智慧启航 网联无限丨2024高通汽车技术与合作峰会美格智能分论坛隆重举行

5月30日下午,以“智慧启航 网联无限”为主题的2024高通汽车技术与合作峰会&美格智能分论坛在无锡国际会议中心隆重举行,本次论坛由高通技术公司与美格智能技术股份有限公司共同主办,上海市车联网协会、江苏省智能网联汽车产业创新联盟、江…