个人小程序申请微信支付

article/2025/9/21 21:19:48

个人小程序如何申请微信支付功能?
给你们看一下效果
在这里插入图片描述
在这里插入图片描述

一、准备材料

① 个体户营业执照

1️⃣可以去当地 工商局办理,免费(一般提供一个地址,提供3张身份证复印件)
2️⃣可以去淘宝叫人代理办理,收费(60-200元)

②新的QQ邮箱

1️⃣一个手机号目前能注册5个,民生手机号不能注册QQ

③一个服务器,一个域名

材料准备号。 现在开始认证小程序

二、认证小程序

①自行认证(300元)

②三方认证(淘宝19.9元)

需要材料是
认证小程序需要提供:
1、法人的姓名
2、法人微信号
3、法人手机号
4、营业执照全称
5、统一信用代码号

三、支付商户号申请

三方申请(淘宝50元)

申请支付需要提供资料:
1、营业执照照片
2、法人身份证正反面
3、门头照片 店内照片各一张 (如果已经有小程序不需要提供)
4、公司需要提供对公户(个体需要提供法人名下银行卡银行卡办理的地区是那个)
5、手机号、邮箱

至此所有准备工作都好了,可以写代码了

四、写代码

分析一下思路

1、 JSAPI下单(生成一个预支付id)

请求参数
官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_1.shtml

{"mchid": "1900006XXX",  //后台获取"out_trade_no": "1217752501201407033233368318", //自行生成"appid": "wxdace645e0bc2cXXX", //后台获取"description": "Image形象店-深圳腾大-QQ公仔", //自行填写"notify_url": "https://weixin.qq.com/", //自行填写(一般自己域名)"amount": {"total": 1, //自行填写"currency": "CNY" //固定填写},"payer": {"openid": "o4GgauInH_RCEdvrrNGrntXDuXXX" //用户的openid}
}

返回:

{"prepay_id": "wx26112221580621e9b071c00d9e093b0000"
}

2、返回 wx.requestPayment 需要参数

官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/payment/wx.requestPayment.html

wx.requestPayment({timeStamp: '',nonceStr: '',package: '',signType: 'MD5',paySign: '',success (res) { },fail (res) { }
})

3、引入的依赖

<dependency><groupId>com.github.wechatpay-apiv3</groupId><artifactId>wechatpay-apache-httpclient</artifactId><version>0.3.0</version>
</dependency>

