返回

VibeFox 2C2P for PrestaShop — 帮助

系统要求

PrestaShop:8.0 至 9.x。

PHP:8.0 或更高版本。模块拒绝在更早的 PHP 版本上安装。

2C2P 账户:您需要 2C2P 商户账户的 Merchant ID 和 Secret Key。开通商户账户时由 2C2P 提供。沙盒账户与正式账户的密钥不同。开发者文档和沙盒测试卡位于 developer.2c2p.com。

币种:购物车币种必须受模块支持,并已在您的 2C2P 账户中启用。支持的币种包括但不限于 THB、SGD、MYR、PHP、IDR、VND、MMK、KHR、LAK、CNY、HKD、TWD、JPY、KRW、INR、AUD、NZD、USD、EUR 和 GBP。如果购物车币种不受支持,结账时将不显示该付款方式。

VibeFox 许可证密钥:在 vibefox.net 购买。一个密钥只能用于一个域名。

安装

1. 进入后台,前往 Modules > Module Manager,点击 Upload a module。选择模块的 ZIP 文件。

2. 上传完成后,点击 Configure;或者之后在模块列表中找到 VibeFox 2C2P Payment,然后点击 Configure。

3. 在 Configure 页面顶部的许可证区块中,将您的 VibeFox 许可证密钥输入 License key,然后点击 Activate(参见许可证密钥)。

4. 输入您的沙盒 Merchant ID 和 Secret Key,开启 Enable/Disable,点击 Save,然后下一个测试订单。

5. 准备就绪后,输入正式环境的凭据,并关闭 Sandbox Mode。

安装时,模块会创建两个订单状态:Awaiting 2C2P payment 和 2C2P payment on hold。PrestaShop 会为所有币种、国家和客户群组启用新的付款模块。您可以在 Payment > Preferences 中加以限制。每笔付款都会发送返回地址和通知地址。无需在 2C2P 后台进行任何配置。

配置

所有设置都位于模块页面:Modules > Module Manager > VibeFox 2C2P Payment > Configure。每个部分都有自己的 Save 按钮,点击后会保存整个页面。在字段上方,当沙盒模式开启时,页面会显示 Sandbox mode is active. No real transactions will be processed.。如果网关已启用,但当前模式的 Merchant ID 或 Secret Key 为空,或者店铺的默认币种不受支持,页面也会发出提示。在这两种情况下,结账时都不会显示该付款方式。在 Sandbox Mode 关闭时保存,如果某个正式环境字段为空,模块会显示 Please enter your live Merchant ID. 或 Please enter your live Secret Key.。设置仍会被保存。

2C2P

Enable/Disable:Enable 2C2P Payment Gateway 用于开启或关闭该付款方式。默认:关闭。

Title:顾客在结账时看到的付款方式名称,同时也是订单中保存的付款方式名称。默认:2C2P Payment。

Description:结账时显示在付款方式下方的文字。默认:Pay securely via credit/debit card, e-wallet, or internet banking through 2C2P。沙盒模式下会在文字后加上 (TEST MODE)。

测试模式(沙盒)

Sandbox Mode:使用下方的沙盒凭据,将付款发送到 2C2P 沙盒环境(demo2.2c2p.com)。默认:开启。关闭后才会接收真实付款。

Sandbox Merchant ID:您的 2C2P 沙盒 Merchant ID。

Sandbox Secret Key:您的 2C2P 沙盒 Secret Key。

正式 API 凭据

在沙盒模式关闭时使用。

Merchant ID:您的 2C2P 正式 Merchant ID。

Secret Key:您的 2C2P 正式 Secret Key。密钥会按输入的原样保存,包括引号和反斜杠。

已保存的 Secret Key 不会再次显示。该字段保持为空,并显示 Saved — leave empty to keep it.。只有在需要更改时才输入新值。

清除已保存的密钥:勾选 Sandbox Secret Key 或 Secret Key,然后点击 Save 即可删除。字段为空时将保留已保存的值。

结果始终使用付款时所用模式的 Merchant ID 和 Secret Key 进行校验。在沙盒模式下发起的付款,即使之后切换到正式环境,仍会使用沙盒密钥进行校验;使用另一模式的密钥签名的结果会被拒绝。

付款页面

结果地址:仅供参考,显示 Frontend return URL 和 Backend notification URL。启用友好网址后,它们的格式类似 https://your-shop/module/wcp_2c2p_payment/return 和 https://your-shop/module/wcp_2c2p_payment/notify,前面可能带有语言代码,例如 /en/。它们会随每笔付款自动发送。

Payment Page Language:2C2P 付款页面的语言。默认:English。

选项:English, Thai, Japanese, Bahasa Indonesia, Burmese, Simplified Chinese。

Redirect API version:除非 2C2P 告知您的账户仍在使用旧版 7.0(SHA-1 签名),否则请保持 8.5。切换版本之前发起的付款结果仍会被校验。

8.5 — HMAC-SHA256 (recommended):当前版本(默认)。
7.0 — HMAC-SHA1 (legacy accounts):适用于旧的 2C2P 账户。

