vue3+Node支付宝沙箱支付

此功能是在VScode中实现

一、安装依赖alipay-sdk

npm i alipay-sdk@3.6.1

二、在Node后端创建文件夹pay和创建alipayUtil.js文件

三、alipayUtil.js文件进行配置

const AlipaySdk = require('alipay-sdk').default

const alipaySdk = new AlipaySdk({
    appId:'', //沙箱应用appID
    signType:'RSA2', //签名算法
    gateway:'',  //支付宝网关地址
    alipayPublicKey:'',  //支付宝公钥
    privateKey:'' //应用私钥
})
module.exports = alipaySdk

四、在index.js文件中导入和配置相应的接口

后端

// 引入所需模块
const alipaySdk = require('../pay/alipayUtil');
const AlipayFormData = require('../node_modules/alipay-sdk/lib/form');

// 设置 Express 路由中间件
router.use(express.urlencoded({ extended: true }));

// 处理 POST 请求到 '/api/payment' 路由
router.post('/api/payment', (req, res) => {
  // 解构请求体参数
  let { orderId, price, detail } = req.body;

  // 创建一个新的 AlipayFormData 实例
  const formData = new AlipayFormData();

  // 设置表单提交方法为 GET
  formData.setMethod('get');
  // 添加支付完成后的返回 URL
  formData.addField('returnUrl', '配置想要跳转页面的路由');  //支付完之后跳转的页面

  // 添加支付请求的业务内容
  formData.addField('bizContent', {
    outTradeNo: orderId, // 订单号
    productCode: 'FAST_INSTANT_TRADE_PAY', // 快速即时交易支付产品码
    totalAmount: price, // 商品总金额
    subject: '商品', // 商品名称
    body: detail, // 商品描述
  });

  // 调用支付宝 API 生成支付表单数据
  const result = alipaySdk.exec(
    'alipay.trade.page.pay',
    {}, // 其他选项
    { formData: formData },
  );

  // 处理 API 调用返回的 Promise 结果
  result.then((resp) => {
    // 将响应发送给客户端
    res.send({
      success: 'true',
      code: 200,
      result: resp
    });
  });

});

前端

let getlist = async()=>{
  let {data:{result}} = await axios.post('/api/payment',{
    orderId:'商品ID',
    price:'商品价格',
    datail:'商品描述'
})
  window.location.href = result    //接收后端result然后跳转支付宝支付页面
}

如果此功能想要上线或者在手机端看看效果,五和六过程就不需要配置

直接在开发平台使用系统默认密钥

点击系统默认密钥中查看,进去之后复制非JAVA语言中应用私钥和支付宝公钥

五、下载密钥工具

小程序文档 - 支付宝文档中心

六、密钥配置

安装完成之后打开软件,按照下面图所示点击生成密钥。

然后,复制公钥和私钥到沙箱页面。

七、将沙箱中公钥和支付宝公钥,以及支付宝网关地址和appID配置到后端alipayUtil.js文件中

八、效果

注意!如果后端应用公钥和支付宝公钥,配置不正确的话是跳转不到支付页面。
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个简单的Spring Boot和Vue.js应用程序中的支付沙箱支付代码示例: 在Spring Boot项目中: 1. 添加以下依赖: ``` <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.3.0.ALL</version> </dependency> ``` 2. 创建一个包含支付配置信息的类,例如: ``` @Configuration public class AlipayConfig { private String appId; private String privateKey; private String publicKey; private String notifyUrl; private String returnUrl; private String gatewayUrl; // getters and setters } ``` 3. 创建一个返回AlipayClient的方法: ``` @Bean public AlipayClient getAlipayClient() { return new DefaultAlipayClient( alipayConfig.getGatewayUrl(), alipayConfig.getAppId(), alipayConfig.getPrivateKey(), "json", "UTF-8", alipayConfig.getPublicKey(), "RSA2" ); } ``` 4. 在控制器中创建支付接口,例如: ``` @Autowired private AlipayClient alipayClient; @Autowired private AlipayConfig alipayConfig; @PostMapping("/pay") public String pay(@RequestParam String orderNo, @RequestParam String amount) throws AlipayApiException { AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); alipayRequest.setReturnUrl(alipayConfig.getReturnUrl()); alipayRequest.setNotifyUrl(alipayConfig.getNotifyUrl()); alipayRequest.setBizContent("{\"out_trade_no\":\"" + orderNo + "\"," + "\"total_amount\":\"" + amount + "\"," + "\"subject\":\"" + "测试订单" + "\"," + "\"body\":\"" + "测试订单" + "\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); String form = alipayClient.pageExecute(alipayRequest).getBody(); return form; } ``` 在Vue.js中: 1. 创建一个按钮来启动支付流程: ``` <template> <div> <button @click="pay">Pay Now</button> </div> </template> ``` 2. 在脚本部分中创建一个调用支付接口的方法: ``` <script> export default { methods: { pay() { axios.post('/api/pay', { orderNo: '123456', amount: '0.01' }) .then(response => { let form = response.data; document.write(form); // 打开支付页面 }) .catch(error => { console.log(error); }); } } } </script> ``` 请注意,以上示例只适用于测试环境,如果您想在生产环境中使用支付支付,您需要进行更多的测试和配置。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值