4、Service 代码

    /*** 微信支付* @param code  解析code出openid* @param des   商品描述* @param total 金额* @param appId  小程序appid* @param secret 小程序秘钥* @return 结果* @throws Exception 抛出异常*/public ResultInfo pay(String code, String des, double total,String appId,String secret ) throws Exception {//1、参数准备ByteArrayOutputStream bos = new ByteArrayOutputStream();ObjectMapper objectMapper = new ObjectMapper();//解析openIdString openId = weChatService.analysisOpenId(code, appId,secret);ObjectNode rootNode = objectMapper.createObjectNode();rootNode.put("mchid", WxConfig.mchId)      //商户号.put("appid", appId)    //小程序appid.put("description", des)          //商品描述.put("notify_url", WxConfig.notify_url) //通知地址.put("out_trade_no", System.currentTimeMillis() + "");//订单号rootNode.putObject("amount").put("total", (long) (total * 100));//金额:单位是分 乘100换成元rootNode.putObject("payer").put("openid", openId);//客户openidobjectMapper.writeValue(bos, rootNode);//2、解析证书PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(WxConfig.privateKey);//使用定时更新的签名验证器,不需要传入证书ScheduledUpdateCertificatesVerifier verifier = new ScheduledUpdateCertificatesVerifier(new WechatPay2Credentials(WxConfig.mchId, new PrivateKeySigner(WxConfig.mchSerialNumber, merchantPrivateKey)),WxConfig.apiV3Key.getBytes(StandardCharsets.UTF_8));//通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create().withMerchant(WxConfig.mchId, WxConfig.mchSerialNumber, merchantPrivateKey).withValidator(new WechatPay2Validator(verifier));// 通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新HttpClient httpClient = builder.build();HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi");httpPost.addHeader("Accept", "application/json");httpPost.addHeader("Content-type", "application/json; charset=utf-8");httpPost.setEntity(new StringEntity(bos.toString("UTF-8"), "UTF-8"));//开始请求HttpResponse response = httpClient.execute(httpPost);//得到结果String bodyAsString = EntityUtils.toString(response.getEntity());//处理结果JSONObject jsonObject = JSONObject.parseObject(bodyAsString);//出现错误,抛出if (jsonObject.containsKey("code")) {ThrowException.illegal(true, jsonObject.getString("message"));}//3、加密标签String prepay_id = jsonObject.getString("prepay_id");//预支付idString timeStamp = String.valueOf(System.currentTimeMillis());//时间戳String nonceStr = createRandomStringByLength(32);//32位随机数//字符串连接StringBuffer stringBuffer = new StringBuffer();stringBuffer.append(appId + "\n");//appidstringBuffer.append(timeStamp + "\n");//时间戳stringBuffer.append(nonceStr + "\n");//随机数stringBuffer.append("prepay_id=" + prepay_id + "\n");//预支付idSignature signature = Signature.getInstance("SHA256withRSA");signature.initSign(merchantPrivateKey);signature.update(stringBuffer.toString().getBytes("UTF-8"));byte[] signBytes = signature.sign();String paySign = Base64.encodeBytes(signBytes);//加密//返回结果JSONObject params = new JSONObject();params.put("appId", appId);params.put("timeStamp", timeStamp);params.put("nonceStr", nonceStr);params.put("prepay_id", prepay_id);params.put("signType", "RSA");params.put("paySign", paySign);ResultInfo resultInfo = new ResultInfo();resultInfo.setResult(params);return resultInfo;}//生产随机数private String createRandomStringByLength(int length) {Random random = new Random();StringBuffer sb = new StringBuffer();for (int i = 0; i < length; i++) {int number = random.nextInt(WxConfig.base.length());sb.append(WxConfig.base.charAt(number));}return sb.toString();}

// code解析出openId

public String analysisOpenId(String code,String appid,String secret){String url = "https://api.weixin.qq.com/sns/jscode2session" + //固定"?appid=" + appid + //小程序id"&secret=" + secret + //小程序密码"&js_code=" + code +"&grant_type=authorization_code"; //固定RestTemplate restTemplate = new RestTemplate();String str = restTemplate.getForObject(url, String.class);WeChatCode weChatCode=JSON.parseObject(str, WeChatCode.class);if (weChatCode==null){ThrowException.illegal(true,"code获取openId失败");return null;}else{return weChatCode.getOpenid();}
}

5、小程序 封装的支付


const pay = function (des, total) {return new Promise((resolve, reject) => {wx.showLoading({title: '加载中...',})wx.login({success(res) {wx.request({url: 'https://xxxx.com:8080/KYB/WeChat/getPrePayId',data: {code: res.code,des: des,total: total,},header: {"content-type": "application/x-www-form-urlencoded"},method: 'GET',success: res => {if (res.data.code == 200) {wx.hideLoading();const params = res.data.result;wx.requestPayment({timeStamp: params.timeStamp + '',nonceStr: params.nonceStr,package: 'prepay_id=' + params.prepay_id,signType: params.signType,paySign: params.paySign,success(res) {resolve("success")},fail(res) {reject("fail")}})} else {wx.showModal({title: res.data.msg,showCancel: false})reject("返回失败");}}})}})})
}module.exports = pay;


http://chatgpt.dhexx.cn/article/q4YFnDuI.shtml

相关文章

VC/MFC 检查指定的文件是否存在 判断文件是否存在

#include <iostream> #include <windows.h> #include <tchar.h>/*功能: 检查指定的文件是否存在编译环境: VS2017, 字符集可随意切换 */// 函数功能: 检查指定的文件是否存在, 文件存在则返回 TRUE, 不存在则返回 FALSE // LPCTSTR lpszFile 要检查的文件的绝…

html 判断本地文件存在,javascript怎么判断文件是否存在?

javascript怎么判断文件是否存在&#xff1f;下面本篇文章就来给大家介绍一下利用javascript判断文件是否存在的方法&#xff0c;希望对大家有所帮助。 在JavaScript中&#xff0c;可以通过ActiveXObject对象判断本地文件路径来判断本地文件是否存在&#xff0c;网络文件通过判…

matlab怎么分析数据,MATLAB应用——数据分析与统计

数学建模是用数学方法解决各种实际问题的桥梁,它已经渗透到各个领域,而且发挥出越来越重要的作用。面对自然科学和工程应用中的难题,大部分人无从入手,而个别人却能短时间内给出切实可行的解决方案,其差别往往在于驾驭数学知识的能力不同。现代计算机技术的应用不仅减少了…

大数据分析那点事

写在前文&#xff0c;首先声明博主对数据分析领域也在不断学习当中&#xff0c;文章中难免可能会出现一些错误&#xff0c;欢迎大家及时指正&#xff0c;博主在此之前也曾对不同量级、不同领域的数据进行过分析&#xff0c;但是在过程中总是感觉有许多困惑&#xff0c;即自己也…

【python与数据分析】Python与数据分析概述

目录 一、认识数据分析 1、数据分析的方法论与数据分析方法 &#xff08;一&#xff09;七何分析法——建立框架 &#xff08;二&#xff09;演绎树分析法——问题分层 &#xff08;三&#xff09;PEST分析法——设计环境 &#xff08;四&#xff09;金字塔原理分析法——…

2022年10个最佳地理空间数据分析 GIS 软件

数据可视化并不是简单的把数据变成图表, 而是以数据为视角看待世界。换言之&#xff0c;数据可视化的客体是数据&#xff0c;但我们往往想要的其实是数据视觉&#xff0c;以数据为工具&#xff0c;以可视化为手段&#xff0c;目的是描述真实&#xff0c;探索世界。GIS 就是这样…

数据分析报告编写规范

Ⅰ、数据分析报告编写规范 - 资料来源&#xff1a;百度文库 一份专业的数据分析报告&#xff0c;除了图表化呈现数据分析结果&#xff0c;还需要介绍此项分析的背景/目的&#xff0c;通过此次分析得到结论&#xff0c;以及结合业务知识给出的建议。在做数据报告之前&#xff0…

python数据分析常用图大集合

我们在做数据分析的时候&#xff0c;难免会用到图像来表示你要展示的东西&#xff0c;接下来写一下demo来表示一下各种图&#xff1a; 以下默认所有的操作都先导入了numpy、pandas、matplotlib、seaborn import numpy as np import pandas as pd import matplotlib.pyplot as…

数据分析自学路线

首先必须要对想要自学数据分析的朋友表示敬佩&#xff01;数据分析是个很庞大的学科体系&#xff0c;零零碎碎的知识点可能一辈子都学不尽&#xff0c;敢自学挑战的一定是个学习力和行动力超强的人&#xff01; 作为一个非科班转型的初级数据分析师&#xff0c;常有身边朋友问…

Python数据分析常用的类库

本节只对这些库进行一个简单介绍。 1. NumPy NumPy&#xff08;Numerical Python&#xff09;是 Python 科学计算的基础包&#xff0c;它可以提供以下功能。口快速高效的多维数组对象 ndarray。 口用于对数组执行元素级计算和直接对数组执行数学运算的函数。口用于读写硬盘…

10 个最佳地理空间数据分析 GIS 软件

有人说&#xff1a;一个人从1岁活到80岁很平凡&#xff0c;但如果从80岁倒着活&#xff0c;那么一半以上的人都可能不凡。 生活没有捷径&#xff0c;我们踩过的坑都成为了生活的经验&#xff0c;这些经验越早知道&#xff0c;你要走的弯路就会越少。 数据可视化并不是简单的把…

云计算机平台的特性,云平台对比传统平台特点分析

云计算的一个核心理念就是通过不断提高“云”的处理能力来减少用户终端的处理负担,最终使用户终端简化成一个单纯的输入输出设备,并能够按需享受“云”的强大计算能力。 而云计算平台与传统应用模式相比,具有如下特点。 1、虚拟化技术 现有的云计算平台的最大的特点是利用软…

什么是SAP Cloud Platform(SAP云平台) ?

1. 引言 SAP Cloud Platform (SCP) 是SAP目前主推的一个发展方向&#xff0c;从2012年SAP HANA Cloud Portfolio到后来的SAP HANA Cloud Platform&#xff0c;再到2017年SAP Cloud Platform的发布&#xff0c;SAP的云平台经过了一系列的演化过程。 在讨论SCP这一技术时&#…

云计算机是什么原理,云电脑的运行原理是什么?

大家好&#xff0c;这里是酷乐米小编龙牧&#xff0c;达龙云电脑这样的云游戏平台时什么原理来实现让玩家性能不是很好的电脑可以运行大型游戏呢&#xff1f; 这里就要说下云游戏的概念了&#xff0c;云游戏是以云计算为基础的游戏方式&#xff0c;在云游戏的运行模式下&#x…

云测试是什么?

云测&#xff08;Cloud Testing&#xff09;&#xff0c;是基于云计算的一种新型测试方案&#xff0c;服务商提供多种平台&#xff0c;多种浏览器、移动设备、服务器的平台&#xff0c;一般的用户在本地用自动化测试框架&#xff08;Appium、Selenium、Airtest等&#xff09;把…

物联网云平台概念及系统架构

物联网云平台概念 联动感知层和应用层的中枢系统&#xff0c;功能与价值凝聚的PaaS软件 物联网云平台是由物联网中间件这一概念逐步演进形成。简单而言&#xff0c;物联网云平台是物联网平台与云计算的技术融合&#xff0c;是架设在IaaS层上的PaaS软件&#xff0c;通过联动感知…

容器云平台详细介绍

前言 容器是一种轻量级、可移植、自包含的软件打包技术&#xff0c;使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器&#xff0c;无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。“从过去以物理机和虚拟机为…

什么是PaaS云平台?

什么是PaaS云平台&#xff1f; PaaS是&#xff08;Platform as a Service&#xff09;的缩写&#xff0c;是指平台即服务。把服务器平台作为一种服务提供的商业模式&#xff0c;通过网络进行程序提供的服务称之为SaaS(Software as a Service)&#xff0c;而云计算时代相应的服务…

云平台是什么意思 云服务平台有哪些【详细介绍】

云平台是什么意思 云服务平台有哪些【详细介绍】 摘要&#xff1a;云平台是什么意思?随着云计算的不断发展&#xff0c;很多的云平台都应运而生&#xff0c;这种平台允许开发者们或是将写好的程序放在“云”里运行&#xff0c;或是使用“云”里提供的服务&#xff0c;云服务有…

云平台是什么,云平台的发展对现今的企业和个人带来的好处

云平台&#xff0c;也称云计算平台。 云计算: 通俗的理解就是一组一堆的远程计算机与服务器协同工作构建出一个云组&#xff0c;对用户提供服务&#xff0c;这不是一个普通的计算机&#xff0c;是一个超级计算机&#xff0c;可以进行运算的计算机&#xff0c;而再通过云计算超…