微信小程序支付完整流程(前端)

跟着官方文档实现微信支付功能(前端) 跟着官方文档实现微信支付功能。包括appid、mchid、支付关系绑定。前端调用微信支付、uni.login、uni.requestPayment 阅读详情
AI摘要

本文详细介绍了微信小程序进行支付的操作步骤,包括通过wx.login获取code,使用code换取openid,调用后端接口获取支付核心数据,以及最后调用微信支付接口进行支付。整个过程涉及的关键数据有openid、时间戳、随机字符串、预支付id和签名等。,

1. 获取openid(当前用户真实id)

openid为当前用户真实id,无法直接用任何接口获取,需要先调用微信login接口登录,获取登录凭证code,再通过此code(code登录凭证,5分钟有效),向微信服务器换取用户openid。
原生小程序登录

wx.login({
	success(res) {
		if(res.code) {
			// code:登录凭证,有效期5分钟
			// 使用code可以换取openid,unionid,session_key等核心信息
		} else {
			console.log('登陆失败', res.msg)
		}
	}
})

2.发送请求调用微信官方接口,用code凭证换取用户openid

原生小程序: wx.request uniapp:uni.request

wx.request({
  url: `https://api.weixin.qq.com/sns/jscode2session`, //微信官方接口
  data: {
    appid: '小程序appId',
    secret: '小程序密钥,在小程序appId下一行,放一块在',
    js_code: '刚才获取的code', 
    grant_type: 'authorization_code' //固定值
  },
  success: (res) => {
    //获取openid:用户真实唯一id
    console.log(res.data.openid);
  }
})

3.调用公司后端接口,获取支付核心数据

// 调用后端接口
uni.request({
  url: '你们公司的后端接口地址,获取支付核心数据',
  method: 'POST',
  data: { 接口需要什么参数就传给接口,包含扣款金额,订单id等 },
  success(obj) {
    console.log(obj)
  }
})

此接口必须返回以下6个核心数据,都是由后台计算生成。

	"appId": "xxxx",

    "nonceStr": "xxxx",

    "packageValue": "prepay_id=xxxxx",

    "paySign": "xxxxxx",

    "signType": "MD5",

    "timeStamp": "xxxxxx"

4. 调用微信官方支付接口,弹出支付界面

uni.request({
  url: '你们公司的后端接口地址,获取支付核心数据',
  method: 'POST',
  data: { 接口需要什么参数就传给接口,包含扣款金额,订单id等 },
  success(obj) {
    
    //调用微信官方支付接口弹出付款界面,输入密码扣款
    wx.requestPayment({
      timeStamp: obj.xxxx.timeStamp,  //后端返回的时间戳
      nonceStr:  obj.xxxx.nonceStr,   //后端返回的随机字符串
      package:  obj.xxxx.packageValue, //后端返回的prepay_id
      signType: 'MD5', //后端签名算法,根据后端来,后端MD5这里即为MD5
      paySign:  obj.xxxx.paySign,  //后端返回的签名
      success (res) {
        console.log('用户支付扣款成功', res)
      },
      fail (res) { 
        console.log('用户支付扣款失败', res)
      }
     })
 
  }
})

调用后,弹出付款界面

5.总结

  1. 前端调用uni.login/wx.login调用微信接口,获取code,code相当于临时身份证
  2. 前端调公司后台获取openid的接口,获取openid
  3. 前端调公司后台预支付接口,传递openid、商品id、商品单价、商品数量,获取那5个参数。【时间戳timeStamp,随机字符串nonceStr,预支付id package,签名算法signType,签名paySign】
  4. 前端调用uni/wx.requestPayment调用微信支付方法,传递5个参数,获取支付结果(成功或失败)
    在这里插入图片描述
    原文链接:https://blog.youkuaiyun.com/m0_74429971/article/details/127471923
