Edit File by line
/home/zeestwma/ceyloniy.../wp-conte.../plugins/wpforms-.../src/Integrat.../Square
File: Process.php
*
[1000] Fix | Delete
* @since 1.9.5
[1001] Fix | Delete
*
[1002] Fix | Delete
* @param array $fields Final/sanitized submitted field data.
[1003] Fix | Delete
* @param array $entry Copy of original $_POST.
[1004] Fix | Delete
* @param array $form_data Form data and settings.
[1005] Fix | Delete
* @param string $entry_id Entry ID.
[1006] Fix | Delete
*/
[1007] Fix | Delete
public function update_entry_meta( $fields, $entry, $form_data, $entry_id ) {
[1008] Fix | Delete
[1009] Fix | Delete
if ( empty( $entry_id ) || $this->errors || ! $this->api ) {
[1010] Fix | Delete
return;
[1011] Fix | Delete
}
[1012] Fix | Delete
[1013] Fix | Delete
$resource = $this->api->get_response_resource();
[1014] Fix | Delete
[1015] Fix | Delete
if ( empty( $resource ) ) {
[1016] Fix | Delete
return;
[1017] Fix | Delete
}
[1018] Fix | Delete
[1019] Fix | Delete
wpforms()->obj( 'entry' )->update(
[1020] Fix | Delete
$entry_id,
[1021] Fix | Delete
[
[1022] Fix | Delete
'type' => 'payment',
[1023] Fix | Delete
],
[1024] Fix | Delete
'',
[1025] Fix | Delete
'',
[1026] Fix | Delete
[ 'cap' => false ]
[1027] Fix | Delete
);
[1028] Fix | Delete
[1029] Fix | Delete
/**
[1030] Fix | Delete
* Fire when entry details and add meta was successfully updated.
[1031] Fix | Delete
*
[1032] Fix | Delete
* @since 1.9.5
[1033] Fix | Delete
*
[1034] Fix | Delete
* @param array $fields Final/sanitized submitted field data.
[1035] Fix | Delete
* @param array $form_data Form data and settings.
[1036] Fix | Delete
* @param string $entry_id Entry ID.
[1037] Fix | Delete
* @param array $resource Response resource data.
[1038] Fix | Delete
* @param Process $process Process class instance.
[1039] Fix | Delete
*/
[1040] Fix | Delete
do_action( 'wpforms_square_process_update_entry_meta', $fields, $form_data, $entry_id, $resource, $this ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName
[1041] Fix | Delete
}
[1042] Fix | Delete
[1043] Fix | Delete
/**
[1044] Fix | Delete
* Add details to payment data.
[1045] Fix | Delete
*
[1046] Fix | Delete
* @since 1.9.5
[1047] Fix | Delete
*
[1048] Fix | Delete
* @param array $payment_data Payment data args.
[1049] Fix | Delete
* @param array $fields Final/sanitized submitted field data.
[1050] Fix | Delete
* @param array $form_data Form data and settings.
[1051] Fix | Delete
*
[1052] Fix | Delete
* @return array
[1053] Fix | Delete
*/
[1054] Fix | Delete
public function prepare_payment_data( $payment_data, array $fields, array $form_data ): array { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
[1055] Fix | Delete
[1056] Fix | Delete
$payment_data = (array) $payment_data;
[1057] Fix | Delete
[1058] Fix | Delete
// If there are errors or API is not initialized, return the original payment data.
[1059] Fix | Delete
if ( $this->errors || ! $this->api ) {
[1060] Fix | Delete
return $payment_data;
[1061] Fix | Delete
}
[1062] Fix | Delete
[1063] Fix | Delete
$resource = $this->api->get_response_resource();
[1064] Fix | Delete
[1065] Fix | Delete
// If the resource is empty, return the original payment meta.
[1066] Fix | Delete
if ( empty( $resource ) ) {
[1067] Fix | Delete
return $payment_data;
[1068] Fix | Delete
}
[1069] Fix | Delete
[1070] Fix | Delete
$type = Helpers::array_key_first( $resource );
[1071] Fix | Delete
$payment = $resource[ $type ];
[1072] Fix | Delete
$is_subscription = $type === 'subscription';
[1073] Fix | Delete
[1074] Fix | Delete
$payment_data['status'] = 'processed';
[1075] Fix | Delete
$payment_data['gateway'] = 'square';
[1076] Fix | Delete
$payment_data['mode'] = Helpers::is_sandbox_mode() ? 'test' : 'live';
[1077] Fix | Delete
$payment_data['customer_id'] = sanitize_text_field( $payment->getCustomerId() );
[1078] Fix | Delete
$payment_data['title'] = $this->get_payment_title( $payment );
[1079] Fix | Delete
[1080] Fix | Delete
if ( $is_subscription ) {
[1081] Fix | Delete
$payment_data['subscription_id'] = sanitize_text_field( $payment->getId() );
[1082] Fix | Delete
$payment_data['subscription_status'] = 'not-synced';
[1083] Fix | Delete
[1084] Fix | Delete
return $payment_data;
[1085] Fix | Delete
}
[1086] Fix | Delete
[1087] Fix | Delete
$payment_data['transaction_id'] = sanitize_text_field( $payment->getId() );
[1088] Fix | Delete
[1089] Fix | Delete
return $payment_data;
[1090] Fix | Delete
}
[1091] Fix | Delete
[1092] Fix | Delete
/**
[1093] Fix | Delete
* Get Payment title.
[1094] Fix | Delete
*
[1095] Fix | Delete
* @since 1.9.5
[1096] Fix | Delete
*
[1097] Fix | Delete
* @param object $payment Payment object.
[1098] Fix | Delete
*
[1099] Fix | Delete
* @return string Payment title.
[1100] Fix | Delete
*/
[1101] Fix | Delete
private function get_payment_title( $payment ): string {
[1102] Fix | Delete
[1103] Fix | Delete
// Look for the cardholder name.
[1104] Fix | Delete
$card = $this->get_card();
[1105] Fix | Delete
$customer_name = $card ? $this->get_card_holder( $card ) : '';
[1106] Fix | Delete
[1107] Fix | Delete
if ( $customer_name ) {
[1108] Fix | Delete
return sanitize_text_field( $customer_name );
[1109] Fix | Delete
}
[1110] Fix | Delete
[1111] Fix | Delete
$customer_name = $this->get_customer_name();
[1112] Fix | Delete
[1113] Fix | Delete
if ( $customer_name ) {
[1114] Fix | Delete
return sanitize_text_field( implode( ' ', array_values( $customer_name ) ) );
[1115] Fix | Delete
}
[1116] Fix | Delete
[1117] Fix | Delete
$customer_email = $this->get_customer_email();
[1118] Fix | Delete
[1119] Fix | Delete
if ( $customer_email ) {
[1120] Fix | Delete
return sanitize_email( $customer_email );
[1121] Fix | Delete
}
[1122] Fix | Delete
[1123] Fix | Delete
return '';
[1124] Fix | Delete
}
[1125] Fix | Delete
[1126] Fix | Delete
/**
[1127] Fix | Delete
* Add payment meta for a successful one-time or subscription payment.
[1128] Fix | Delete
*
[1129] Fix | Delete
* @since 1.9.5
[1130] Fix | Delete
*
[1131] Fix | Delete
* @param array $payment_meta Payment meta.
[1132] Fix | Delete
* @param array $fields Final/sanitized submitted field data.
[1133] Fix | Delete
* @param array $form_data Form data and settings.
[1134] Fix | Delete
*
[1135] Fix | Delete
* @return array
[1136] Fix | Delete
*/
[1137] Fix | Delete
public function prepare_payment_meta( $payment_meta, array $fields, array $form_data ): array { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
[1138] Fix | Delete
[1139] Fix | Delete
$payment_meta = (array) $payment_meta;
[1140] Fix | Delete
[1141] Fix | Delete
// If there are errors or API is not initialized, return the original payment meta.
[1142] Fix | Delete
if ( $this->errors || ! $this->api ) {
[1143] Fix | Delete
return $payment_meta;
[1144] Fix | Delete
}
[1145] Fix | Delete
[1146] Fix | Delete
$resource = $this->api->get_response_resource();
[1147] Fix | Delete
[1148] Fix | Delete
// If the resource is empty, return the original payment meta.
[1149] Fix | Delete
if ( empty( $resource ) ) {
[1150] Fix | Delete
return $payment_meta;
[1151] Fix | Delete
}
[1152] Fix | Delete
[1153] Fix | Delete
$type = Helpers::array_key_first( $resource );
[1154] Fix | Delete
$credit_card_details = $this->get_card();
[1155] Fix | Delete
$is_subscription = $type === 'subscription';
[1156] Fix | Delete
[1157] Fix | Delete
if ( $is_subscription ) {
[1158] Fix | Delete
$payment_meta['subscription_period'] = $this->subscription_settings['phase_cadence']['slug'];
[1159] Fix | Delete
}
[1160] Fix | Delete
[1161] Fix | Delete
$payment_meta['method_type'] = 'card';
[1162] Fix | Delete
[1163] Fix | Delete
if ( ! empty( $credit_card_details ) ) {
[1164] Fix | Delete
$payment_meta['credit_card_last4'] = $credit_card_details->getLast4();
[1165] Fix | Delete
$payment_meta['credit_card_expires'] = $credit_card_details->getExpMonth() . '/' . $credit_card_details->getExpYear();
[1166] Fix | Delete
$payment_meta['credit_card_method'] = strtolower( $credit_card_details->getCardBrand() );
[1167] Fix | Delete
$payment_meta['credit_card_name'] = $this->get_card_holder( $credit_card_details );
[1168] Fix | Delete
}
[1169] Fix | Delete
[1170] Fix | Delete
// Add a log indicating that the charge was successful.
[1171] Fix | Delete
$payment_meta['log'] = $this->format_payment_log( 'Square payment was created.' );
[1172] Fix | Delete
[1173] Fix | Delete
return $payment_meta;
[1174] Fix | Delete
}
[1175] Fix | Delete
[1176] Fix | Delete
/**
[1177] Fix | Delete
* Add payment info for successful payment.
[1178] Fix | Delete
*
[1179] Fix | Delete
* @since 1.9.5
[1180] Fix | Delete
*
[1181] Fix | Delete
* @param string $payment_id Payment ID.
[1182] Fix | Delete
* @param array $fields Final/sanitized submitted field data.
[1183] Fix | Delete
* @param array $form_data Form data and settings.
[1184] Fix | Delete
*/
[1185] Fix | Delete
public function process_payment_saved( $payment_id, array $fields, array $form_data ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
[1186] Fix | Delete
[1187] Fix | Delete
$payment_id = (string) $payment_id;
[1188] Fix | Delete
[1189] Fix | Delete
// If there are errors or API is not initialized, return the original payment meta.
[1190] Fix | Delete
if ( $this->errors || ! $this->api ) {
[1191] Fix | Delete
return;
[1192] Fix | Delete
}
[1193] Fix | Delete
[1194] Fix | Delete
$resource = $this->api->get_response_resource();
[1195] Fix | Delete
[1196] Fix | Delete
// If the resource is empty, return the original payment meta.
[1197] Fix | Delete
if ( empty( $resource ) ) {
[1198] Fix | Delete
return;
[1199] Fix | Delete
}
[1200] Fix | Delete
[1201] Fix | Delete
$type = Helpers::array_key_first( $resource );
[1202] Fix | Delete
[1203] Fix | Delete
if ( $type === 'subscription' ) {
[1204] Fix | Delete
[1205] Fix | Delete
$this->api->update_subscription(
[1206] Fix | Delete
[
[1207] Fix | Delete
'id' => $resource[ $type ]->getId(),
[1208] Fix | Delete
'payment_id' => $payment_id,
[1209] Fix | Delete
]
[1210] Fix | Delete
);
[1211] Fix | Delete
[1212] Fix | Delete
return;
[1213] Fix | Delete
}
[1214] Fix | Delete
[1215] Fix | Delete
wpforms()->obj( 'payment_meta' )->add_log(
[1216] Fix | Delete
$payment_id,
[1217] Fix | Delete
sprintf(
[1218] Fix | Delete
'Square payment was processed. (Receipt ID: %s)',
[1219] Fix | Delete
$resource[ $type ]->getReceiptNumber()
[1220] Fix | Delete
)
[1221] Fix | Delete
);
[1222] Fix | Delete
}
[1223] Fix | Delete
[1224] Fix | Delete
/**
[1225] Fix | Delete
* Return payment log value.
[1226] Fix | Delete
*
[1227] Fix | Delete
* @since 1.9.5
[1228] Fix | Delete
*
[1229] Fix | Delete
* @param string $value Log value.
[1230] Fix | Delete
*
[1231] Fix | Delete
* @return string
[1232] Fix | Delete
*/
[1233] Fix | Delete
private function format_payment_log( string $value ): string {
[1234] Fix | Delete
[1235] Fix | Delete
return wp_json_encode(
[1236] Fix | Delete
[
[1237] Fix | Delete
'value' => sanitize_text_field( $value ),
[1238] Fix | Delete
'date' => gmdate( 'Y-m-d H:i:s' ),
[1239] Fix | Delete
]
[1240] Fix | Delete
);
[1241] Fix | Delete
}
[1242] Fix | Delete
[1243] Fix | Delete
/**
[1244] Fix | Delete
* Get Customer name.
[1245] Fix | Delete
*
[1246] Fix | Delete
* @since 1.9.5
[1247] Fix | Delete
*
[1248] Fix | Delete
* @return array
[1249] Fix | Delete
*/
[1250] Fix | Delete
private function get_customer_name(): array {
[1251] Fix | Delete
[1252] Fix | Delete
$customer_name = [];
[1253] Fix | Delete
[1254] Fix | Delete
// Billing first name.
[1255] Fix | Delete
if ( ! empty( $this->fields[ $this->settings['billing_name'] ]['first'] ) ) {
[1256] Fix | Delete
$customer_name['first_name'] = $this->fields[ $this->settings['billing_name'] ]['first'];
[1257] Fix | Delete
}
[1258] Fix | Delete
[1259] Fix | Delete
// Billing last name.
[1260] Fix | Delete
if ( ! empty( $this->fields[ $this->settings['billing_name'] ]['last'] ) ) {
[1261] Fix | Delete
$customer_name['last_name'] = $this->fields[ $this->settings['billing_name'] ]['last'];
[1262] Fix | Delete
}
[1263] Fix | Delete
[1264] Fix | Delete
// If a Name field has the `Simple` format.
[1265] Fix | Delete
if (
[1266] Fix | Delete
empty( $customer_name['first_name'] ) &&
[1267] Fix | Delete
empty( $customer_name['last_name'] ) &&
[1268] Fix | Delete
! empty( $this->fields[ $this->settings['billing_name'] ]['value'] )
[1269] Fix | Delete
) {
[1270] Fix | Delete
$customer_name['first_name'] = $this->fields[ $this->settings['billing_name'] ]['value'];
[1271] Fix | Delete
}
[1272] Fix | Delete
[1273] Fix | Delete
return $customer_name;
[1274] Fix | Delete
}
[1275] Fix | Delete
[1276] Fix | Delete
/**
[1277] Fix | Delete
* Get Customer email.
[1278] Fix | Delete
*
[1279] Fix | Delete
* @since 1.9.5
[1280] Fix | Delete
*
[1281] Fix | Delete
* @return string
[1282] Fix | Delete
*/
[1283] Fix | Delete
private function get_customer_email(): string {
[1284] Fix | Delete
[1285] Fix | Delete
return ! empty( $this->fields[ $this->settings['buyer_email'] ]['value'] ) ? $this->fields[ $this->settings['buyer_email'] ]['value'] : '';
[1286] Fix | Delete
}
[1287] Fix | Delete
[1288] Fix | Delete
/**
[1289] Fix | Delete
* Retrieve a Cardholder Name.
[1290] Fix | Delete
*
[1291] Fix | Delete
* @since 1.9.5
[1292] Fix | Delete
*
[1293] Fix | Delete
* @param Card $card Card object.
[1294] Fix | Delete
*
[1295] Fix | Delete
* @return string
[1296] Fix | Delete
*/
[1297] Fix | Delete
private function get_card_holder( $card ): string {
[1298] Fix | Delete
[1299] Fix | Delete
$holder = '';
[1300] Fix | Delete
[1301] Fix | Delete
if ( $card instanceof Card ) {
[1302] Fix | Delete
$holder = $card->getCardholderName();
[1303] Fix | Delete
}
[1304] Fix | Delete
[1305] Fix | Delete
if ( empty( $holder ) && isset( $this->cc_field['cardname'] ) ) {
[1306] Fix | Delete
$holder = $this->cc_field['cardname'];
[1307] Fix | Delete
}
[1308] Fix | Delete
[1309] Fix | Delete
return $holder;
[1310] Fix | Delete
}
[1311] Fix | Delete
}
[1312] Fix | Delete
[1313] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function