将 Moneris Checkout 与 JavaScript 集成:处理 JSON 响应问题

将 Moneris Checkout 与 JavaScript 集成:处理 JSON 响应问题
将 Moneris Checkout 与 JavaScript 集成:处理 JSON 响应问题

Moneris Checkout 的无缝集成:JSON 响应故障排除

Moneris Checkout 是一种常用的支付网关系统,可帮助企业加快在线交易。但是,将其集成到您的网站可能会很困难,尤其是当 JSON 调用未返回所需数据(例如票号)时。此类错误会阻碍交易的正常进行,因此调试是工程师的一项必备技能。

当用 Moneris 替换过时的托管支付页面 (HPP) 并使用其 JavaScript 界面时,了解如何正确配置结帐至关重要。为了向您的客户提供无缝体验,请确保页面发布交易详细信息并检索准确的响应。

许多开发人员在遵循 Moneris 的集成文档时遇到困难。复杂性源于处理回调、上传交易数据和实时读取结果,所有这些都是成功集成所必需的。当您开始集成之旅时,拥有清晰且记录良好的方法可能会有所帮助。

在这篇文章中,我们将了解如何解决 Moneris 集成中缺少票号的问题。如果您查看必要的代码片段和故障排除技术,您将更好地准备处理此问题。

命令 使用示例
monerisCheckout() 这是 Moneris JavaScript SDK 中的构造函数。它启动结帐过程。此脚本生成 Moneris 结帐小部件的新实例,它允许您将支付网关嵌入到您的网站上。
setMode() 指定 Moneris 交易的环境。在此示例中,“qa”指的是一个测试环境,您可以在其中安全地模拟交易,而无需处理实际付款。这对于在不实际对卡进行充电的情况下测试集成是必要的。
setCheckoutDiv() 此命令将 Moneris 签出与指定的 HTML 容器 (div) 相关联。通过提供 ID“monerisCheckout”,付款小部件将显示在此 div 中,允许您选择表单在页面上的显示位置。
setCallback() 在结帐过程中,为特定事件分配功能。在这种情况下,自定义函数“myPageLoad”处理事件“page_loaded”,允许开发人员在结帐页面完全加载时运行代码。
startCheckout() 开始 Moneris 结账流程。调用时,该函数通过呈现支付表单并将其连接到后端系统来处理交易来启动支付流程。
app.post() 这是一个处理 POST 请求的 Express.js 路由处理程序。该脚本在交易完成后从 Moneris 后端接收付款收据,从而允许进行其他处理,例如保留付款数据或发出确认。
bodyParser.json() Express 中的中间件函数,用于解析传入的 JSON 请求。在这种情况下尤其重要,因为 Moneris 以 JSON 格式传输交易数据。该命令保证请求正文被正确处理以供服务器端处理。
chai.request() 此命令是 Chai HTTP 测试包的一部分,用于在测试用例中发送 HTTP 请求。它在单元测试期间将 POST 请求复制到 Moneris 支付 API,允许开发人员查看后端如何处理成功和失败的交易。
expect() Chai 库中的核心断言函数。在单元测试的上下文中,它确定是否满足特定条件。它用于确保支付端点返回的响应状态和消息与预期结果匹配。

了解 Moneris Checkout 集成和脚本工作流程

所包含的前端脚本通过 JavaScript 将 Moneris Checkout 系统集成到网站中。主要功能从通过以下方式建立 Moneris 结账实例开始: monerisCheckout() 构造函数。该实例充当您的网站和 Moneris 支付处理服务之间的接口。命令 设置模式() 指定环境是否应设置为“qa”以进行测试,或“live”以进行生产,这在开发阶段至关重要。通过选择“qa”,开发人员可以在不产生实际成本的情况下复制交易,从而创建一个安全的测试场。

结账实例构建完成后, 设置CheckoutDiv() 命令将 Moneris 结帐表单连接到特定的 HTML div。这是付款表格将显示在页面上的位置。这保证了付款表格的视觉描述显示在网站的特定区域,使整个过程无缝并集成到您现有的设计中。在我们的示例中,Moneris 表单被插入到 ID 为“monerisCheckout”的 div 中。该 div 用作 Moneris 动态加载内容的占位符,其中包括客户端付款输入字段和按钮。

然后脚本执行 设置回调(),允许开发人员为结账流程配置特定的事件处理。具体来说,“page_loaded”的回调附加到该函数 我的页面加载,保证当页面完全加载时,可以发生额外的自定义操作(例如记录数据)。此功能允许灵活地处理用户体验。记录内容 前任 对象内 myPageLoad() 通过提供 Moneris 返回数据的实时反馈来协助开发人员进行调试。

最后,后端脚本处理服务器端支付数据的接收。使用 Express.js 在 Node.js 中,路由 应用程序.post() 被定义为在交易完成后接收来自 Moneris 的 POST 请求。该端点处理返回的 JSON,检查 响应代码 查看是否支付成功。如果成功,交易数据(例如票号)可以被记录或输入到数据库中。通过返回合适的状态码和消息,后端可以与前端顺利连接,向用户提供关键反馈,例如事务是否成功或失败。

Moneris Checkout 与 JavaScript 集成:前端和后端解决方案

前端解决方案利用 JavaScript 合并 Moneris Checkout 表单并处理交易响应。

// Front-end integration script
// This script embeds the Moneris checkout and processes the transaction result