Order ID prefix:可选,仅限字母和数字(最多 10 个字符),例如 SHOP1。2C2P 会拒绝已经收到过的订单号。当多家店铺共用一个 2C2P 账户时,以及在沙盒中(测试商户账户是共用的)应设置唯一的前缀。保存时其他字符会被移除,并给出警告。

高级设置

Enable Logging:将 2C2P 事件写入模块文件夹中的 logs/tc2p_p_debug.log.php。该文件无法通过网页打开。日志不会记录银行卡数据、Secret Key、顾客邮箱或付款令牌。默认:关闭。关闭时不会写入任何内容,包括错误信息。

Log:显示日志的大小和最新条目。点击 Clear log 即可清空。

Delete Data on Uninstall:开启后,卸载模块时会删除网关设置和日志。2C2P 交易、订单以及模块的订单状态始终会保留,因此重新安装后,旧付款的延迟结果仍会被处理。默认:关闭。

结账

在付款步骤中,顾客选择付款方式(默认为 2C2P Payment)并确认。下一页会显示 Thank you for your order. You will be redirected to 2C2P to complete your payment.,片刻之后将顾客转到 2C2P 付款页面。如果没有自动跳转,顾客可点击 Pay via 2C2P。页面还有一个 Back to checkout 按钮。此时尚未创建订单。

在 2C2P 页面上,顾客可使用您 2C2P 账户中启用的任何方式付款,例如银行卡、电子钱包、二维码付款、网上银行或现金付款。模块会传递购物车总额(以购物车币种计)、顾客邮箱以及购物车中的商品名称。付款可在 24 小时内完成。每次付款尝试都会获得自己的 2C2P 订单号(在可选前缀之后为购物车编号和尝试编号),因为 2C2P 从不接受两次相同的订单号。

2C2P 会报告两次结果:顾客的浏览器返回商店,同时 2C2P 发送一条服务器间通知。两者的处理方式相同。只有在 2C2P 使用有效签名确认后,订单才会被标记为已付款。结果还必须与该付款相符:2C2P 订单号必须是您的商店签发的,并且会校验该次尝试的 Merchant ID 和随机令牌。没有有效签名的结果会被拒绝。即使商店处于维护模式,通知仍然有效,并且不受商店国家限制的影响。

付款成功后,订单被创建,顾客会看到标准的订单确认页面,其中显示 Your 2C2P payment has been received.。对于待付款,页面会显示 Your 2C2P payment is pending (for example a cash or bank payment that is not made yet). The order will be processed as soon as 2C2P confirms the payment.。对于处于保留状态的订单,页面会显示 Your payment was received and is being reviewed by the shop.。如果待付款之后被取消,则会显示 Your 2C2P payment was not completed. Please contact us about this order.。

如果付款未完成,则不会创建订单。顾客会返回结账页面,并看到 Payment was not completed. Please try again or choose a different payment method.。购物车会被保留,顾客可以重新付款或选择其他付款方式。如果无法确认付款结果,顾客会看到 We could not confirm the payment result. If your account was charged, please contact us before paying again.。如果无法发起付款(例如购物车币种不受支持),提示信息为 This payment method is currently unavailable for this order. Please contact us or choose another payment method.。

如果购物车已有订单(已付款,或正在等待待付款),则不会生成第二个付款表单,顾客会被转到订单确认页面。

模块不支持从 PrestaShop 退款,不保存银行卡,不支持定期付款或订阅,您的网站上没有银行卡输入框,也不支持 2C2P PGW 4.x API。

订单

订单状态

No order yet:顾客已被转到 2C2P,但尚未收到任何结果,或付款失败。此时只存在购物车。

Payment accepted:2C2P 报告付款成功(状态 000)。付款会以 2C2P 交易参考号作为交易 ID 记录。订单中的一条私密备注会显示 2C2P 交易、授权码、日期和付款渠道。

Awaiting 2C2P payment:付款在 2C2P 处于待处理状态(状态 001),例如顾客尚未完成的现金付款。当 2C2P 报告付款后,订单会转为 Payment accepted。

2C2P payment on hold:2C2P 报告的金额或币种与订单总额不同。备注会显示收到的值和预期的值。请在 2C2P 后台核对订单和交易。

Canceled:待付款随后被拒绝、取消或失败(状态 002、003、999)。备注会显示状态和原因。较早尝试的失败结果不会取消由另一次尝试创建的订单。

已付款订单绝不会因之后的结果而改变,重复的旧结果也不会重新打开已取消的订单。如果已付款订单又收到第二笔付款,订单不会改变。备注会提示您核对,并在 2C2P 商户后台退还重复付款。

2C2P 付款区块

订单页面会显示一个 2C2P payment 区块,其中包括 2C2P 订单号、交易、付款状态、渠道、授权码、遮码后的银行卡号、日期、渠道响应和实收金额;沙盒付款还会显示 Sandbox 标识。

退款

