首页 > 编程语言 >支付宝沙箱的使用Node.js

支付宝沙箱的使用Node.js

时间:2022-09-24 18:35:29浏览次数:52  
标签:Node 支付宝 const alipay formData js 沙箱 sdk

  1. 官网
    https://opendocs.alipay.com/common/02kkv7
  2. 进入沙箱
    https://open.alipay.com/develop/sandbox/app
  3. 下载支付宝开放平台开发助手
  4. 生成密钥
    image
  5. 将密钥配置
    image
  6. 下载安装sdk
    cnpm install alipay-sdk -S
  7. 新建支付宝对接js文件
//引入sdk
const AlipaySdk = require('alipay-sdk').default;
const alipaySdk = new AlipaySdk({
  //APPID
  appId: '2021*************',
  //签名算法
  signType:'RSA2',
  //支付宝公钥
  alipayPublicKey:'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk46MSrCR6qGbiM33h1PuM8qGSng14sE9DRHcaRNpNWKTHmi72GvxHFuB6Go9ckullCLCi9kgJY0JWAr0DWTW7svjLH2xCv493GzHN9YVBl1xfN7VcOrt41smcAFjSJ3Hh6gpw7L1ZK24qStZHB1B0/2/XnV/p5iipDfXPDBJ5oOAc4RSYu+7A9NAAPQx/jEwdT6VrgpO4vpKuqVGGlGMS+briNWa4FEgzazh9LnvIybazln/mWukESG0U5SeM14jmHOkmcmPdstI/eCJVrUIMQlRDAkq1IznxR***************************************',
  //应用私钥
  privateKey: 'MIIEowIBAAKCAQEAiJ+d+HQmrfmOo3ZcRfCXe0BEVf8NeBhJVs/FbDrhY5PzumPA2qsrTbHDktV5GXiP5GRdQq9XAChyeQfILui5c3hJTdg///Lb+H+vr1Pmlm9puDUrj6Gk3Bo5eOnh61s9qqx9gKETosuIqo93U0+5fgGa9iuQzrO3tlt/P16YtZ63CUiob5sF3aF/682izwSm0QtGq/0EGO40wee/So0Q+yvpJYMDdJzCWKFQuGwTACtnAKmTuzrt1UwNmxv7PSoOvA59witny4ZqQvV9lo8jm615nuuQLvI/7XCigNH8iCTl5+uAHcm5xqZfB2A2LYQAr1ycJm1iio34j8SFvIjjoQIDAQABAoIBACHUhGVVPY6u0OchE9AttxTJ4SH6OfeW6/IXGKeoHM9vf1aUBNkgsWRXtDnTqlzoQZkoUP+GM2DSoyXdC3CyJ9mz21LvTUmvdVCfLX2YpOxzQhZe9B5oxE3MIJcUMuD4gtiURa9oM1iIVZsGU2HJyACvnRN/zieg0MjS9ztVzTKLcTWwLEBVQOzzP6+E3HMS6ZVeFN1r+bB+48nxlfQ7JliHpwTDridIGfep99g3IMpyMXLZHAm4pLCEI+UlQ+535jq2B4WgDM+qTPjBRiljKeXQJ3pHd/jIS8YvI4RlyAl6grzn/zChnGZwwxNWtxJ2B33WJT8GHHOCQAf481R/55ECgYEA0uQj66uSn0fJjXnJPB9YPeT5wtqKW1dK1JWOajYnzsDZFedIBP+KN52b3hg6urWFdEuLzJ5+ReX7kPGyhB3maCLiCpsuHjmD0igIhpnppFPKE2Q9ZXmn1IuhpXAoT3nYaGOyQp66BEt+ro/9gL7dK6sFgaLtBCTfjoLeYcOPTgcCgYEApdjFC8KOyR0xKVzOg3YSj0h0Cw0QnVPlkF5+DwJUz9TDRycXzQCt0DVPycvwFTDK/WsPB56mmIUaRuEsvs8Q1/cQRYkuV2TYDd2+2u2bid3Ij6XnvgtrSUS8eSDsHULCK36gqTMTShUqcRyOJauGzyaUAqSjtqZRKJRsjmaX1xcCgYAuMI21hmScwkpg1DXBF1RqagZSKS94hgv7t63zkVzyqcZiR7+8aIPLXpfO8xuZ3TwXlpxN+sDJam/I9UcWLL5UPJ+plwdo00wN8Xq8kGVd+oQd7yyLVzPtF5AV/hS2I4fEhWF7uewgGLDsZtktI6CpedHA7QBgkfrs6bjvTLfMbQKBgFnLkITZhq3lnGSk1zvehhYGSK5jGIfWkQkl4GMIBBuzOzgfNofMwk9lThoYzZjrnjyv5qddgx45kwylhrCZNKl6H9lGeUzgUQrQ8TFgTULMTndYgK0pSaGWEeYTqUP+jVs3aI20FdGavCwaJezHfmpSnPkBY5LVYkPyeQRxD+1pAoGBAJrOQdb0rkwsmIQiaiDb+aU+nCcZa/cjFX5hyYBcddd2O3LPUqdRwxExOl48I7M+s8GhCmRi8B1jLjQmncFFzY/JpxK+iGF+yhvCVAL+Yul6GJE***************************************************************', // 传入私钥
  //支付宝网关
  gateway: "https://openapi.alipaydev.com/gateway.do" // 沙箱环境的请求网关与正式环境不一样,需要在此更改,如果是使用正式环境则去掉此处的设置
});