<script src="https://gatewayt.moneris.com/chktv2/js/chkt_v2.00.js"></script>
<div id="monerisCheckout"></div>
<script>
var myCheckout = new monerisCheckout();
myCheckout.setMode("qa"); // Set environment to QA
myCheckout.setCheckoutDiv("monerisCheckout"); // Define div for checkout
// Add callback for when the page is fully loaded
myCheckout.setCallback("page_loaded", myPageLoad);
// Start the checkout process
myCheckout.startCheckout("");

// Function that gets triggered when the page is loaded
function myPageLoad(ex) {
    console.log("Checkout page loaded", ex);
}

// Function to handle the receipt after the payment
function myPaymentReceipt(ex) {
    if(ex.response_code === '00') {
        alert("Transaction Successful: " + ex.ticket);
    } else {
        alert("Transaction Failed: " + ex.message);
    }
}
</script>

使用 Node.js 和 Express 的后端解决方案:处理支付数据

利用 Node.js 和 Express 管理 Moneris 的后支付数据的后端解决方案

// Node.js backend script for processing payment receipt data
// This backend handles the response from Moneris and processes it for database storage

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// Endpoint to receive the payment result
app.post('/payment-receipt', (req, res) => {
    const paymentData = req.body;

    if (paymentData.response_code === '00') {
        console.log('Payment successful:', paymentData.ticket);
        // Insert into database or further process the payment
        res.status(200).send('Payment success');
    } else {
        console.error('Payment failed:', paymentData.message);
        res.status(400).send('Payment failed');
    }
});

app.listen(3000, () => {
    console.log('Server running on port 3000');
});

使用 Mocha 和 Chai 对后端支付处理进行单元测试

使用 Mocha 和 Chai 进行后端单元测试以验证资金处理功能

// Unit test for the Node.js backend using Mocha and Chai
// This test checks if the backend properly handles successful and failed transactions

const chai = require('chai');
const chaiHttp = require('chai-http');
const app = require('../app'); 
const expect = chai.expect;
chai.use(chaiHttp);

describe('POST /payment-receipt', () => {
    it('should return 200 for successful payment', (done) => {
        chai.request(app)
            .post('/payment-receipt')
            .send({ response_code: '00', ticket: '123456' })
            .end((err, res) => {
                expect(res).to.have.status(200);
                expect(res.text).to.equal('Payment success');
                done();
            });
    });

    it('should return 400 for failed payment', (done) => {
        chai.request(app)
            .post('/payment-receipt')
            .send({ response_code: '01', message: 'Transaction Declined' })
            .end((err, res) => {
                expect(res).to.have.status(400);
                expect(res.text).to.equal('Payment failed');
                done();
            });
    });
});

通过自定义选项增强 Moneris Checkout 集成

在使用 Moneris Checkout 集成时,开发人员经常寻找个性化结帐流程的方法,以改善用户体验。结帐表格的 用户界面组件 可以定制,这是一个鲜为人知的功能。 Moneris 允许企业自定义结账页面的外观和布局,使其与自己的品牌保持一致。这涉及修改按钮布局、表单字段甚至措辞,以使最终用户更轻松地完成该过程并提高转化率。

另一个需要检查的因素是基本支付以外的交易类型的使用。 Moneris 具有预授权等功能,其中交易金额存储在卡上,但不会立即收取费用。此功能在酒店和汽车租赁等领域尤其重要,因为这些领域的最终价格可能会有所不同。该集成可以使用相同的方法处理多种交易类型 应用程序编程接口,使其适用于各种用例。

安全性是任何支付集成的重中之重,Moneris Checkout 融合了标记化和欺诈预防等技术。令牌化用令牌替换敏感的卡信息,因此消费者数据永远不会暴露在您的系统上。实施欺诈检测技术和 PCI DSS 合规性等安全措施可以显着降低与在线交易相关的风险。

关于 Moneris Checkout 集成的常见问题

  1. 什么是 Moneris Checkout?
  2. Moneris Checkout 是一种支付网关解决方案,使企业能够通过其网站安全地接受付款。它提供可定制的结账表格并接受多种付款方式。
  3. 如何自定义 Moneris Checkout 表单?
  4. Moneris API 允许您通过更改按钮和输入字段等元素来自定义结帐表单的设计。使用类似命令 setCustomStyle() 将您的品牌风格添加到表单中。
  5. 将环境设置为“qa”的重要性是什么?
  6. 将环境设置为“qa” setMode("qa") 允许您安全地测试交易,而无需处理实际付款。
  7. 如何处理预授权交易?
  8. 要管理预授权,请包括 action: "preauth" JSON 请求中的参数。这将冻结客户的卡,而不是立即扣款。
  9. Moneris Checkout 提供哪些安全措施?
  10. Moneris 支持令牌化,即用令牌替换敏感的信用卡信息。遵守 PCI DSS 确保您的集成满足行业安全要求。

关于 Moneris Checkout 集成的最终想法

为了成功地将 Moneris Checkout 与 JavaScript 集成,必须仔细规划前端和后端设置。为用户提供良好的结账体验需要确保正确捕获票号等交易详细信息。

在 QA 环境中进行测试并正确构建付款表单将帮助您及早发现问题。使用正确的技术,您可以创建一个无缝且安全的支付程序,既适合您公司的目标,又确保客户满意。

Moneris Checkout 集成的参考和资源
  1. 本文基于 Moneris Checkout 集成文档和 API 参考。有关更多详细信息,请访问 Moneris 官方 GitHub 存储库: Moneris 结账 GitHub
  2. 有关设置基于 JavaScript 的支付集成的其他指南可以在 Moneris 开发者门户上找到: Moneris 开发者门户
  3. 有关处理 JSON 调用和捕获事务响应的最佳实践,请参阅 JavaScript SDK 文档: Moneris JavaScript SDK