使用支付宝沙盒 nodejs

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

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

使用支付宝沙盒 nodejs_第1张图片
3、生成密钥

使用支付宝沙盒 nodejs_第2张图片

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

使用支付宝沙盒 nodejs_第3张图片

4、通过3中的应用公钥得到支付宝公钥
使用支付宝沙盒 nodejs_第4张图片
使用支付宝沙盒 nodejs_第5张图片

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、结果
使用支付宝沙盒 nodejs_第6张图片
9、跳转返回地址paymentUrl
登录用沙箱的买家账户就行了
使用支付宝沙盒 nodejs_第7张图片

使用支付宝沙盒 nodejs_第8张图片

错误

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、沙箱测试地址:系统有点忙~一会儿再试

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

你可能感兴趣的:(日常,前端,node.js)