赞
踩
依照自己系统,自行选择下载
如下图所示,点击启用,系统会自行校对
这里主要是,下面选择,按自己选择就好,前端就选非java
先看下,成品后的,拿串链接,就是后台返回的路径
node.js中,自行,创建项目,对接mqsql。 这里直接创建alipay.js文件
// cnpm i //引入sdk const AlipaySdk = require('alipay-sdk').default; const alipaySdk = new AlipaySdk({ //AppId appId: 'AppId', //签名算法 signType: 'RSA2', //支付宝网关 gateway: 'https://openapi.alipaydev.com/gateway.do', //支付宝公钥 alipayPublicKey:"系统应用 非java公钥 '', //应用私钥 privateKey: ''系统应用 非java私钥" }); module.exports = alipaySdk;
注意,这个应用公钥 和私钥 ,是公钥模式,点查看,让你选择java或非java 下面那两个,不要选择错了
下载 npm install jsonwebtoken
2. 引入 require(‘jsonwebtoken’);
3. 生成token语法 jwt.sign( 用户信息 , 口令 , 过期时间)
4. 解析token jwt.decode(token);
下载 对接支付宝的sdk
cnpm i alipay-sdk -S
下载 axios
cnpm i axios -S
//引入支付宝配置文件 const alipaySdk = require('../db/alipay'); const AlipayFormData = require('alipay-sdk/lib/form').default; // 引入token包 let jwt = require('jsonwebtoken') //引入axiso const axios = require('axios'); router.get('/', function (req, res, next) { res.render('index', { title: 'Express' }); }); //发起支付 router.post('/api/payment',function(req,res,next){ //订单号 let orderId = req.body.orderId; //商品总价 let price = req.body.price; //购买商品的名称 let name = req.body.name; //开始对接支付宝API const formData = new AlipayFormData(); // 调用 setMethod 并传入 get,会返回可以跳转到支付页面的 url formData.setMethod('get'); //支付时信息 formData.addField('bizContent', { outTradeNo: orderId,//订单号 productCode: 'FAST_INSTANT_TRADE_PAY',//写死的 totalAmount: price,//价格 subject: name,//商品名称 }); //支付成功或者失败跳转的链接 formData.addField('returnUrl', 'http://localhost:8080/payment'); //返回promise const result = alipaySdk.exec( 'alipay.trade.page.pay', {}, { formData: formData }, ); //对接支付宝成功,支付宝方返回的数据 result.then(resp=>{ res.send({ data:{ code:200, success:true, msg:'支付中', paymentUrl : resp } }) }) })
注意,我里面加了token,不需要的话,删了那个token代码就行,还需注意以上的sql语句查询,按自己数据表查
下载 qs (加密传输,自行百度)qs是增加安全性的序列化 比JSON.stringify安全系数高
cnpm i qs -S
<div class="order-topay" @click="goPayment">提交订单</div> export default { data() { return { // 收货地址数据 path: {}, // 选中的商品 item: [], // 总价 total: { price: 0, num: 0, }, } }, goPayment(){ // 声明一个新数组,存放商品名称 let newArr = [] // 循环遍历,生成订单的商品数据,拿到其名称 this.goodsList.forEach((v) => { newArr.push(v.goods_name) }) // 支付 传递的参数 let dataOrder = { // 订单号 orderId: this.order_id, // 商品名称 join('')解析为字符串 name: newArr.join(''), // 总价格 price: this.total.price, } if (res.success) { //去支付 http .$axios({ url: '/api/payment', method: 'post', headers: { token: true, // 接口文档给的,固定的不变 'Content-Type': 'application/x-www-form-urlencoded', }, //qs是增加安全性的序列化 data: qs.stringify(dataOrder), }) .then((res) => { // res 后台返回的支付链接,前端打开这个链接就可以了 if (res.success) { console.log(res) // 打开支付宝的,支付页面 window.location.href = res.paymentUrl } }) } } }
goodsList是商品数据,换成自己的商品数据,token没有就删掉,name商品名称,从商品数据中拿到的,需要join解析一下,最后前端拿到后端返回的支付链接,直接打开就行了
支付宝定的,无痕浏览,沙箱操作,没周日12:00-周一12:00,维护期间,不要使用,用了也打不开
打开自己的沙箱账号,买家信息,下图填入买家账号,输入沙箱账号的密码111111,点下一步就行了
直接点立即支付就行了,真希望余额有这么多
圆满结束,自己的跑不起来我也没办法,我也是跟着网上学的,至少我这个还是比较全的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。