我们正在尝试在我的项目中在网络上实现 ApplePay。根据苹果文档,我从 applejs api onvalidatemerchant 函数获取验证 url,并且我将此验证 url 传递给节点 js 路由以获取苹果支付会话。这是我为获得苹果付款会话而遵循的文档(https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_js_api/requesting_an_apple_pay_payment_session)。
下面是我为获取苹果支付会话而编写的自定义节点 js 代码。传递给此节点 js 路由代码的验证 url ie)req.query.url 是https://apple-pay-gateway-cert.apple.com/paymentservices/startSession。
app.get('/getAppleSession2', function (req, res) {
var endpointURL = req.query.url;
var cert_path = './apple_pay.pem';
var cert = fs.readFileSync(cert_path);
console.log('endpointURL is ' + endpointURL);
console.log('cert_path is ' + cert_path);
console.log('cert is'+cert);
const options = {
url: endpointURL,
method: 'post',
cert: cert,
key: cert,
body: {
merchantIdentifier: "xxxxx.xxxxx.xxxxx.xxxxx.xxxxx",
displayName: "xxxxx.xxxxx.xxxxx.xxxxx.xxxxx",
initiative: "web",
initiativeContext: "xxxxx.xxxx.xxxx.xxxx.com"
},
json: true,
};
//console.log("body" + body);
request(options, function (error, response, body) {
console.log('body of getAppleSession' + body);
console.log('Response from getAppleSession' + response);
console.error('Error object ' + error);
res.send(body);
});
});
但这是我对这条路线的回应
body of getAppleSession undefined
Response from getAppleSession undefined
Error object Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
不知道这里有什么问题,因为我按照苹果的文档这样做。我怀疑它是否与我如何将证书(商家身份证书)传递给这个 nodejs 路由有关。我通过从 Apple Development 门户下载 .cer 格式的商家身份证书来生成证书,并通过在我的 mac 中的 KeyChain 访问中导入 .cer 文件并将其导出到 .pem 中,将我从 Apple 门户下载的证书转换为 .pem 格式钥匙串访问。然后我将 .pem 文件('./apple_pay.pem')放在我的节点 js 路由的同一目录中。我如何生成证书或在我的节点 js 路由中传递它们有什么问题吗?
不知道这里有什么问题。任何代码示例或指针都会非常有帮助。