uni-app 微信支付 uni.requestPayment小程序支付 JS代码部分 zhifu(){ //支付方法 //微信支付 // #ifdef MP-WEIXIN uni.showLoading({title: '加载中',}) uni.request({ url: getApp().globalData.https + '/wap.php/Order/pay_course_order',//支付订单接口链接 data: { oid:data.oid,//订单ID }, method: 'POST', header: getApp().global 阅读详情

相关推荐

java 支付宝 微信 支付 后端代码

支付宝和微信支付 按照博主的方式改已测试可用。 银联支付,公司没用上没做测试调试。银联支付有条件的可以自己改参数调试,应该问题不大。 源代码下载地址:https://download.youkuaiyun.com/download/hezemin0315/12853309 ...

https://www.cnblogs.com/hezemin/ 已经放弃优快云了,请转移博客园!请转移博客园!请转移博客园! 886

10分钟实现微信小程序支付功能,商城购物车订单学习

带大家10分钟实现微信小程序的支付功能。带着大家从头开始写代码,从项目创建开始带大家实现一款简易的商城小程序,包含商品列表,购物车,我的订单页

微信小程序开发:集成微信支付功能

说到微信小程序开发,是真的气不打一处来,微信开发文档真的很坑爹,需要蒙、猜,尤其是对于微信开发的刚入行的同行来说,真的是有点难度,而且踩坑不断,连环坑层出不穷,真的是无力吐槽,废话少说,本篇博文来话一下微信小程序开发的微信支付功能的实现。 这里不再说微信小程序的微信支付的后端处理部分,如有后端的开发人员看到本篇博文请直接跳过。直接说说微信小程序前端部分集成微信支付的部分,如有不懂的地方,或者...

全沾软贱开发攻城狮 1万+

全网最详细实现微信小程序支付功能【前端部分】

【代码】全网最详细实现微信小程序小程序支付功能【前端部分】

Debug的博客 7871

基于python的奥运会历史数据分析【120年】

数据分析实战案例

xff123456_的博客 3338

PX4代码解析(1)

前言 做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳理一下无人机知识。 目前打算分享以下几个内容:代码架构;通信协议;姿态解算算法,控制算法。先这样,后面想到再加。本章先来聊聊px4代码结构 一、代码整体结构 既然要聊px4代码结构,那就先把px4代码结构图放出来,因为px4源码仍然在不断更新迭代,因此老版本与新版本目录结构可能有些不同,我的代码解析参考版本为V

qq_36903625的博客 1万+

Web前端最全微信小程序支付完整流程(前端),oppo社招前端面试

打开全栈工匠技能包-1小时轻松掌握SSR两小时精通jq+bs插件开发生产环境下如歌部署Node.js网易内部VUE自定义插件库NPM集成谁说前端不用懂安全,XSS跨站脚本的危害webpack的loader到底是什么样的?两小时带你写一个自己loader返回核心数据如下:,JAVA,PHP,C++,NODE,.NET等…**不是前端写!不是前端写!不是前端写!**如果没有此接口就与后端工程师沟通,让他书写。

2401_84620143的博客 812

STM32与AD7606的SPI通信优化:提升高精度数据采集效率

本文深入探讨了STM32与AD7606的SPI通信优化策略,旨在提升高精度数据采集系统的效率与稳定性。文章从硬件连接、电源去耦、PCB布局等基础环节入手,详细解析了软件驱动中SPI模式配置、DMA应用及精准时序控制等关键优化技术,并提出了系统级的性能提升方案,帮助开发者解决高速采样下的数据跳动、效率瓶颈等实际问题。

weixin_29192211的博客 393

2024年前端最全微信小程序支付完整流程(前端)(1),阿里前端面试题p7

三套“算法宝典”开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】算法刷题LeetCode中文版(为例)人与人存在很大的不同,我们都拥有各自的目标,在一线城市漂泊的我偶尔也会羡慕在老家踏踏实实开开心心养老的人,但是我深刻知道自己想要的是一年比一年有进步。最后,我想说的是,无论你现在什么年龄,位于什么城市,拥有什么背景或学历,跟你比较的人永远都是你自己,所以明年的你看看与今年的你是否有差距,不想做咸鱼的人,只能用尽全力去跳跃。祝愿,明年的你会更好!

2401_84617969的博客 785

Android13 AudioFlinger混音流程全解析:从prepareTracks_l到threadLoop_write的底层实现

本文深入解析Android13 AudioFlinger混音流程,从prepareTracks_l到threadLoop_write的底层实现。详细剖析MixerThread的核心工作循环,包括音轨预处理、混音算法执行及硬件写入机制,帮助开发者优化音频性能并处理多音轨场景。

tea88的博客 1132

【深度学习新浪潮】算力上太空:NVIDIA Space-1 Vera Rubin Module 深度技术解析

NVIDIA Space-1 Vera Rubin Module 不只是一款芯片模组,它是天地一体化 AI 的基础设施底座。它用成熟的 GPU 架构 + 航天级加固,把地面 AI 生态直接平移到太空。下一个 AI 创新战场,不在云端,而在轨道。在轨 LLM星上多模态实时处理卫星自主组网与分布式推理太空算力成为云计算的一级节点参考资料NVIDIA 官方博客:NVIDIA 推出太空计算,将 AI 送入太空轨道GTC 2026 黄仁勋主题演讲。

专注:太空算力、AI infra、异构调度、大模型成本工程 1125

微信小程序支付流程(前端)

1、获取OpenID:通过wx.login()获得code,将code传给接口获得OpenID2、获取预支付核心数据:调用预支付接口,将OpenID与接口需要携带的其他参数,得到预支付核心数据;数据包含:【时间戳--timeStamp,随机字符串--nonceStr,预支付id--package,签名算法--signType,签名--paySign】3、发起微信支付:调用wx.requestPayment(),传递上一步获取的5个预支付核心数据,得到支付结果。

qq_36158551的博客 4340

VS2019项目使用CGAL6.1配置教程详细步骤

在VS2019项目中使用CGAL详细步骤

插件开发 331

微信小程序——微信支付,前端实现统一下单方法

微信小程序中微信支付统一下单前端实现方法:(实际项目中建议在后台来实现) /*统一支付接口*/ unitedPayRequest: function(openid){ var that=this; //统一支付签名 var appid = '';//appid必填 var body = '';//商品名必填 var mch_id = '';//商户...

Mickeymouse 5451

OpenClaw进阶实战(二十三):微信公众号接入——被动回复、客服消息、素材管理

本文介绍了将OpenClaw接入微信公众号的完整方案,重点包含以下内容: 接入方案选型:对比官方插件、三方服务和自建中转三种方式,选择自建Node.js中转服务实现灵活控制 核心原理:通过中转服务器完成微信消息协议转换,处理5秒超时限制和异步回复机制 实战开发: 搭建Express中转服务 实现Token管理和消息处理 采用内存缓存对话历史 通过客服接口异步回复 官方插件方案:介绍2026年发布的ClawBot插件,支持文本/图片/文件收发 进阶功能:包括素材管理接口调用示例 该方案适用于需要深度定制公众号

PeterPan的博客 142

Python 爬虫教程:企业官网基本信息抓取

本文介绍了使用Python爬虫技术抓取企业官网信息的方法,包括公司名称、简介、联系方式、地址、产品及新闻等数据。通过Requests和BeautifulSoup库实现网页请求与解析,并利用Pandas存储数据为CSV文件。同时提供了应对反爬虫机制(如设置User-Agent、代理IP池、延迟请求等)的解决方案,帮助高效获取企业公开数据。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1861

微信小程序支付从后端到前端的完整流程:以Node.js + Koa为例,手把手教你调通wx.requestPayment

本文详细介绍了微信小程序支付从后端到前端的完整流程,以Node.js + Koa为例,手把手教你调通wx.requestPayment。文章涵盖了订单创建、支付准备和执行阶段的核心概念,提供了Koa后端支付模块的搭建步骤、前端支付参数处理与调用方法,以及支付结果通知与对账处理的实战指南。通过真实的咖啡店点单项目案例,帮助开发者快速掌握微信小程序支付技术,避免常见问题。

weixin_30336061的博客 446

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

微信小程序JSAPI支付-参数异常以及验证签名失败总结

微信小程序支付 微信小程序支付流程 如下图所示,微信支付官方给出了小程序支付的流程 微信图示开发使用步骤 用户进入小程序,选择商品服务,确认下单; 小程序前台将用户的请求以及用户信息(openid),提交到小程序后台; 小程序后台生成预订单,调用微信支付的统一下单接口,将小程序的预订单提交到微信支付; 通过返回的return_code字段,判断提交成功后,获取微信支付返回的成功信息即预付单信息...

qq_38371367的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

微信小程序的支付流程指南和案例

微信小程序支付流程指南:前端开发关键步骤 本文详细介绍了微信小程序支付功能的前端实现流程。核心步骤包括:1)调用wx.login获取临时code并回传服务器;2)服务器交换OpenID和session_key;3)调用wx.requestPayment发起支付。文中提供了完整的支付参数说明(区分大小写和类型)和具体代码实现示例,涵盖了成功和失败的回调处理。作者还分享了支付流程图解和相关技术文章链接,帮助开发者快速掌握小程序支付功能开发要点。

