我这里只写代码部分的教程,前面的页面配置我就不多讲了
首先新建一个文件夹,然后建一个js把
const AlipaySdk = require('alipay-sdk').default; // 引入 SDK
const alipaySdk = new AlipaySdk({ appId: '2021000117615613', // 开放平台上创建应用时生成的 appId signType: 'RSA2', // 签名算法,默认 RSA2 gateway: 'https://openapi.alipaydev.com/gateway.do', // 支付宝网关地址 ,沙箱环境下使用时需要修改 alipayPublicKey: '', // 支付宝公钥,需要对结果验签时候必填 privateKey: '', // 应用私钥字符串 }); module.exports = alipaySdk;
因为这个alipay-sdk不是自带的,因此你需要手动下载一下
npm i alipay-sdk
写好之后,我们就是新建立一个主页面了,然后就是index.js了
下载npm i express mysql nodemon 中间件
我这里比较简单思维,代码演示:
const express=require('express')
//
let app=express();
const alipaySdk=require('./alipayUtil')
const AlipayFormData=require('alipay-sdk/lib/form').default
//支付宝相关配置
const bodyParser = require('body-parser')
app.use( bodyParser.urlencoded({extended: true}) )
app.use(bodyParser.json())
// post body中间件
const index1=require('./mysql')
// 配置连接数据库相关的配置
app.use((req,res,next)=>{
res.setHeader('Access-Control-Allow-Origin','*')
// 解决跨域的
next()
})
app.get('/api/Appipay',(res,req)=>{
// 价格
let {id,price,title,neirong}=res.query
let sql='select * from pay where id='+JSON.stringify(id)+'and price='+JSON.stringify(price)+'and title='+JSON.stringify(title)+'and neirong='+JSON.stringify(neirong)+''
index1(sql,(err,res1)=>{
if(err)
{
req.send({status:'支付失败!',code:404})
}
console.log(res1.length)
const formData = new AlipayFormData();
formData.setMethod('get');
formData.addField('notifyUrl', 'https://www.baidu.com');
// 跳转之后的
formData.addField('bizContent', {
outTradeNo:id, // 商户订单号,64个字符以内、可包含字母、数字、下划线,且不能重复
productCode: 'FAST_INSTANT_TRADE_PAY', // 销售产品码,与支付宝签约的产品码名称,仅支持FAST_INSTANT_TRADE_PAY
totalAmount: price, // 订单总金额,单位为元,精确到小数点后两位
subject:title, // 订单标题
body:neirong, // 订单描述
});
// 所有存在的东西,完成查询操作
formData.addField('returnUrl', 'https://opendocs.alipay.com');
const result = alipaySdk.exec( // result 为可以跳转到支付链接的 url
'alipay.trade.page.pay', // 统一收单下单并支付页面接口
{}, // api 请求的参数(包含“公共请求参数”和“业务参数”)
{ formData: formData },
);
result.then((resp)=>{
// req.send({sucess:'成功!'}
req.send({sucess:'成功支付!','result':resp,code:200})
})
})
})
app.get('/zhifu',(req,res)=>{
let {price,title,neirong}=req.query
const id=String(Math.random()*728566+1782522)
// http://localhost:3000/zhifu?id=1&price=1&title=1&neirong=1
let sql='insert into pay set id='+JSON.stringify(id)+',price='+JSON.stringify(price)+',title='+JSON.stringify(title)+',neirong='+JSON.stringify(neirong)+''
index1(sql,(err,res2)=>{
if(err) throw err
console.log(res2)
})
// 调用这个接口进行添加操作!
})
app.listen(3000,()=>{
console.log('项目启动了!')
})
对了,这里没有结束,你需要建立一个
mysql.js
代码为:
function ressdertit(db1,x1)
{
const mysql=require('mysql')
const coon=mysql.createConnection({
host:'localhost',
user:'root',
password:'newpassword',
database:'xinnianwenhou'
//这里填的是你自己的数据库以及相关名字
})
coon.connect
coon.query(db1,x1,(err,res)=>{
if(err)throw err
console.log(res)
})
}
module.exports=ressdertit
以上就是相关支付宝沙箱配置,同时这里当时也是谢谢各位网友以及各位帖友帮助教我搭配了!
好了,方法已经分享了.
当然也是有另外一种方法,可以监视付款状态产生回调,但是我用的是相对比较简单了.
另外这个查询如果你可以的话,建立把长度用一个限制,不然数据库中没有的也是查出来的,具体咋做,懂得应该都懂了!