uniapp开发微信小程序支付

最近开发的项目涉及到支付,所以来做个总结。(大家一定要看我的代码注释,很详细的解释)

微信小程序支付就要调用这个api,这些参数是必传的,所以我们要填写这些参数的value

// 仅作为示例,非真实参数信息。
uni.requestPayment({
    provider: 'wxpay',//服务提供商,通过 uni.getProvider 获取。
	timeStamp: String(Date.now()),//时间戳(10位数字)
	nonceStr: 'A1B2C3D4E5',//随机生成的字符串
	package: 'prepay_id=wx20180101abcdefg',//预付id通过接口返回(点击支付时调用)
	signType: 'RSA',//这里的签名算法我用的RSA(微信官方默认RSA)
	paySign: '',//生成的签名
	success: function (res) {
		console.log('success:' + JSON.stringify(res));
	},
	fail: function (err) {
		console.log('fail:' + JSON.stringify(err));
	}
});

一、服务提供商:通过uni.getProvider获取

uni.getProvider({
	service: 'payment',
	success:res=>{
		res.provider[0]//获取的服务商
	}
})

二、时间戳

//获取的十位时间戳
let timeStamp = Math.round(new Date().getTime()/1000)

三、随机字符串,长度为32个字符以下。

let len = 30;
let pwd =""
var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var maxPos = alphabet.length;
for (let i = 0; i < len; i++) {
	pwd += alphabet.charAt(Math.floor(Math.random() * maxPos));
}

四、生成签名(使用jsrsasign)

//封装的js工具
//下载cnpm i jsrsasign --save
var rs = require("jsrsasign");
// 获取签名
const getSHA256withRSA = (content) => {
    //config.privateKeyString 这个获取我的加密算法,因为我是把它保存到一个js文件暴露出来
	const key = rs.KEYUTIL.getKey(config.privateKeyString);
	// 创建 Signature 对象,设置签名编码算法
	const signature = new rs.KJUR.crypto.Signature({
		alg: "SHA256withRSA"
	});
	// 初始化
	signature.init(key);
	signature.updateString(content);
	// 生成密文
	const originSign = signature.sign();
	return rs.hextob64(originSign);
}
//支付签名 
const signature = (nonceStr, packageStr, timeStamp) => {
    //这里的拼接规则可以看下下方截图或者看下微信支付官方文档
	let paySignStr = `${config.APPID}\n${timeStamp}\n${nonceStr}\n${packageStr}\n`
    //然后调用加密
	return getSHA256withRSA(paySignStr)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值