鹏多多的博客 3546

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Jeepay微信小程序支付:前端调起与后端处理

微信小程序支付(WX_LITE)是Jeepay支付系统框架中常用的支付方式之一,通过统一的接口规范实现前后端交互。以下从后端参数配置、接口调用流程到前端调起实现,完整介绍接入过程。 ## 一、后端核心参数定义 Jeepay在常量类中定义微信小程序支付标识,作为支付方式的唯一识别码: ```java // 源码路径:[jeepay-core/src/main/java/com/jeequan/je...

gitblog_00779的博客 533

【SpringBoot学习】39、SpringBoot 集成 wxJava 微信小程序:订单支付

文章目录【微信开发】SpringBoot 集成微信小程序授权登录1、SprinBoot 后端(1)准备工作(2)相关配置类(3)相关实体类(4)处理后端逻辑2、Uniapp 前端(1)授权登录(2)效果样式微信公众号 【微信开发】SpringBoot 集成微信小程序授权登录 我这里采用了第三方的依赖,目前是最火的微信开发工具吧,WxJava 1、SprinBoot 后端 (1)准备工作 引入相关依赖 <dependency> <groupId>

Tellsea 1万+

TP5.1、TP5、PHP 微信小程序支付完整流程

微信小程序支付的完整流程 在文章后面我会附加小程接受签名的代码 <?php /** * 微信小程序支付 */ namespace app\api\controller; use think\Controller; class WxPay extends Controller { public function initialize() { $this->appid='微信的appid'; $this->mch_id='商户号';

weixin_44779466的博客 1194

微信小程序实现支付前端后端代码

微信小程序实现支付前端后端代码 公司根据业务需求,要做支付功能,网上查了些资料花了两天时间实现的支付流程,微信支付是必须开通商户号,然后绑定要实现的支付的小程序。 1.后端代码 需要创建一些配置类 package com.asa.utils.wxpay; /** * 微信支付配置类 */ public class WxPayConfig { //小程序appid public static final String appid = "***********; //微信支付的商户

yuxiahaohao的博客 1888

JAVA微信小程序(嵌套h5)支付

代码基于IJPay-0.8.jar JAVA代码: package com.fh.controller.wx; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import...

u013810758的专栏 1365
上一篇: 多线程理解
下一篇: 小程序授权登录
petrel_0
博客等级 码龄6年 51粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值