支付宝沙箱后端模拟沙箱配置node.js教程

我这里只写代码部分的教程,前面的页面配置我就不多讲了

首先新建一个文件夹,然后建一个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

以上就是相关支付宝沙箱配置,同时这里当时也是谢谢各位网友以及各位帖友帮助教我搭配了!

好了,方法已经分享了.

当然也是有另外一种方法,可以监视付款状态产生回调,但是我用的是相对比较简单了.

另外这个查询如果你可以的话,建立把长度用一个限制,不然数据库中没有的也是查出来的,具体咋做,懂得应该都懂了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼程序员

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值