webdna/commerce-opayo

Opayo 集成方案,适用于 Craft Commerce 3.3+

安装数: 2,065

依赖项: 0

建议者: 0

安全: 0

星标: 3

关注者: 3

分支: 0

公开问题: 2

类型:craft-plugin

2.0.4 2024-03-05 16:02 UTC

README

Opayo for Craft Commerce icon

Opayo for Craft Commerce

本插件提供了 Opyao 集成方案,适用于 Craft Commerce

要求

本插件需要 Craft 3.6 和 Craft Commerce 3.3 或更高版本。

安装

您可以从插件商店或使用 Composer 安装此插件。

从插件商店

前往项目控制面板中的插件商店,搜索“Opayo for Craft Commerce”,然后在模态窗口中点击“安装”按钮。

使用 Composer

打开终端并运行以下命令

# go to the project directory
cd /path/to/my-project.test

# tell Composer to load the plugin
composer require craftcms/commerce-opayo

# tell Craft to install the plugin
./craft install/plugin commerce-opayo

设置

要添加 Opayo 支付网关,请转到 Commerce → 设置 → 网关,创建一个新的网关。

提示:供应商、集成密钥和集成密码网关设置可以设置为环境变量。有关详细信息,请参阅 Craft 文档中的 环境配置

使用传统购物车格式

示例实现

<form method="POST" id="opayo-form">
       {{ csrfInput() }}
       {% set gateway = craft.commerce.gateways.getGatewayByHandle('opayo') %} 
       <script src="{{ gateway.getJs() }}"></script>
       <input type="hidden" name="nonce">
       <input type="hidden" name="sessionKey" value="{{ gateway.token }}">
       
       <input type="text" id="name" value="" autocomplete="off" required>
       <input type="text" id="cardnumber" value="" autocomplete="off" required>
       <input type="text" id="expiry" placeholder="MMYY" value="" autocomplete="off" required>
       <input type="text" id="cvv" value="" autocomplete="off" required>
       
       <button type="submit">Submit</button>
</form>
function paymentFormSubmit(e) {
        e.preventDefault();
        // disable submit button
        e.target.querySelector('button[type="submit"]').disabled = true;
        
        sagepayOwnForm({
                merchantSessionKey: e.target.querySelector('input[name="sessionKey"]').value
        }).tokeniseCardDetails({
                cardDetails: {
                        cardholderName: e.target.querySelector('[id="name"]').value,
                        cardNumber: e.target.querySelector('[id="cardnumber"]').value,
                        expiryDate: e.target.querySelector('[id="expiry"]').value,
                        securityCode: e.target.querySelector('[id="cvv"]').value,
                },
                onTokenised: function(result) {
                        if (result.success) {
                                e.target.querySelector('[name="nonce"]').value = result.cardIdentifier;
                                e.target.removeEventListener('submit', paymentFormSubmit);
                                e.target.submit();
                        } else {
                                alert(result.errors.join(', '));
                        }
                }
        });
}
document.getElementById('opayo-form').addEventListener('submit', paymentFormSubmit);