微信小程序 支付功能开发错误总结
发布时间 - 2026-01-10 23:11:56 点击率:次微信小程序 支付功能开发错误总结

微信小程序支付终于踩完坑了,发现里面坑挺大的,现在发个贴,希望以后入坑的同学可以看一下 :
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=2
业务流程在这里大家看文档的时候可以看到。第一个坑,获取用户的openid,参数一定要拼在url连接上,否则会报{"errcode":40013,"errmsg":"invalid appid, hints: [ req_id: iil1ba0504ns86 ]"}错误
onLoad: function () {
var that = this
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session?appid=wxaacf22345345cfc7162fe3&secret=83ebd41c3e6f34a49b3a34578063434548ff3f71&js_code=' + res.code + '&grant_type=authorization_code',
method: "POST",
success: function (res) {
that.setData({
openid: res.data.openid
})
}
})
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
第二个坑,支付统一下单接口,签名这个坑是比较多人遇到问题的这个是MD5加密经常和签名工具里面的加密签名不一样
签名加密工具地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1
签名加密的时候要转成utf-8,加密我用自己的接口进行加密的 digest.update(data.getBytes("utf-8"));
// 统一下单接口获取sign(签名)
paysignjsapi: function (appid, attach, body, mch_id, nonce_str, notify_url, openid, out_trade_no, spbill_create_ip, total_fee, trade_type, key) {
var self = this;
//加密签名
wx.request({
url: 'http://localhost:8080/XinXingWXApi/wxXcxApi/Md5Encrypt.do',
method: 'GET',
data: {
appid: appid,
attach: attach,
body: body,
mch_id: mch_id,
nonce_str: nonce_str,
notify_url: notify_url,
openid: openid,
out_trade_no: out_trade_no,
spbill_create_ip: spbill_create_ip,
total_fee: total_fee,
trade_type: trade_type,
key: key
},
//统一下单
success: function (res) {
var sign = res.data.strMd5
var formData = "<xml>"
formData += "<appid>" + appid + "</appid>" //appid
formData += "<attach>" + attach + "</attach>" //附加数据
formData += "<body>" + body + "</body>" //标题
formData += "<mch_id>" + mch_id + "</mch_id>" //商户号
formData += "<nonce_str>" + nonce_str + "</nonce_str>" //随机字符串,不长于32位。
formData += "<notify_url>" + notify_url + "</notify_url>" //异步接收微信支付结果通知的回调地址
formData += "<openid>" + openid + "</openid>" //用户Id
formData += "<out_trade_no>" + out_trade_no + "</out_trade_no>" //商户订单号
formData += "<spbill_create_ip>" + spbill_create_ip + "</spbill_create_ip>"
formData += "<total_fee>" + total_fee + "</total_fee>" //金额
formData += "<trade_type>" + trade_type + "</trade_type>" //公共号支付
formData += "<sign>" + sign + "</sign>"//签名
formData += "</xml>"
返回数据解析xml
//请求统一下单接口
wx.request({
url: "https://api.mch.weixin.qq.com/pay/unifiedorder",
method: 'POST',
data: formData,
success: function (data) {
wx.request({
url: "http://localhost:8080/XinXingWXApi/wxXcxApi/xmlAnalyze.do?strXml=" + data.data,
method: 'POST',
success: function (res) {
var pk = 'prepay_id=' + res.data.prepayId;
var timeStamp = self.createTimeStamp();
//获取支付签名,并支付
self.getsignType(appid, timeStamp, nonce_str, pk, "MD5", key);
}
})
}
})
}
});
}
第三就是调用支付了,这里也有几个小坑,第一就是appId很多写成appid就不行了,第二个就是preoatid 的参数格式要写对prepay_id=wx2017011711060194dccf725232155886323 第三个就是调用支付的时候报支付签名错误,也需要到签名接口查看签名是否一致,查看参数是否是对的,调用微信支付的时候必须加上appId
getsignType: function (appid, timeStamp, nonce_str, pk, signType, key) {
var that = this;
wx.request({
url: "http://localhost:8080/XinXingWXApi/wxXcxApi/getSignType.hn",
method: 'GET',
data: {
appId: appid,
timeStamp: timeStamp,
nonceStr: nonce_str,
pk: pk,
signType: signType,
key: key
},
success: function (res) {
console.log(res.data.paySign)
var paySign = res.data.paySign
//调用微信支付
wx.requestPayment({
'appId': appid,
'timeStamp': timeStamp,
'nonceStr': nonce_str,
'package': pk,
'signType': 'MD5',
'paySign': paySign,
'success': function (res) {
console.log(res);
console.log('success');
},
'fail': function (res) {
console.log(res);
console.log('fail');
},
'complete': function (res) {
// console.log(res);
console.log('complete');
}
});
}
})
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# 微信小程序
# 支付功能
# 小程序支付功能的开发
# 微信小程序支付及退款流程详解
# 微信小程序 支付简单实例及注意事项
# 微信小程序调用微信支付接口的实现方法
# 微信小程序微信支付接入开发实例详解
# 微信小程序 在线支付功能的实现
# 微信小程序进行微信支付的步骤昂述
# 详解微信小程序支付流程与梳理
# 微信小程序中实现微信支付完整步骤
# 下单
# 第二个
# 会报
# 商户
# 自己的
# 几个
# 在这里
# 也有
# 第一个
# 我用
# 希望能
# 可以看到
# 要到
# 看一下
# 第三个
# 谢谢大家
# 比较多
# 不行了
# 用户登录
# 回调
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速建站并高效导出源代码?
晋江文学城电脑版官网 晋江文学城网页版直接进入
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
网站制作企业,网站的banner和导航栏是指什么?
如何快速搭建高效简练网站?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Android仿QQ列表左滑删除操作
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何快速使用云服务器搭建个人网站?
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
Python图片处理进阶教程_Pillow滤镜与图像增强
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何在IIS7中新建站点?详细步骤解析
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
如何获取PHP WAP自助建站系统源码?
如何续费美橙建站之星域名及服务?
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
详解Android图表 MPAndroidChart折线图
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
香港服务器部署网站为何提示未备案?
Laravel Session怎么存储_Laravel Session驱动配置详解
🚀拖拽式CMS建站能否实现高效与个性化并存?
教学论文网站制作软件有哪些,写论文用什么软件
?
如何构建满足综合性能需求的优质建站方案?
Python面向对象测试方法_mock解析【教程】
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何在腾讯云服务器上快速搭建个人网站?
智能起名网站制作软件有哪些,制作logo的软件?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
韩国服务器如何优化跨境访问实现高效连接?
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
装修招标网站设计制作流程,装修招标流程?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
黑客如何利用漏洞与弱口令入侵网站服务器?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
重庆市网站制作公司,重庆招聘网站哪个好?
Android okhttputils现在进度显示实例代码

