ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用 node 调用支付宝支付接口

2021-11-28 21:58:21  阅读:289  来源: 互联网

标签:node 支付宝 const alipay formData express 接口 sdk


这篇文章中,我将简单介绍下在 node 中使用支付宝沙箱。

文章目录

1、起步

  1. 先注册支付宝开放平台账号:https://open.alipay.com/
  2. 登陆成功后,点击进入管理中心
    在这里插入图片描述
  3. 进入成功后,选择控制台选项,然后点击研发服务进入。
    在这里插入图片描述
  4. 在这个沙箱应用界面中等待着,待会再过来操作
    在这里插入图片描述

2、生成密钥

  1. 这时候还需要下载一个生成支付宝支付密钥的应用,下载地址:https://opendocs.alipay.com/common/02kipl,这里面有 window 和 mac 两个版本,按照自己电脑自行下载安装(直接点下一步就好,选择一个要安装的文件夹)
    在这里插入图片描述

  2. 安装好了之后来到下面这个页面:
    在这里插入图片描述

  3. 选择最常用的 RSA2 加密算法,这个是麻省理工发明的算法,几十年来都没有人突破过。然后再这下面有两个选择:PKCS8(JAVA适用)PKCS1(非JAVA适用), 因为我要用 node 演示,没用到 Java,并且我没有安装 Java 环境,这里选择第二个 PKCS1(非JAVA适用)。
    在这里插入图片描述

  4. 点击生成密钥,就会生成公钥和私钥。
    在这里插入图片描述

  5. 然后点击复制公钥的按钮,回到沙箱环境的界面,在开发信息中选择自定义密钥的选项。然后点击RSA2密钥(推荐) 后面的按钮。
    在这里插入图片描述在这里插入图片描述

  6. 在弹框加签管理页面中,选择公钥选项,将刚才在生成密钥的应用中的公钥粘贴进下面的输入框,然后点击保存设置。
    在这里插入图片描述在这里插入图片描述

  7. 添加密钥就已经完成了。

3、初始化项目

这里先给各位支付宝官方给的文档:https://www.yuque.com/chenqiu/alipay-node-sdk/config-sdk,可以保存下,以后要学习的时候可以看看。

  1. 建立一个新的文件夹,用编辑器打开
    在这里插入图片描述
  2. 首先初始化整个项目,在文件夹的根目录下打开控制面板,输入 npm init -y,初始化整个文件夹。在这里插入图片描述
  3. 然后要下载一个很重要的模块,就是支付宝支付的 sdk,输入命令:npm install alipay-sdk -S在这里插入图片描述
  4. 因为我要待会编写的 node 会用到 express 框架,所以再安装一下 express 框架:npm install express -S
    在这里插入图片描述

4、代码编写

这里我将会把完整的代码贴出来,每一条要用到的信息我会做说明的

//引入 alipay sdk 模块
const AliPaySdk = require('alipay-sdk').default

//引入 alibapay form 模块
const AlipayForm = require('alipay-sdk/lib/form').default

//引入 express 框架
const express = require('express')

// 实例化框架
const app = express()

// 引入框架的中间件
const router = express.Router()

// 挂载
app.use('/api', router)

//初始化alipay 配置
const alipaySdk = new AliPaySdk({
    appId: '', // 自己的id
    gateway:"https://openapi.alipaydev.com/gateway.do", // 这是支付宝官网沙箱测试网关
    privateKey: "", // 应用私钥
    alipayPublicKey: "" // 支付宝公钥
})
 
// 服务器发送请求
router.get('/pay', async (req, res) => {
  // 实例化 AlipayForm
    const formData = new AlipayForm()

    // 下面是官网的测试代码
    formData.setMethod('get')
    formData.addField('returnUrl', 'http://www.baidu.com'); //支付成功的回调
    formData.addField('bizContent', {
        outTradeNo: Math.random(), // 订单号
        productCode: 'FAST_INSTANT_TRADE_PAY', // 产品码
        totalAmount: '499999', // 商品金额
        subject: '凉爽爽爽爽爽爽爽爽爽的知识', // 出售商品的标题
        body: '本人的知识' // 出售商品的内容
    });
  
    //执行结果
    const reult = await alipaySdk.exec('alipay.trade.page.pay',{},{ formData: formData })

    // 返回一个 json 格式的数据
    res.json({
      code: reult
    })
})

// 开启服务器进行监听
app.listen(8080, () => {
  console.log('success, http://localhost:8080/api/pay')
})

