文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

微信小程序支付完整流程

2023-09-21 11:10

关注

1、注册微信支付商户号(由上级或法人注册)

注册链接:https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal
此商户号,需要由主管及更上级领导进行注册,会成为公司收款账户
企业注册需要材料:营业执照,对公银行账户信息,法人身份证

2、注册小程序账号(由上级或者领导注册)

企业一般注册为企业小程序,非个人,需要上传营业执照等。注册地址

3、登录商户号绑定小程序

登录之前注册好的商户账号,将当前小程序ID绑定至此商户,表明此小程序可以调用此商户支付相关接口。

4、后端工程师书写接口

后端书写接口,根据前端传入数据,返回微信支付核心数据,后端需要什么数据,前端调用此接口时,传给后端即可。
在这里插入图片描述

返回核心数据如下:

"appId": "xxxx","nonceStr": "xxxx","packageValue": "prepay_id=xxxxx","paySign": "xxxxxx","signType": "MD5","timeStamp": "xxxxxx"

5、前端工程师调用接口

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

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

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

uniapp登录:

uni.login({  provider: 'weixin',  success (res) {    if (res.code) {     //code: 用户登录凭证(有效期五分钟)使用 code 可以换取 openid、unionid、session_key 等核心信息    } else {      console.log('登录失败!' + res.errMsg)    }  }})

发送请求调用微信官方接口,用code凭证换取用户openid(真实用户id)
原生小程序:wx.request uniapp: uni.request, 流程无差别

uni.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);  }})
5.2 调用公司后端接口,获取支付核心数据
// 调用后端接口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"
5.3 调用微信官方支付接口,弹出支付界面
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)      }     })  }})

调用后,弹出付款界面,模拟器需要扫码支付。
点击真机调试会直接弹出微信付款界面。

总结

在这里插入图片描述

来源地址:https://blog.csdn.net/tangtanglinli/article/details/129554831

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