fix: add currency_code column to Bank Transfer transaction table

- Add currency_code column to formipay_bank_transfer_trx table schema
- Store currency code from product settings when creating transaction
- Prevents data loss by tracking which currency was used for bank transfer payments
- Matches PayPal implementation pattern for consistency
This commit is contained in:
dwindown
2026-04-18 11:14:17 +07:00
parent af2b3c2bf4
commit 306377e8f5

View File

@@ -42,6 +42,7 @@ class BankTransfer extends Payment {
`created_date` datetime DEFAULT CURRENT_TIMESTAMP, `created_date` datetime DEFAULT CURRENT_TIMESTAMP,
`form_id` int DEFAULT 0, `form_id` int DEFAULT 0,
`order_id` int DEFAULT 0, `order_id` int DEFAULT 0,
`currency_code` text,
`channel` text NOT NULL, `channel` text NOT NULL,
`total` float(10, 2) DEFAULT 0, `total` float(10, 2) DEFAULT 0,
`unique_code` int DEFAULT 0, `unique_code` int DEFAULT 0,
@@ -61,12 +62,17 @@ class BankTransfer extends Payment {
$formipay_settings = get_option('formipay_settings'); $formipay_settings = get_option('formipay_settings');
$timeout = isset($formipay_settings['bank_transfer_timeout']) ? (int) $formipay_settings['bank_transfer_timeout'] : 1440; $timeout = isset($formipay_settings['bank_transfer_timeout']) ? (int) $formipay_settings['bank_transfer_timeout'] : 1440;
$table = $wpdb->prefix . 'formipay_bank_transfer_trx'; $table = $wpdb->prefix . 'formipay_bank_transfer_trx';
if ($order_data['payment_gateway'] == 'bank_transfer') { if ($order_data['payment_gateway'] == 'bank_transfer') {
$currency_data = explode(':::', get_post_meta($order_data['form_id'], 'product_currency', true));
$currency_code = !empty($currency_data[0]) ? $currency_data[0] : formipay_default_currency('code');
$submit_args = [ $submit_args = [
'created_date' => formipay_date('Y-m-d H:i:s', strtotime($order_data['created_date'])), 'created_date' => formipay_date('Y-m-d H:i:s', strtotime($order_data['created_date'])),
'form_id' => intval($order_data['form_id']), 'form_id' => intval($order_data['form_id']),
'order_id' => intval($order_data['id']), 'order_id' => intval($order_data['id']),
'currency_code' => sanitize_text_field($currency_code),
'channel' => sanitize_text_field(str_replace($order_data['payment_gateway'].':::', '', $order_data['form_data']['payment'])), 'channel' => sanitize_text_field(str_replace($order_data['payment_gateway'].':::', '', $order_data['form_data']['payment'])),
'total' => floatval($order_data['total']), 'total' => floatval($order_data['total']),
'unique_code' => sanitize_text_field($this->check_unique_code()), 'unique_code' => sanitize_text_field($this->check_unique_code()),