我会一步一步来介绍的

  1. 首先就是引入几个重要的模块

    //引入 alipay sdk 模块
    const AliPaySdk = require('alipay-sdk').default
    
    //引入 alibapay form 模块
    const AlipayForm = require('alipay-sdk/lib/form').default
    
    //引入 express 框架
    const express = require('express')
    
    // 实例化框架
    const app = express()
    
    // 引入框架的中间件
    const router = express.Router()
    
    // 挂载
    app.use('/api', router)
    

    ① 引入的 AliPaySdkAlipayForm 都是我们安装支付宝 sdk 模块中的东西,注意每个模块的后面要加入 .default 这个属性
    ② 后面四行代码,都是我引入的 express 框架的东西,看不明白也无所谓,放在这里就行

  2. 下面的配置比较重要,这就是要进行支付宝支付的初始化配置。注意这里面的关键字都不能自己改动,后面要输入的值我会解释的。

    //初始化alipay 配置
    const alipaySdk = new AliPaySdk({
    	appId: '', // 自己的id
    	gateway:"https://openapi.alipaydev.com/gateway.do", // 这是支付宝官网沙箱测试网关
    	privateKey: "", // 应用私钥
    	alipayPublicKey: "" // 支付宝公钥
    })
    

    appId: 这个就是支付宝开发平台中的 id,把这个 id 复制进代码的 appId 中。在这里插入图片描述
    gateway: 这个就是支付宝官方的一个支付测试网官。
    privateKey: 这是私钥,打开我们之前生成密钥的应用,将私钥复制下来,粘贴进代码的 privateKey 中。在这里插入图片描述
    alipayPublicKey: 支付宝公钥,打开我们之前在支付宝开放平台中设置的公钥,然后将公钥复制下来,贴进代码的 alipayPublicKey 中。在这里插入图片描述在这里插入图片描述

  3. 下面就是对支付宝支付发送的请求了,这一段代码在官方文档中有编写:https://www.yuque.com/chenqiu/alipay-node-sdk/page_api

    // 服务器发送请求
    router.get('/pay', async (req, res) => {
    
    	// 实例化 AlipayForm
    	const formData = new AlipayForm()
    
    	// 下面是官网的测试代码
    	formData.setMethod('get')
    	formData.addField('returnUrl', 'http://www.baidu.com'); //支付成功的回调
    	formData.addField('bizContent', {
       		outTradeNo: Math.random(), // 订单号
       		productCode: 'FAST_INSTANT_TRADE_PAY', // 产品码
        	totalAmount: '9.89', // 商品金额
        	subject: '良辰的商品~', // 出售商品的标题
        	body: '衣服甩卖' // 出售商品的内容
    	});
    
      	//执行结果
     	const reult = await alipaySdk.exec('alipay.trade.page.pay',{},{ formData: formData })
    
     	// 返回一个 json 格式的数据
    	res.json({
    		code: reult
     	})
    })
    

    这里面就是固定的代码了,不需要改动代码,这里我说两点:
    ①代码 formData.addField('returnUrl', 'http://www.baidu.com') 中,第二个参数,是支付商品成功后,将要跳转到的网站。
    ② 代码 outTradeNo: Math.random(),这个是用来编写订单号的,每一个商品的订单号都是唯一的,当支付完这个商品后,订单号也不能再用了,所以这里我是用一个 Math.random,每次生成一个是随机数

5、支付商品

  1. 开启服务器 node pay.js
    在这里插入图片描述

  2. 打开开启的服务器,然后打开的页面如下,复制 code 后面的一串地址,然后在页面中打开
    在这里插入图片描述

  3. 注意,如果你是在当前浏览器中打开的话,会出现下面的页面:
    在这里插入图片描述

  4. 这是因为在当前浏览器打开不够安全,这个时候复制这个页面的地址,新开启一个浏览器(我这里使用 Edge 浏览器打开),再次打开这个地址
    在这里插入图片描述

  5. 登录支付宝的账户名和密码,账户名和密码在开放平台的沙箱账号中, 因为这里我代码中使用的是支付的接口,即我们是买家,所以找到买家信息,将账号和密码粘贴进浏览器的输入框中。在这里插入图片描述在这里插入图片描述

  6. 之后购买商品就行了。在这里插入图片描述

  7. 账号钱不够的话就去沙盒账号中充值,一次最多充 999999.99
    在这里插入图片描述在这里插入图片描述

  8. 当然了这里面都是测试用的钱,不可能取出来的,可以体验下花钱的快感。

6、结束

       完结散花

标签:node,支付宝,const,alipay,formData,express,接口,sdk
来源: https://blog.csdn.net/qq_45770253/article/details/121597038

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有