我现在用云开发平台,想实现微信支付功能;


微信支付的前提

1、你的小程序开通了支付功能或者,你的小程序关联了商户号

2、你的小程序能开通支付功能,一般都是非个人类型的小程序


准备工作

1、获取小程序的openid(微信小程序后台有)

2、获取商户号,一般是10位(微信公众商户平台上有)

3、获取秘钥,不记得没关系重新设置一下就可以了,记住有大小写英文+数字的组合,自己随便设置,只要是32位就可以了;一般设置以后就立刻生效,特殊的是15分钟生效(微信公众商户平台上有)


开通云服务(在创建项目的时候,勾选使用云服务,不然没有后面了)

1、创建云开发小程序;就是创建小程序项目的时候,下面有一个使用云开发服务,勾选一下;

2、进入项目页面,点击云开发,输入环境名称就可以了

配置环境

 //数据库const db = wx.cloud.database({env: "tjnk3u19"});//数据库

创建云函数pay

第一个文件夹,右键点击,第二个

名称为pay

在pay文件夹上面,右键,在终端打开

引入三方依赖  是创建我们支付时需要的一些参数  tenpay  npm i tenpay

我们安装依赖是使用里npm 而npm必须安装node;

有的小伙伴们可以查看一下自己有没有安装,输入node -v

如果和我一样,就说明,已经安装过了,不需要安装的;

如果没有的话,说明你还没有安装过node.js,你需要去官网上面下载node.js然后安装;安装以后在cmd命令下输入node -v 如果出现版本信息,说明安装成功了;

我们现在可以安装tenpay了,输入命令npm i tenpay

安装wx-server-sdk包没

npm install --save wx-server-sdk

安装完成后,我们的pay云函数会多出一个package.json 文件

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

编写云函数pay

//云开发实现支付
const cloud = require('wx-server-sdk')
cloud.init()//1,引入支付的三方依赖
const tenpay = require('tenpay');
//2,配置支付信息
const config = {appid: '微信小程序appid',mchid: '商户号一般是10位',partnerKey: '密钥,可以重设的,最好重设,这里是支付的一个坑',notify_url: '随便填写一个公网可以访问的地址,如百度首页',spbill_create_ip: '127.0.0.1' //这里填这个就可以
};exports.main = async (event, context) => {const wxContext = cloud.getWXContext()let {total_fee} = event;//3,初始化支付const api = tenpay.init(config);const nonceStr = Math.random().toString(36).substr(2, 15)const timeStamp = parseInt(Date.now() / 1000) + ''const out_trade_no = "otn" + nonceStr + timeStamplet result = await api.getPayParams({out_trade_no: out_trade_no,body: '牌位',total_fee: total_fee, //订单金额(分),openid: wxContext.OPENID //付款用户的openid});return result;
}

要上次云函数,不然会出问题

只看图,图中的代码是之前错误的代码

只看图,图中的代码是之前错误的代码

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

pay.wxml

<view class='container'><input class='ipt' value='{{price}}' bindinput='onInput' type='digit' /><button class='btn-pay' bindtap='pay'>Pay</button></view>

pay.js

