苹果内购的凭证验证和解密
最近在搞苹果内购,是使用微信提供的Dount提供的小程序转成APP。苹果内购使用的也是他们封装好的js接口,然后后端在解析我传递的支付凭证的时候他一直解析不成功然后我坚信自己的传递参数没有问题,我就自己使用node写了一个本地服务去验证我的支付凭证,所以就有了这个文章。
服务器端代码 (server.mjs
)
导入必要模块
import express from 'express';
import bodyParser from 'body-parser';
import cors from 'cors';
import fetch from 'node-fetch';
express
: 用于创建一个服务器。bodyParser
: 用于解析JSON格式的请求体。cors
: 用于解决跨域问题。fetch
: 用于发送HTTP请求到Apple的验证服务器。
创建Express应用并配置中间件
const app = express();
const port = 3000;
app.use(cors());
app.use(bodyParser.json());
- 创建一个Express应用实例。
- 设置应用端口为3000。
- 使用
cors
中间件以允许跨域请求。 - 使用
bodyParser
中间件以解析JSON格式的请求体。
定义路由以处理验证请求
app.post('/verifyReceipt', async (req, res) => {
const {
receiptData, password } = req.body;
try {
const response = await fetch('https://sandbox.itunes.apple.com/verifyReceipt', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
'receipt-data': receiptData,
'password': password
})
});
const result = await response.json();
res.json(result);
} catch (error) {
res.status(500).json({
error: error.message });
}
});
- 定义一个POST路由
/verifyReceipt
来处理客户端发送的验证请求。 - 从请求体中提取
receiptData
和password
。