我有一个通过第三方服务处理销售,处理结果并返回状态"成功"或"无效。"此销售调用是使用应用于特定表单的gform_after_submission挂钩进行的。
我需要做的是存储"成功"或"无效"导致数组作为变量,我可以使用gform_validation hook将其传递给函数以验证或使信用卡字段无效。
我在函数中声明变量,如下所示:
function foo {
...code to sell product through API...
$status = $checkoutShoppingCartRequest['Result']['Status'];
}
当我在函数中打印变量$ status时,它显示成功或无效。
这是我需要使用此变量的其他函数,传递给gform_validation,无论Success还是Invalid result,都会每次都失败:
function MBvalidate( $validation_result ) {
$form = $validation_result['form'];
if ( $status !== "Success") {
$validation_result['is_valid'] = false;
foreach( $form['fields'] as &$field ) {
if ( $field->id == '34' ) {
$field->failed_validation = true;
$field->validation_message = 'Your credit card could not be processed.';
break;
}
}
}
//Assign modified $form object back to the validation result
$validation_result['form'] = $form;
return $validation_result;
}
add_filter( 'gform_validation_47', 'MBvalidate' );
我尝试通过全局和会话等以多种不同的方式传递变量。
我是GF发展的新手,所以我确信我错过了一些东西。我很欣赏任何方向。
答案 0 :(得分:1)
gform_after_submission
操作挂钩在 gform_validation
后运行。
无论如何,假设你可以find a hook之前运行,我会做的是使用Transients API的set_transient()
和get_transient()
为每个提交的表单存储一个唯一的变量功能。例如,您可以在使用random ID填充的每个表单中创建隐藏字段。使用此随机ID作为密钥来存储和检索成功/无效结果。
答案 1 :(得分:0)
<?php
chkServer('gateway.sandbox.push.apple.com', 2195);
//chkServer('gateway.push.apple.com',2195);
function chkServer($host, $port)
{
$hostip = @gethostbyname($host);
if ($hostip == $host) {
echo "Server is down or does not exist";
} else {
if (!$x = @fsockopen($hostip, $port, $errno, $errstr, 5)) {
echo "Port $port is closed.";
} else {
echo "Port $port is open.";
if ($x) {
@fclose($x);
}
}
}
}
?>
这是一个局部变量,在尝试在if-condition中使用它之前从未定义过。所以,它总是$status
。
也许你错过了
null
在检查条件之前或类似的东西。