Page({data: {price: 1},onInput(event) {this.setData({ price: event.detail.value });},pay() {wx.cloud.callFunction({name: 'payment',data: {total_fee:1}, // 可传入相关参数。success: res => {console.log(res.result)if (!res.result.appId) returnwx.requestPayment({...res.result,success: res => {console.log(res)}})}})}
});

大部分人到这里就显示支付成功了,但是我没有!可能我是新人的原因!


我一直报错误!签名错误!

有人说重置私钥,我重置十几次了,不行;后来才发现前期还有很多的工作,我没做,大家的文档都那么简单,因此我就以为很简单了!!


我没有获取openid,因此用户不能实现支付的!从哪里扣钱呢?

获取openid,也是使用云函数

就是这个login文件夹,一般云服务下面自带的,不需要我们去写的,如果你没有,那么我提供代码给你;

// 云函数模板
// 部署:在 cloud-functions/login 文件夹右击选择 “上传并部署”const cloud = require('wx-server-sdk')// 初始化 cloud
cloud.init({// API 调用都保持和云函数当前所在环境一致env: cloud.DYNAMIC_CURRENT_ENV
})/*** 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端* * event 参数包含小程序端调用传入的 data* */
exports.main = (event, context) => {console.log(event)console.log(context)// 可执行其他自定义逻辑// console.log 的内容可以在云开发云函数调用日志查看// 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)等信息const wxContext = cloud.getWXContext()return {event,openid: wxContext.OPENID,appid: wxContext.APPID,unionid: wxContext.UNIONID,env: wxContext.ENV,}
}

右击文件夹,然后上传并部署:(不上传node_modules)

这个时候云函数就有login云函数了

我们在app.js里面配置全局变量,目的是为了程序启动的时候我们可以在任意一个页面获取到openid;

    /*** 打开小程序的时候首先获得用户openid*/wx.cloud.callFunction({name: 'login',data: {},success: res => {this.globalData.openid = res.result.openid},fail: err => {console.error('[云函数] [login] 调用失败', err)}})//获取openid

在我们需要设置的 获取openid的里面引用 const app=getApp();


这一步,没有必要,但是我当时什么都不懂,不知道怎么做!所以试了好多

可以用云端测试,一下获取openid的函数是否成功的!

打开云开发,云函数,选择login,点击右侧的云端测试


整个支付的流程是这样的;

1、填写金额,点击支付

2、把支付的金额给pay云函数;

3、云函数,获取11个参数(这个是最全的,一般9个参数就可以了);

你记住,这些参数appid,不能写成appId,一个字母一个大小写都不能改!!

在同一下单的时候会生成一个签名,这个签名验证通过了,才会返回5个参数,然后5个参数再生成一个签名,完成支付功能!

史上最全教程没有之一,微信小程序使用云开发解决微信支付问题,我走了几天几夜的弯路啊相关推荐

  1. 微信小程序使用云开发实现微信支付功能 报错Error: 签名错误,史上最全解决办法,不服留言骂我

    报错背景 微信小程序使用云开发实现微信支付功能,但是报错了 报错信息 报错原因 小程序想要使用微信支付,必须满足下面几个条件的 1,必须是非个人小程序(个人小程序用不了支付) 企业小程序需要认证! 2 ...

  2. 微信小程序:云开发表情包制作源码

    该款小程序是一个表情包制作 内容毕竟丰富,另外自定义制作方面也是特别的自由 支持自主上传图片,自定义文章,另外拥有多种素材模板以供选择 这是一款云开发的小程序,但是安装还是挺简单的 搭建教程: 首先使 ...

  3. 微信小程序的云开发以及与传统开发的比较

    一.微信小程序的云开发概念 云开发就是一套解决小程序前后端开发的一种云端能力 它提供了一整套云服务及简单.易用的 API 和管理界面,以尽可能降低后端开发成本,让开发者能够专注于核心业务逻辑的开发.尽 ...

  4. 微信小程序用云开发实现多人聊天2020/05/21

    微信小程序用云开发实现多人聊天室 微信小程序用云开发实现多人聊天2020/05/21 效果图片 js wxml wxss 微信小程序用云开发实现多人聊天2020/05/21 用微信云开发实现聊天室 无 ...

  5. 微信小程序利用云开发实现评论功能

    微信小程序利用云开发实现评论功能 如果喜欢可以给我一个关注. 一.微信小程序,评论功能的实现. 首先我们先布局,一个文章或者是商品,底下是评论, <!-- 商品详情 --> <vie ...

  6. 【微信小程序】云开发篇(一)——申请小程序

    [微信小程序]云开发篇(一)--申请小程序 [微信小程序]云开发篇(二)--初始化云开发(微信开发者工具) [微信小程序]云开发篇(三)--代码管理 [微信小程序]云开发篇(四)--开通云开发 [微信 ...

  7. 微信 商店服务器,对比saas小程序,云开发,微信小商店

    原标题:对比saas小程序,云开发,微信小商店 要做一个小程序,大部分人都知道找第三方的服务商,开通账号,然后把数据内容都放在别人家的服务器中,使用人家提供的免费功能. 但,你有没有想过,如果这家服务 ...

  8. 通过微信小程序的云开发实现留言功能

    通过微信小程序的云开发实现留言功能 index.wxml index.wxss index.js 微信小程序中用于解析date的util.js 授权页home.wxml home.wxss home. ...

  9. 小程序云开发服务器太慢,为什么微信小程序的云开发响应这么慢?

    为什么微信小程序的云开发响应这么慢?Why is the response of WeChat applet cloud development so slow?为什么微信小程序的云开发响应这么慢? ...

最新文章

  1. cocos2dx JS 游戏切到后台再进入游戏的处理
  2. dbutility mysql_c# 数据库通用类DbUtility
  3. Binder子系统之调试分析(一)
  4. Mac下下载android4.2源码,进行源码调试
  5. nj08---process、console
  6. rabbitmq-通配符模式
  7. php 百度报表工具下载,PHP Report Maker12最新版
  8. orm框架设计、分析与开发
  9. flask+jsonp跨域前后台交互(接口初体验)
  10. iPhone Application Programming Guide, Ch4
  11. Java导出导入Excel方法
  12. 上线一套 BI 系统到底需要多少钱???
  13. IDA安装lazyIDA
  14. 开源的网页防篡改监控工具推荐——WGCLOUD
  15. HBuilder开发APP(二)——网络请求
  16. 利用python做淘宝_利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程...
  17. 步数精灵v4.0霸占好友排行榜首位 安卓版
  18. nuc977 linux i9341 2.8寸lcd配置
  19. 气传导蓝牙耳机优缺点有哪些?气传导耳机科普及推荐
  20. MP4学习(九)ts-mp4源码阅读(7)mdia box的解析

热门文章

  1. 百度前端训练营day2笔记
  2. 安卓虚拟键盘_Logitech罗技 key to go蓝牙键盘使用体验
  3. java 微信分享实现_java实现微信分享
  4. 【周志华机器学习】四、决策树
  5. GNSS精密单点定位(PPP)基本原理(进阶篇)
  6. 如何在OpenLDAP启用MemberOf
  7. django-ckeditor配置使用markdown语法
  8. masory 刷新约束方法 释义
  9. 界面原型设计工具使用系列(三)-Mockup Builder
  10. 坤泰股份在深交所上市:预计全年营收超4亿元,张明夫妇为实控人