微信小程序支付

小程序云开发实现微信支付完整代码

 暂时放在这里,后续使用

原网址

效果图:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NzEzNzUy_size_16_color_FFFFFF_t_70

资质

需要是已经开通了微信支付,且已绑定了商户号的小程序。

开通

在云控制台 -> 设置 -> 全局设置中开通。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NzEzNzUy_size_16_color_FFFFFF_t_70 1

二, 创建支付的云函数

1,创建云函数pay

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLTMyMzAyYWRlMzA1YjhhMTgucG5n

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLThlYTQ3ZmZhMGI0Y2ZmY2EucG5n

三,引入三方依赖tenpay

我们这里引入三方依赖的目的,是创建我们支付时需要的一些参数。我们安装依赖是使用里npm 而npm必须安装node,关于如何安装node,我这里不做讲解,百度一下,网上一大堆。

1,首先右键pay,然后选择在终端中打开

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLTg4ODEwMzA0OTllYmU1Y2UucG5n

2,我们使用npm来安装这个依赖。

在命令行里执行 npm i tenpay
 

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLWM2MWNiMWNiNTg4MGM0NzUucG5n


 

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLWNkMzRjNjNlMzllNjQyN2YucG5n


 

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLTc2ODcxMjMzNzQ4NWJmNjcucG5n


安装完成后,目录如下
 

20210223181508382.png


到这里我们的tenpay依赖就安装好了。

四,编写云函数pay

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLWNkMzZmOTA4NGZhZGE0OTIucG5n


代码如下

 
  1. //云开发实现支付
  2. const cloud = require('wx-server-sdk')
  3. cloud.init()
  4. //1,引入支付的三方依赖
  5. const tenpay = require('tenpay');
  6. //2,配置支付信息
  7. const config = {
  8. appid: 'xxxxxx',
  9. mchid: 'xxxx',
  10. partnerKey: 'xxxxxxx',
  11. notify_url: 'http://xxx.xxxxxx.cn',
  12. spbill_create_ip: '127.0.0.1' //这里填这个就可以
  13. };
  14. exports.main = async(event, context) => {
  15. const wxContext = cloud.getWXContext()
  16. let {
  17. orderid,
  18. money
  19. } = event;
  20. //3,初始化支付
  21. const api = tenpay.init(config);
  22. let result = await api.getPayParams({
  23. out_trade_no: orderid,
  24. body: '商品简单描述',
  25. total_fee: money, //订单金额(分),
  26. openid: wxContext.OPENID //付款用户的openid
  27. });
  28. return result;
  29. }

一定要注意把appid,mchid,partnerKey换成你自己的。

到这里我们获取小程序支付所需参数的云函数代码就编写完成了。
不要忘记上传这个云函数。
 

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLWJhOTljYTZmZTMzNDAxZWMucG5n


出现下图就代表上传成功

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLTYxMzNkNjFiYzMwMGRhYzQucG5n

五,写一个简单的页面,用来提交订单,调用pay云函数。

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLWVlOTc0YWVjYWRhNDhmN2MucG5n


这个页面很简单,
1,自己随便编写一个订单号(这个订单号要大于6位)
2,自己随便填写一个订单价(单位是分)
3,点击按钮,调用pay云函数。获取支付所需参数。

下图是官方支付api所需要的一些必须参数。
 

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLTI3MDhiNzQ3NTQwOTE5OWIucG5n


下图是我们调用pay云函数获取的参数,和上图所需要的是不是一样。

\[图片上传中...(WechatIMG9.jpeg-82c1c2-1565617669894-0)\]

六,调用wx.requestPayment实现支付

下图是官方的示例代码
 

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLTAwZTkzMTU1OTBlNGUxNGMucG5n


这里不在做具体讲解了,把完整代码给大家贴出来

 
  1. // pages/see-businessCard/see-businessCard.js
  2. const app = getApp();
  3. var that
  4. const db = wx.cloud.database()
  5. const _ = db.command
  6. Page({
  7. /**
  8. * 页面的初始数据
  9. */
  10. data: {
  11. list: [],
  12. },
  13. onLoad(){
  14. that=this
  15. this.formSubmit()
  16. },
  17. //提交订单
  18. formSubmit: function(e) {
  19. let that = this;
  20. wx.cloud.callFunction({
  21. name: "pay",
  22. data: {
  23. orderid: "a1212",
  24. money: "100"
  25. },
  26. success(res) {
  27. console.log("提交成功", res.result)
  28. that.pay(res.result)
  29. },
  30. fail(res) {
  31. console.log("提交失败", res)
  32. }
  33. })
  34. },
  35. //实现小程序支付
  36. pay(payData) {
  37. //官方标准的支付方法
  38. wx.requestPayment({
  39. timeStamp: payData.timeStamp,
  40. nonceStr: payData.nonceStr,
  41. package: payData.package, //统一下单接口返回的 prepay_id 格式如:prepay_id=***
  42. signType: 'MD5',
  43. paySign: payData.paySign, //签名
  44. success(res) {
  45. console.log("支付成功", res)
  46. },
  47. fail(res) {
  48. console.log("支付失败", res)
  49. },
  50. complete(res) {
  51. console.log("支付完成", res)
  52. }
  53. })
  54. },
  55. })

到这里,云开发实现小程序支付的功能就完整实现了。

下图是支付完成的状态。

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLTkwNmY2NDQwN2JlNjJjNGMucG5n

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来一定会来的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值