不支持从 PrestaShop 发起退款。请在 2C2P 商户后台办理退款,然后在 PrestaShop 中手动记录退款。

许可证密钥

模块需要使用在 vibefox.net 获取的 VibeFox 许可证密钥。许可证区块 License — VibeFox 2C2P Payment 位于 Modules > Module Manager > VibeFox 2C2P Payment > Configure 页面的设置上方,是第一个区块。将密钥输入 License key,然后点击 Activate。之后,该区块会以隐藏形式显示密钥,并显示状态(例如许可证有效期截止日期和您的域名),以及以下按钮:Check now 用于重新检查状态,Change key 用于输入其他密钥,Remove key 用于从此商店中移除密钥。其下方是 Product: presta-payment-2c2p 一行,以及打开您 vibefox.net 账户的链接 Manage licenses and domains in your account。只有拥有该模块 Configure 权限的员工才能更改密钥。该区块的文字遵循后台语言(包括英文和俄文)。

如果密钥未被接受,区块会说明原因,例如 Key not found、This key belongs to another product、Domain limit reached,或带有日期的 License expired on。商店地址更改后,或在您的账户中释放一个域名名额后,请点击 Check now。如果无法连接许可证服务器,模块将继续使用最后已知的状态运行。

一个密钥只能用于一个域名:主商店的域名,多商店设置中也是如此。从商店中移除密钥不会释放其域名名额。请在您的 vibefox.net 账户中释放该名额。

没有有效密钥时,结账时不会向顾客显示 2C2P。如果仍然发起了付款,顾客会看到 This payment method is not available. Please choose another one. PrestaShop 前台无法识别您已登录后台,因此付款方式对您也会隐藏:您可以在购买密钥之前设置模块,但无法在结账时测试。Modules > Module Manager 中的 Alerts 选项卡会显示提醒。现有订单不受影响:已经发起的付款仍会被确认。

许可证到期后,模块仍会继续运行,但更新和支持需要续费。在后台操作期间,系统会自动重新检查状态:密钥输入后的前 14 天每天一次,之后每周一次。无需 cron 任务。卸载或重置模块时,始终会删除许可证密钥和许可证状态。

故障排除

结账时不显示 2C2P:请检查许可证是否有效,Enable/Disable 是否已开启,以及当前模式是否已填写 Merchant ID 和 Secret Key:沙盒模式下填写沙盒字段,正式模式下填写正式字段。检查购物车币种是否受支持。两种情况下设置页面都会显示警告。在 Payment > Preferences 中,检查模块是否允许用于购物车币种、顾客所在国家和顾客群组。

已完成付款,但没有创建订单:没有有效结果到达您的商店。请检查付款时所用模式的 Merchant ID 和 Secret Key 是否与 2C2P 账户一致,以及 Redirect API version 是否与您的账户匹配。签名错误或属于其他 Merchant ID 的结果会被拒绝。请开启 Enable Logging,并在 Log 字段中查找 hash 或 Merchant ID 相关信息。另外请检查您的服务器是否接受来自 2C2P 发往后台通知地址的请求。

后台通知返回 400 FAIL:结果中缺少字段、签名错误、Merchant ID 不符或令牌错误。404 FAIL 表示该 2C2P 订单号并非由本商店签发。503 RETRY 表示同一时刻有其他请求正在确认该订单,或订单无法创建(例如模块已被禁用);2C2P 稍后会重试。请开启 Enable Logging 查看原因。

通知地址在浏览器中显示 FAIL:这是正常现象。该地址只接受来自 2C2P 的 POST 请求。

2C2P 提示订单号已存在:2C2P 不接受两次相同的订单号。当多家店铺共用一个 2C2P 账户,或在沙盒中(许多开发者共用演示商户账户)时会出现这种情况。请设置唯一的 Order ID prefix。

已付款,但订单处于 Awaiting 2C2P payment 或 2C2P payment on hold 状态:要么付款仍在 2C2P 处于待处理状态(例如顾客尚未完成的现金付款),要么所付金额或币种与订单不符。请在 2C2P 后台核对订单备注和交易。

顾客看到 This payment method is currently unavailable for this order:购物车币种不受支持,当前模式的 Merchant ID 或 Secret Key 为空,或者购物车总额为零。

保存时出现 Please enter your live Merchant ID 或 Please enter your live Secret Key:沙盒模式已关闭,而某个正式字段为空。请填写正式凭据,或保持 Sandbox Mode 开启。

卸载

进入 Modules > Module Manager,打开 VibeFox 2C2P Payment 旁边的菜单,然后选择 Uninstall。此模块的许可证密钥和许可证状态始终会被删除。如果 Delete Data on Uninstall 已开启,则会删除网关设置和日志。如果已关闭,则保留所有设置,以便日后重新安装。2C2P 交易以及 Awaiting 2C2P payment 和 2C2P payment on hold 订单状态始终会被保留。现有订单会保留其付款备注和交易 ID。

2C2P 是其各自所有者的商标。本模块与 2C2P 无关联,也未获得 2C2P 的认可。