使用支付宝沙盒 nodejs

1、 进入官网
1)https://open.alipay.com/
2)登录
3)进入控制台(右上角)
4)点击“沙箱”(滑动到最下面,左边第一个就是了)

2、下载秘钥转换工具(开发者助手)
https://render.alipay.com/p/f/fd-jwq8nu2a/pages/home/index.html

在这里插入图片描述
3、生成密钥

在这里插入图片描述

注意,此时得到的应用私钥的格式是不对的,应用格式转换转换格式

在这里插入图片描述

4、通过3中的应用公钥得到支付宝公钥
在这里插入图片描述
在这里插入图片描述

5、封装一下相应信息得到alipay.js

const AlipaySdk = require("alipay-sdk").default;

const alipaySdk = new AlipaySdk({
  appId: "2024353",
  //签名算法
  gateway: "https://openapi.alipaydev.com/gateway.do",
  //支付宝公钥
  alipayPublicKey:
    "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoAFwizfYgdPrPgpQdLNeGLLwP1CQtxi4D9PM4RBgatz9K/8Mmt387vQDHN5hAB",
  //应用私钥
  privateKey:
    "MIIEpAIBAAKCAQEAtML5jyueWwDqHjQ6qUgvQV+vHCfjdsPS14oJzRXZmShbep641okONl8Y68mqDKWVT7RVASMmFjFZ0SOe4BehU2uVlT0iYM+LYl/qWMS0xC8s2rvircJg==",
});
module.exports = alipaySdk;

6、接口

const alipaySdk=require('../database/alipay.js');//导入5中的js
const AlipayFormData=require('alipay-sdk/lib/form').default;//cnpm i alipay-sdk

  //对接支付宝API
router.post("/api/payment", function (req, res, next) {
  //订单信息
  let orderId = req.body.orderId;
  let price = req.body.price;
  let name = req.body.name;

  //对接支付宝API
  const formData = new AlipayFormData();
  //调用setMethod 并传入get,会返回可以跳转到支付页面的url,
  formData.setMethod("get");
  //支付时信息
  const bizContent = {
    out_trade_no: orderId,
    product_code: "FAST_INSTANT_TRADE_PAY",
    total_amount: price,
    subject: name,
    body: "商品详情",
  };
  formData.addField("bizContent", bizContent);

  //支付成功或失败的链接
  formData.addField("returnUrl", "http://localhost:8080/payment");

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

});

7、用无痕模式请求接口
8、结果
在这里插入图片描述
9、跳转返回地址paymentUrl
登录用沙箱的买家账户就行了
在这里插入图片描述

在这里插入图片描述

错误

1、

[Warning] page interface through formdata is deprecated. Use sdk.pageExec instead
caught error! Error: error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag。
可能:
1)应用私钥没有转换格式
2)支付宝公钥/应用私钥等信息错了

2、沙箱测试地址502

(ノ`Д)ノ不知道在哪里看到的这个沙箱周日12-周一12点维护中不能使用。可能是这个原因或者其它支付宝服务器的问题吧。

3、沙箱测试地址:系统有点忙~一会儿再试

还是这个沙箱的问题,隔亿会儿再来试试

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值