module.exports = alipaySdk
  1. 项目中引入
//引入支付宝配置文件
const alipaySdk = require('../db/alipay.js');
const AlipayFormData = require('alipay-sdk/lib/form').default;
  1. 接口中使用
//发起支付
router.post('/api/payment',function(req,res,next){

  //订单号
  let id = req.body.id || JSON.parse(Object.keys(req.body)).id;
  //商品总价
  let price 
  //购买商品的名称
  let name

  //开始对接支付宝API
  const formData = new AlipayFormData()
  //调用 setMethod 并传入 get , 会返回可以跳转到支付页面的url
  formData.setMethod('get');
  //支付时信息


formData.addField('bizContent', {
  //订单号
  outTradeNo: id,
  //写死的
  productCode: 'FAST_INSTANT_TRADE_PAY',
  //价格
  totalAmount: price,
  //商品名称
  subject: name,
  //商品详情
  body: '商品详情',
});

  // 当支付完成后,支付宝主动向我们的服务器发送回调的地址
  formData.addField('notifyUrl', 'http://www.com/notify'); 
  // 当支付完成后,当前页面跳转的地址
formData.addField('returnUrl', 'http://localhost:8080/payment');

  //返回一个promise
  const result = await alipaySdk.exec(
    'alipay.trade.page.pay',
    {},
    { formData: formData },
  );
  //对接支付宝成功,支付宝返回的数据
  result.then(resp => {
    res.send({
      data:{
        code:200,
        success:true,
        msg:'支付中',
        paymentUrl:resp
      }
    })
  })

})
  1. 注意:一定要使用无痕浏览,否则失败
  2. 使用沙箱提供账号去支付

标签:Node,支付宝,const,alipay,formData,js,沙箱,sdk
From: https://www.cnblogs.com/gyh907368/p/16726189.html

相关文章

  • 命令行传递 JSON 参数执行 Python 脚本
    先定义一个简单的Python脚本greeter.py。#greeter.pyimportsysimportjsonparam=sys.argv[1]user_info=json.loads(param)print(f'Welcome,{user_info["......
  • 线程和进程的关系?js为什么是单线程的?
    一、线程是包含在进程中的,线程其实就是一个指令序列,如果加上计算机分配给它的资源(如内存等)之后就是一个进程。二、可以设想一个场景,js适用于多线程,如果几个线程同时对一个......
  • [JSOI2012]玄武密码
    题目对于每一段文字tt,求出其最长的前缀pp,满足pp是ss的子串,其中ss是字串。题解我们可以用ac自动机来做,先把所有字串建个ac自动机,然后用母串在上面跑,把那些点都进行......
  • 微信小程序JS
    微信小程序之操作三元运算符class   <view class="chejianwx:if='{{item.is_check==1?'hover':''}}'">1111</view> <van-cell-group><van-celltit......
  • 解决 WebSocketClient.js?5586:16 WebSocket connection to 'ws://192.168.13.25:8080
    控制台报错: vue.config.jsVue的配置文件const{defineConfig}=require('@vue/cli-service')module.exports=defineConfig({devServer:{host:'0.0.0......
  • Node.js 工具库 BlueBird 的一些例子:map,each 和 some
    map我是Array.map()函数的模拟,但用于异步任务。我可以接受一个并发参数并返回一个Promise,当所有任务完成后该Promise将被resolved。我的代码更短,特别是当用户需要......
  • node-sass安装报错及其解决方案
    一、下载依赖报错这里报错了也就没后面的剧情了,就像电视剧刚开局主角就嗝屁了,看看执行npmi的时候报错类容:二、解决方案1、下载源在国外,更换中国镜像源,删除package.js......
  • Service模块读取AppSettings.json
    创建对应的映射类:publicclassAppSettings{//publicConnectionstringsConnectionStrings{get;set;}publicstringPurchaseUrl{get;set;}pub......
  • Pure JS Coding Challenge01 — 双色球彩票
    PureJSCodingChallenge01—双色球彩票功能说明:双色球由33个红球和16个蓝球组成,一记双色球包括6个不重复的红球和1个蓝球。请阅读给定的页面和代码,完成randomFn函数......
  • python-json
    pythonjson处理json写入json文件点击查看代码importjsonjson_data={"name":"Tom","age":18,"score":{"math":98,"chines......