前端:juejin.cn/editor/draf…
后端
一 前置准备工作
-
进入支付宝沙箱环境:用自己的支付宝扫码登录 developers.alipay.com/dev/workspa…
-
登录后 填写信息
- 填写完信息,进入这个页面:点击设置,点击公钥 openhome.alipay.com/platform/ap…
- 下载工具:【支付宝开放平台开发助手】:opendocs.alipay.com/open/291/10…
- 打开下载好的工具,登录之后生成秘钥
- 将生成的秘钥中,复制公钥 到 步骤 3 的公钥输入框中,点击保存设置,关闭弹窗之后,刷新步骤3的页面,可以点击 【设置/查看】
二:沙箱api
-
后端安装:npm install alipay-sdk -S ,安装完成记得启动自己的后端项目
-
在后端目录中 新建一个js文件 作为对接支付的内容配置文件
// 引入sdk 必须这样引入 否则报错,官方文档那里没有写清楚 :https://www.yuque.com/chenqiu/alipay-node-sdk/config-sdk
const AlipaySdk = require('alipay-sdk').default;
// 前4个参数在这个页面获取 :https://openhome.alipay.com/platform/appDaily.htm
//最后一个在 下载的工具 生成秘钥获取:应用私钥
const alipaySdk = new AlipaySdk({
appId: '2021000118605577', // appid
signType: 'RSA2', // 签名算法
gateway: 'https://openapi.alipaydev.com/gateway.do',// 支付宝网关
alipayPublicKey: 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmineLOV9vEF0H39/tWVDes1ASQLUwN/z5UWflWvb/M+iDZpBPCEgPZjRbyBD7sBTApQSv2dvVM+7V5klaei+TlYmxgNd1zgWlJJkFECkQRCP3lvQmUfuJnEU/0Vx5GS/7xrQy7RaoBUGd+0P4HD48bx/DkTGQDZxWzb6C8KH7y5zRJKEP19IR9eF+7QcKIIBaclxRxHy5JqlRK2bC2ikr85RuTd9LPi2fX8eOHsPVQSutx50rrpEDQY7vJfNbGICeQUohK4c6SMltfDef2Lo4tR6u4FS7eM22mjkH7fRnDRiDD580lkMX73CDcQLYhs3RdtfnkF71jeBw3QxItPJGwIDAQAB', // 支付宝公钥
privateKey: 'MIIEpQIBAAKCAQEAhvEeA4nJ+IqT7puj8iRmezoCLbaMpaU+30AQmfqAdIadRqfJ1Js1dvwtL8MYKlJw6obKca2ZI0TxKQ0tu7PfAg2QJLoWAQ/RLWOXpvnd/jrQb4c4iNlsDPGFE+a6V36HWPkkRBM5odGSznDUCCBx9RQtr59Xps+HZvHk88CUiTb8ecM/vOpNxHYrjERVdWkXNDjzxi/CyLK3/qjvn16g54SD/COIaXTJOzm/lXl8ba3B3rEuzqWKq8riwxwLrrxbBXNjc0Cv4a5wIDeqAAuvjtHWqKwDhVaxKMTgAQzIIKg3XabfhyXrzuS6yRFMsLRQayfrY4y4cNofZKKYLT5MtwIDAQABAoIBAFmWfuyucA64Qhpp7mB2Vit9ibC7v4jBuooRSHRR4TJ7pLMh9ldWbBqAtac+CS8f6KNrtb/fFwpZXRp6C2DQvD/qrUYU3UL7M07FDgvnW8DLX1KMHbaNUrUNK+LYjeJEuKsTTUZ81Qhf0O2J7tsuXznsmaA9U74FjcmE0xIZSwQFK+v4Sd03veM2J0Md9ZSlSEaVoekuXUznGzWuFG2jVTAybJuMx2UudOfmq86IUv+6Qutu37uCvaHneAAP6UXSl9g3JY8LdBUcElnoCzdjeMCYfwixgCI5/ZC6VK+qRVcoYidqR9TeSDqKCk/S8t+Bywn2vOilKGmcHrdYrXI9n1ECgYEAyTVBYX9+LEBQOgN/l/4shjJ8GDuHW0xAsMmNObg3J0YIlT2LKVLdpbvVkojB9g5jp2K4zP7zKDaz6lsYHnukiWkE8fTgH+DzJPCjwkDWtqEZEfCYmEri4HyRl7tD0V1F4zrnpNCseugUzJahVlUk4tWr9rX3szIKYWQ9yh/DfQMCgYEAq7BFobkZpYp6lWxa1E2BGCsEsdhMLiLVjmYKk5pEcQ4cgYUCVNbM1TT6CSDircHnmz673gCWbiaAH919as51fUTvVUY3l/FKt9Kc5pXUIzVgwBlmpRcdOFDWuStNfoz8KAJWRLtbcH8myt8/AXyod0UaMuJbyhMFloNkY2w5gT0CgYEAomhVHMCO9GL5HsqiG+oywCNR3TF3oS7cbJZTYwqZoh66YNQrVrCnbdY+nqe6f8S/lWVvKzCCzqvQ71KWFkzQ04UsU6zHl5O4TtHaLLqvVPyVwtBEK3EOzgpebm3eYMj71109iuBQyGg6GaVgFtJlEp9Lzbi1djPnAxOpeFPJNEcCgYEAgJQVweU3ANPxtCAe8epNaQUmke5UNyUdXHStLReWdDjGPnWXZmQrqOzw6I85VDnos0pLNhqojjvFLpgZCjkuoi9TMkDQ97jcZUiU+tdwtSGPoK4lQjRKTNe1x51XfxQk7+24H+dUtq5zJfIFZJ6wKAqXcU42weJ3B97E+vSdKF0CgYEAtq4vKcPMD/jRY9iKUQOno7jchp3hxeo4F/G2+yMJCHemuhMyVIIeotxgGs0zV0qnaB/6d/N5mjq8/UfTzKlKHzzP7tVZlYw9HAsYwXW0+ydb3HNRlNGm6aeaAM0HQpSbCZ7tpol/EOOohSMX8Q3jKq9W6f7EhLtKsf+OikPHRlg=' // 应用私钥
});
module.exports = alipaySdk;
5. 在后端写接口文件中routes的index.js 引入 步骤4创建的配置文件 和 另一个模块
// 引入支付宝配置文件
const alipaySdk = require('../sql/alipay');
const AlipayFormData = require('alipay-sdk/lib/form').default;
// 对接支付宝接口/api/aliPay
router.post('/api/aliPay', function (req, res, next) {
// 接收前端传过来的参数
let {
totalPrice,
orderId,
shop_title
} = req.body
//开始对接支付宝:返回支付链接(PC 支付接口 参考) https://www.yuque.com/chenqiu/alipay-node-sdk/page_api
const formData = new AlipayFormData();
// 调用 setMethod 并传入 get,会返回可以跳转到支付页面的 url
formData.setMethod('get');
// 支付时信息
formData.addField('bizContent', {
outTradeNo: orderId, // 订单号
productCode: 'FAST_INSTANT_TRADE_PAY', // 写死的
totalAmount: totalPrice, // 价格
subject: shop_title, // 商品名称
});
// 支付成功或失败跳转的链接 : 自己在components 的cart创建了一个 Payment.vue 组件
formData.addField('returnUrl', 'http://localhost:8080/payment');
// 返回promise
const result = alipaySdk.exec(
'alipay.trade.page.pay', {}, {
formData: formData
},
);
// 对接支付宝成功,支付宝放回的url
result.then(resp => {
res.send({
data: {
code: 200,
success: true,
msg: '支付中',
paymentUrl: resp
}
})
})
})