史上最全教程没有之一,微信小程序使用云开发解决微信支付问题,我走了几天几夜的弯路啊
我现在用云开发平台,想实现微信支付功能;
微信支付的前提
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个参数再生成一个签名,完成支付功能!
史上最全教程没有之一,微信小程序使用云开发解决微信支付问题,我走了几天几夜的弯路啊相关推荐
- 微信小程序使用云开发实现微信支付功能 报错Error: 签名错误,史上最全解决办法,不服留言骂我
报错背景 微信小程序使用云开发实现微信支付功能,但是报错了 报错信息 报错原因 小程序想要使用微信支付,必须满足下面几个条件的 1,必须是非个人小程序(个人小程序用不了支付) 企业小程序需要认证! 2 ...
- 微信小程序:云开发表情包制作源码
该款小程序是一个表情包制作 内容毕竟丰富,另外自定义制作方面也是特别的自由 支持自主上传图片,自定义文章,另外拥有多种素材模板以供选择 这是一款云开发的小程序,但是安装还是挺简单的 搭建教程: 首先使 ...
- 微信小程序的云开发以及与传统开发的比较
一.微信小程序的云开发概念 云开发就是一套解决小程序前后端开发的一种云端能力 它提供了一整套云服务及简单.易用的 API 和管理界面,以尽可能降低后端开发成本,让开发者能够专注于核心业务逻辑的开发.尽 ...
- 微信小程序用云开发实现多人聊天2020/05/21
微信小程序用云开发实现多人聊天室 微信小程序用云开发实现多人聊天2020/05/21 效果图片 js wxml wxss 微信小程序用云开发实现多人聊天2020/05/21 用微信云开发实现聊天室 无 ...
- 微信小程序利用云开发实现评论功能
微信小程序利用云开发实现评论功能 如果喜欢可以给我一个关注. 一.微信小程序,评论功能的实现. 首先我们先布局,一个文章或者是商品,底下是评论, <!-- 商品详情 --> <vie ...
- 【微信小程序】云开发篇(一)——申请小程序
[微信小程序]云开发篇(一)--申请小程序 [微信小程序]云开发篇(二)--初始化云开发(微信开发者工具) [微信小程序]云开发篇(三)--代码管理 [微信小程序]云开发篇(四)--开通云开发 [微信 ...
- 微信 商店服务器,对比saas小程序,云开发,微信小商店
原标题:对比saas小程序,云开发,微信小商店 要做一个小程序,大部分人都知道找第三方的服务商,开通账号,然后把数据内容都放在别人家的服务器中,使用人家提供的免费功能. 但,你有没有想过,如果这家服务 ...
- 通过微信小程序的云开发实现留言功能
通过微信小程序的云开发实现留言功能 index.wxml index.wxss index.js 微信小程序中用于解析date的util.js 授权页home.wxml home.wxss home. ...
- 小程序云开发服务器太慢,为什么微信小程序的云开发响应这么慢?
为什么微信小程序的云开发响应这么慢?Why is the response of WeChat applet cloud development so slow?为什么微信小程序的云开发响应这么慢? ...
最新文章
- cocos2dx JS 游戏切到后台再进入游戏的处理
- dbutility mysql_c# 数据库通用类DbUtility
- Binder子系统之调试分析(一)
- Mac下下载android4.2源码,进行源码调试
- nj08---process、console
- rabbitmq-通配符模式
- php 百度报表工具下载,PHP Report Maker12最新版
- orm框架设计、分析与开发
- flask+jsonp跨域前后台交互(接口初体验)
- iPhone Application Programming Guide, Ch4
- Java导出导入Excel方法
- 上线一套 BI 系统到底需要多少钱???
- IDA安装lazyIDA
- 开源的网页防篡改监控工具推荐——WGCLOUD
- HBuilder开发APP(二)——网络请求
- 利用python做淘宝_利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程...
- 步数精灵v4.0霸占好友排行榜首位 安卓版
- nuc977 linux i9341 2.8寸lcd配置
- 气传导蓝牙耳机优缺点有哪些?气传导耳机科普及推荐
- MP4学习(九)ts-mp4源码阅读(7)mdia box的解析