使用php授权.net SIM卡
这是我第一次尝试使用Authorize.net。我原以为这会很简单,但在示例代码方面没有太多内容。 我想使用authorize.net服务器上承载的表单 首先,我对指纹感到困惑。我使用交易密钥还是签名密钥 无论使用事务密钥还是签名密钥,我都会收到相同的错误。我得到这个错误代码:(99)这个交易不能被接受使用php授权.net SIM卡,php,authorize.net,Php,Authorize.net,这是我第一次尝试使用Authorize.net。我原以为这会很简单,但在示例代码方面没有太多内容。 我想使用authorize.net服务器上承载的表单 首先,我对指纹感到困惑。我使用交易密钥还是签名密钥 无论使用事务密钥还是签名密钥,我都会收到相同的错误。我得到这个错误代码:(99)这个交易不能被接受 date_default_timezone_set("UTC"); $xyz_x_fp_timestamp = time() ;
date_default_timezone_set("UTC");
$xyz_x_fp_timestamp = time() ;
$xyz_x_fp_sequence = $xyz_x_fp_timestamp - 1489881251 ;//this will generate a unique number every second
$xyz_x_login = '123123123123';
$xyz_x_amount = 25.00;
$my_key = '222222222222222222222222';
$hash_input = $xyz_x_login.'^'.$xyz_x_fp_timestamp.'^'.$xyz_x_fp_sequence.'^'.$xyz_x_amount.'^';
$xyz_x_fp_hash = hash_hmac('sha512', $hash_input ,$my_key);
?>
<div class="entry-content">
<form method="post" action="https://secure.authorize.net/gateway/transact.dll">
<input type="hidden" name="x_login" value="<?php echo $xyz_x_login; ?>" >
<input type="hidden" name="x_show_form" value="PAYMENT_FORM" >
<input type="hidden" name="x_type" value="AUTH_CAPTURE" >
<input type="hidden" name="x_fp_hash" value="<?php echo $xyz_x_fp_hash; ?>" >
<input type="hidden" name="x_fp_sequence" value="<?php echo $xyz_x_fp_sequence; ?>" >
<input type="hidden" name="x_fp_timestamp" value="<?php echo $xyz_x_fp_timestamp; ?>" >
<input type="hidden" name="x_amount" value="<?php echo $xyz_x_amount; ?>" >
<p><br/><br/><input class="button" type="submit" name="submit" value="Pay $<?php echo $xyz_x_amount; ?> Now" ><br/></p>
</form>
date\u default\u timezone\u set(“UTC”);
$xyz_x_fp_timestamp=time();
$xyz_x_fp_序列=$xyz_x_fp_时间戳-1489881251//这将每秒生成一个唯一的数字
$xyz_x_login='123123';
$xyz_x_金额=25.00;
$my_key='2222222';
$hash_input=$xyz_x_login.'^.$xyz_x_fp_时间戳.'^.$xyz_x_fp_序列.'^.$xyz_x_金额.'^';
$xyz_x_fp_hash=hash_hmac('sha512',$hash_input,$my_key);
?>
指纹必须是MD5,而不是SHA512。它使用您的事务密钥
$xyz_x_fp_hash = hash_hmac('md5', sprintf('%s^%s^%s^%s^',
$xyz_x_login,
$xyz_x_fp_sequence,
$xyz_x_fp_timestamp,
$xyz_x_amount
), $my_key);
几点注意:
您不需要将时区设置为使用time()
。它始终返回当前Unix时间戳,该时间戳始终以UTC为单位(即时区独立)
你的随机数实际上不是随机的。生成随机序列的更好方法是使用。对于非常敏感的应用程序,它有其自身的局限性,但在该应用程序中效果良好。($xyz_x_fp_sequence=rand(0,10000);
)
如果这对你有帮助的话,一定要这样做。
<?php
$xyz_x_fp_timestamp = time() ;
$xyz_x_fp_sequence = rand(1, 10000);
$xyz_x_login = '123123123123';
$xyz_x_amount = 25.00;
$my_key = '222222222222222222222222';
$xyz_x_fp_hash = hash_hmac('md5', sprintf('%s^%s^%s^%s^',
$xyz_x_login,
$xyz_x_fp_sequence,
$xyz_x_fp_timestamp,
$xyz_x_amount
), $my_key);
?>
<div class="entry-content">
<form method="post" action="https://secure.authorize.net/gateway/transact.dll">
<input type="hidden" name="x_login" value="<?php echo $xyz_x_login; ?>" >
<input type="hidden" name="x_show_form" value="PAYMENT_FORM" >
<input type="hidden" name="x_type" value="AUTH_CAPTURE" >
<input type="hidden" name="x_fp_hash" value="<?php echo $xyz_x_fp_hash; ?>" >
<input type="hidden" name="x_fp_sequence" value="<?php echo $xyz_x_fp_sequence; ?>" >
<input type="hidden" name="x_fp_timestamp" value="<?php echo $xyz_x_fp_timestamp; ?>" >
<input type="hidden" name="x_amount" value="<?php echo $xyz_x_amount; ?>" >
<p><br/><br/><input class="button" type="submit" name="submit" value="Pay $<?php echo $xyz_x_amount; ?> Now" ><br/></p>
</form>