1

一年前,我们在我们的项目中在网络上实现了 ApplePay,一切都运行良好。但是现在不稳定,有时第三次尝试支付可以成功。我们在请求 POST https://apple-pay-gateway.apple.com/paymentservices/startSession时遇到 ECONNRESET 错误,并在客户端出现错误消息“付款未完成”

Error: read ECONNRESET at TLSWrap.onStreamRead (internal/stream_base_commons.js:209:20) {
errno: -104,
code: 'ECONNRESET',
config: {
    url: 'https://apple-pay-gateway.apple.com/paymentservices/startSession',
    method: 'post',
    data: '{"merchantIdentifier":"merchant.com.xxxxxxxx","displayName":"xxxxxxxxxx","initiative":"web","initiativeContext":"xxxxxxxx.xxx","domainName":"xxxxxxxx.xxx"}',
    headers: {
        Accept: 'application/json, text/plain, */*',
            'Content-Type': 'application/json',
            'User-Agent': 'axios/0.19.2',
            'Content-Length': 191
    }
},
...
response: undefined,
isAxiosError: true,

客户端代码:

applePaySession.onvalidatemerchant = async (event) => {
  try {
    const data = {
      url: event.validationURL,
      method: 'post',
      body: {
        merchantIdentifier,
        displayName,
        initiative: "web",
        initiativeContext: window.location.hostname
      },
      json: true,
    }
    const merchantSession = await this.$axios.$post('/apple_pay_session', data);
    if (merchantSession && merchantSession.merchantSessionIdentifier) {
      applePaySession.completeMerchantValidation(merchantSession)
    } else {
      applePaySession.abort();
    }
  } catch (error) {
    logReqError(error)
    applePaySession.abort();
  }
};

服务器端:

    const httpsAgent = new https.Agent({
        rejectUnauthorized: false,
        keepAlive: true,
        cert: fs.readFileSync(`uploads/apple_pay/${id}/certificate.pem`),
        key: fs.readFileSync(`uploads/apple_pay/${id}/private.key`)
    });

    const sessionRes = await axios({
        url: request.body.url,
        method: request.body.method.toLowerCase(),
        data: request.body.body,
        headers: {'Content-Type': 'application/json'}, httpsAgent
    })

我们检查了商户域的状态 - 已验证,Apple Pay 支付处理证书和 Apple Pay 商户身份证书有效。我还使用官方文档以及其他来源检查了项目代码。我希望有人遇到过类似的问题。无论如何,任何代码示例或猜测都会有所帮助

4

0 回答 0