node+vue实现支付宝沙箱测试教程(附项目文件)

支付宝的沙箱测试需要前端做的并不多,只是调用一个后端定义的接口,将所需要的订单信息传输到后台,后台进行支付宝的sdk封装,然后返回前端一个链接地址跳转到支付宝的支付页面进行付款即可。

一、 前端的实现需要构建一个vue项目,然后点击触发事件执行接口调用即可,代码附上:

<template>

  <div class="home">

    <button @click="goPayment">发起支付</button>

  </div>

</template>



<script>

import axios from "axios";

import qs from "qs";

// @ is an alias to /src

export default {

  name: "HomeView",

  components: {},

  methods: {

    goPayment() {

      var data = {

        orderId: "w20211345452",//订单编号,看后台需要什么

      };

      axios({

        url: "http://localhost:8085/pay/api/payment",

        method: "POST",

        headers: {

          dataType: "JSONP",

          "Content-type": "application/x-www/form",

        },

        data: qs.stringify(data),

      }).then((res) => {

        console.log(res);

        window.location.href = res.data.result;

      });

    },

  },

};

</script>

注意安装 qs 和axios 依赖 。命令:

前端的代码可以直接复用的哈,不需要进行修改的。

二、 后端主要是通过node实现

1. 首先需要新建一个文件夹payment,然后cd到该目录文件下,新建一个serve.js文件,在项目文件夹下进行项目初始化:

npm init -y

 2. 其次依赖项目中所需要使用到的插件:

npm install alipay-sdk --s
npm install axios --s
npm install cors --s
npm install express

3. 然后在项目的根目录下新建一个untils文件夹,在文件下新建一个工具文件alipayuntils.js,代码:

const AlipaySdk = require('alipay-sdk').default;
const alipaySdk = new AlipaySdk({
  appId: '', // 应用id
  gateway: 'https://openapi.alipaydev.com/gateway.do', // 支付宝网关
  signType: 'RSA2', // 编码格式
  alipayPublicKey: '', // 支付宝公钥
  privateKey: '' // 应用私钥
})
//最后我们默认导出即可
module.exports = alipaySdk

此处需要配置appid,支付宝公钥和应用私钥,其余两个是固定的,这些配置需要再支付宝开放平台中的控制台进行处理吗,:https://open.alipay.com/develop/manage 

3.1. 进入开发平台,选择沙箱工具

 3.2. 查看appid 和 网关地址

3.3.  配置自定义密钥

 配置自定义密钥需要下载支付宝开发平台开发助手:异步验签 | 开放平台

 

然后根据要求在支付宝开放平台中的沙箱应用中进行自定义密钥配置即可

加签完成后将生成的支付宝公钥和应用私钥填入,appid,支付宝网关和编码格式配置在untils/alipayuntils.js文件中,此工具包的配置就完成了。  非常重要!!!

4. 随后再新建一个路由文件夹router,内新建路由文件index.js,代码如下:

var express = require('express')
var router = express.Router()
const alipaySdk = require('../untils/alipayUtil')
const AlipayFormData = require('alipay-sdk/lib/form').default
const axios = require('axios')
const cors = require('cors') //解决跨域请求问题
router.use(cors())
router.use(express.urlencoded({ extended: true }))

/* GET home page. */
router.get('/', function(req, res, next) {  //路由测试
  res.send('index')
})

router.post('/api/payment', function(req, res, next) { //支付宝数据封装
  // const orderId = req.body.orderId;
  // 对接支付宝
  const formData = new AlipayFormData();

  formData.setMethod('get');

  formData.addField('returnUrl', 'http://localhost:8080/'); //回调地址

// 商单信息
  formData.addField('bizContent', {
    out_trade_no: "21245956656"+Math.random(1,400)+"1128",
    product_code: "FAST_INSTANT_TRADE_PAY",
    subject: "门票",
    body: "商品详情",
    // timeout_express: "90m", 超时
    total_amount: '1'

  });

  let result = alipaySdk.exec(
    'alipay.trade.page.pay',
    {},

    { formData: formData }

  );

  result.then((resp) => {
    console.log(resp)
    res.send({
      success: 'true',
      code: 200,
      result: resp
    });
  });
});
module.exports = router;

5. 到此准备工作就做完了,随后进入node的入口文件配置, serve.js 文件代码:

const express = require("express");
const router = require("./router/index.js"); // 引入路由

var app = express();

app.all("*", function (req, res, next) { //配置预检请求
  console.log(req.method);

  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Content-type");
  res.header("Access-Control-Allow-Methods", "POST,GET,OPTIONS");
  res.header("Access-Control-Max-Age", 1728000); //预请求缓存20天
  next();

});

app.use(`/pay`, router); 

app.listen("8085", () => {//端口监听
  console.log("8085 port is start");
});

6. 最后再终端输入命令 :

node serve.js

即可启动后端服务,看到此提示就能知晓服务是否启动成功了

 7. 前端启动,点击进行转账测试,跳转到支付宝支付页面

注意,此处的支付账号和密码是沙箱测试的 

最后转账成功:

项目文件:

1、百度网盘 链接:node 沙箱测试项目文件
提取码:8k8f

解压,填充沙箱应用appid,支付宝公钥,应用私钥,运行访问即可

2、gitee直接拉取即可:

gitee仓库地址:https://gitee.com/fu-changyun/components.git

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
你好!感谢你的提问。关于uniapp对接支付宝沙箱,你可以按照以下步骤进行操作: 1. 首先,你需要在支付宝开放平台注册开发者账号,并创建应用。确保你已经完成了开发者身份认证和应用信息填写。 2. 在uniapp项目中,安装uni-app插件管理器(HBuilderX工具中的插件市场中下载安装),然后搜索并安装"uni-app支付宝小程序插件"。 3. 打开HBuilderX工具,进入项目根目录,在manifest.json文件中配置插件,将"uni-app支付宝小程序插件"添加到"mp-alipay"的"plugins"节点下。 4. 在uniapp项目中创建一个支付页面,可以命名为"alipay",该页面用于支付宝支付的相关操作。 5. 在支付页面的js文件中,引入支付宝支付插件,并初始化支付参数。示例代码如下: ``` import alipay from '@/uni_modules/uni-alipay-app/uni-alipay-app.js'; export default { data() { return { orderInfo: {}, // 支付订单信息,包括订单号、金额等 }; }, methods: { // 调用支付宝支付 async aliPay() { const result = await alipay.tradeAppPay({ orderStr: 'YourOrderString', // 支付订单字符串,由后端生成 isTest: true, // 是否使用沙箱环境 }); // 处理支付结果 if (result.resultCode === '9000') { // 支付成功 // TODO: 处理支付成功逻辑 } else { // 支付失败 // TODO: 处理支付失败逻辑 } }, }, }; ``` 6. 在支付页面的wxml文件中,添加一个按钮,并绑定上一步中定义的aliPay方法。 7. 最后,你需要在支付宝开放平台的开发者中心,配置沙箱环境下的支付回调地址,并将该地址填写到你的应用支付配置中。 以上是基本的步骤,你可以根据实际需求进行调整和扩展。希望对你有所帮助!如果有任何问题,请随时向我提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值