feat(api): 添加交易类型常量接口并优化API请求参数
将交易类型字符串统一为常量接口,避免硬编码错误 优化API请求参数,明确处理布尔值和添加国家代码
This commit is contained in:
parent
4727881e05
commit
5d449721ef
|
|
@ -91,7 +91,8 @@ class Yoone_Moneris_API implements Yoone_Moneris_API_Interface {
|
||||||
$num = isset($card['number']) ? preg_replace('/\D+/', '', (string) $card['number']) : '';
|
$num = isset($card['number']) ? preg_replace('/\D+/', '', (string) $card['number']) : '';
|
||||||
$masked = $num ? str_repeat('*', max(strlen($num) - 4, 0)) . substr($num, -4) : '';
|
$masked = $num ? str_repeat('*', max(strlen($num) - 4, 0)) . substr($num, -4) : '';
|
||||||
error_log('【Yoone Moneris API】tokenize_card 请求:last4=' . ($num ? substr($num, -4) : '') . ' len=' . strlen($num) . ' expdate=' . $payload['expdate'] . ' cryptType=' . $payload['cryptType']);
|
error_log('【Yoone Moneris API】tokenize_card 请求:last4=' . ($num ? substr($num, -4) : '') . ' len=' . strlen($num) . ' expdate=' . $payload['expdate'] . ' cryptType=' . $payload['cryptType']);
|
||||||
$res = $this->send_moneris_xml( 'res_add_cc', $payload );
|
// 使用集中加载的交易类型常量接口
|
||||||
|
$res = $this->send_moneris_xml( Yoone_Moneris_Txn_Types::RES_ADD_CC, $payload );
|
||||||
error_log('$res11111111'. print_r($res, true));
|
error_log('$res11111111'. print_r($res, true));
|
||||||
if ( $res['ok'] ) {
|
if ( $res['ok'] ) {
|
||||||
return array(
|
return array(
|
||||||
|
|
@ -126,7 +127,8 @@ class Yoone_Moneris_API implements Yoone_Moneris_API_Interface {
|
||||||
require_once __DIR__ . '/utils/orderid.php';
|
require_once __DIR__ . '/utils/orderid.php';
|
||||||
}
|
}
|
||||||
$unique_order_id = yoone_moneris_unique_order_id( $order_id );
|
$unique_order_id = yoone_moneris_unique_order_id( $order_id );
|
||||||
$type = $capture ? 'res_purchase_cc' : 'res_preauth_cc';
|
// 使用集中加载的交易类型常量接口
|
||||||
|
$type = $capture ? Yoone_Moneris_Txn_Types::RES_PURCHASE_CC : Yoone_Moneris_Txn_Types::RES_PREAUTH_CC;
|
||||||
$payload = array(
|
$payload = array(
|
||||||
'dataKey' => (string) $token,
|
'dataKey' => (string) $token,
|
||||||
'orderId' => (string) $unique_order_id,
|
'orderId' => (string) $unique_order_id,
|
||||||
|
|
@ -185,7 +187,8 @@ class Yoone_Moneris_API implements Yoone_Moneris_API_Interface {
|
||||||
'amount' => $this->format_amount( $amount ),
|
'amount' => $this->format_amount( $amount ),
|
||||||
'cryptType' => $this->crypt_type,
|
'cryptType' => $this->crypt_type,
|
||||||
);
|
);
|
||||||
$res = $this->send_moneris_xml( 'refund', $payload );
|
// 使用集中加载的交易类型常量接口
|
||||||
|
$res = $this->send_moneris_xml( Yoone_Moneris_Txn_Types::REFUND, $payload );
|
||||||
if ( $res['ok'] ) {
|
if ( $res['ok'] ) {
|
||||||
return array( 'success' => true );
|
return array( 'success' => true );
|
||||||
}
|
}
|
||||||
|
|
@ -214,9 +217,14 @@ class Yoone_Moneris_API implements Yoone_Moneris_API_Interface {
|
||||||
|
|
||||||
// 构建请求体
|
// 构建请求体
|
||||||
$body = array(
|
$body = array(
|
||||||
'storeId' => $this->store_id,
|
'storeId' => $this->store_id,
|
||||||
'apiToken' => $this->api_token,
|
'apiToken' => $this->api_token,
|
||||||
'statusCheck'=> (bool) $this->status_check,
|
// 明确发送字符串 true/false,避免 boolean false 被序列化为空字符串
|
||||||
|
'statusCheck' => $this->status_check ? 'true' : 'false',
|
||||||
|
// 添加处理国家代码(CA/US),与端点匹配
|
||||||
|
'processingCountryCode' => strtoupper($this->country_code),
|
||||||
|
// 在沙箱环境显式声明 test=true(与官方示例一致)
|
||||||
|
'test' => $this->is_test_mode() ? 'true' : 'false',
|
||||||
);
|
);
|
||||||
|
|
||||||
// 风险查询特殊结构(暂不支持;如需支持可扩展)
|
// 风险查询特殊结构(暂不支持;如需支持可扩展)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
if (! defined('ABSPATH')) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易类型常量枚举(避免字符串写错)
|
||||||
|
* 将常用的交易类型统一到接口常量中,供 API 层调用。
|
||||||
|
*/
|
||||||
|
interface Yoone_Moneris_Txn_Types
|
||||||
|
{
|
||||||
|
// Vault(存储卡片)相关
|
||||||
|
public const RES_ADD_CC = 'res_add_cc';
|
||||||
|
public const RES_UPDATE_CC = 'res_update_cc';
|
||||||
|
public const RES_DELETE = 'res_delete';
|
||||||
|
|
||||||
|
// Vault 令牌交易
|
||||||
|
public const RES_PURCHASE_CC = 'res_purchase_cc';
|
||||||
|
public const RES_PREAUTH_CC = 'res_preauth_cc';
|
||||||
|
|
||||||
|
// 通用交易
|
||||||
|
public const REFUND = 'refund';
|
||||||
|
}
|
||||||
|
|
@ -40,6 +40,8 @@ function yoone_moneris_payments_init() {
|
||||||
// __DIR__ 是当前文件所在目录,拼接 includes 路径以找到类定义文件。
|
// __DIR__ 是当前文件所在目录,拼接 includes 路径以找到类定义文件。
|
||||||
require_once __DIR__ . '/includes/constants/moneris.php';
|
require_once __DIR__ . '/includes/constants/moneris.php';
|
||||||
require_once __DIR__ . '/includes/interfaces/class-yoone-moneris-api-interface.php';
|
require_once __DIR__ . '/includes/interfaces/class-yoone-moneris-api-interface.php';
|
||||||
|
// 加载交易类型常量接口,统一交易类型字符串,避免在使用处多次 require
|
||||||
|
require_once __DIR__ . '/includes/interfaces/class-yoone-moneris-txn-types.php';
|
||||||
require_once __DIR__ . '/includes/utils/logger.php';
|
require_once __DIR__ . '/includes/utils/logger.php';
|
||||||
require_once __DIR__ . '/includes/class-yoone-moneris-api.php';
|
require_once __DIR__ . '/includes/class-yoone-moneris-api.php';
|
||||||
require_once __DIR__ . '/includes/class-yoone-gateway-moneris.php';
|
require_once __DIR__ . '/includes/class-yoone-gateway-moneris.php';
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue