首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Authorize.Net验证信用卡目标和随机数

Authorize.Net验证信用卡目标和随机数
EN

Stack Overflow用户
提问于 2013-08-27 02:29:19
回答 2查看 2.6K关注 0票数 0

我正在使用authorize.net循环事务。我正在尝试做的是,如果他们想在接下来的12个月里重复捐赠,我会给他们一个选择,让他们检查一笔捐赠。

所以在ARB之前-我想验证卡,但是0.00不是一个有效的数字。因此,如果我的金额是0.01 -我如何在卡通过验证后使交易无效?

此外-当订阅时,我不会收到来自authorize.net的电子邮件,告诉我交易已经完成,就像处理常规交易一样。

我的代码:

代码语言:javascript
复制
$authorization = new AuthnetAIM($apilogin, $apitranskey, true);
$authorization->setTransaction($creditcard, $expiration, '0.01');
$authorization->setTransactionType('AUTH_ONLY');
$authorization->process();
if ($authorization->isApproved())
{
$subscription = new AuthnetARB($apilogin, $apitranskey, AuthnetARB::USE_DEVELOPMENT_SERVER);
    // Set subscription information
    $subscription->setParameter('amount', $amount);
    $subscription->setParameter('cardNumber', $creditcard);
    $subscription->setParameter('expirationDate', $expiration);
    $subscription->setParameter('firstName', $business_firstname);
    $subscription->setParameter('lastName', $business_lastname);
    $subscription->setParameter('address', $business_address);
    $subscription->setParameter('city', $business_city);
    $subscription->setParameter('state', $business_state);
    $subscription->setParameter('zip', $business_zipcode);
    $subscription->setParameter('email', $email);

    // Set the billing cycle for every three months
    $subscription->setParameter('interval_length', 1);
    $subscription->setParameter('startDate', date("Y-m-d", strtotime("+ 1 months")));

    // Create the subscription
    $subscription->createAccount();

    // Check the results of our API call
    if ($subscription->isSuccessful())
    {
        // Get the subscription ID
        $subscription_id = $subscription->getSubscriberID();
        Send_email();
    }
    else
    {
        $transError = 'your subscription was not created';
        $hasError = true;

    }
}
else if ($authorization->isDeclined())
{
    $transError = 'This card is not valid';
        $hasError = true;
}

}
catch (AuthnetARBException $e)
{
    $transError =  'There was an error processing the transaction. Here is the error message:<br/> ';
    echo $e->__toString();
    $hasError = true;
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-27 02:59:38

0.00不仅是一个有效的金额,而且如果你只是想验证信用卡的合法性,Visa和万事达卡都会要求你使用这个金额。几年前,由于这个原因,他们不再允许进行任何真正有价值的预授权。我认为没有这样做的商家会被罚款。

话虽如此,如果您打算采用"charge $.01,然后void the transaction“路线,下面的代码应该可以工作:

代码语言:javascript
复制
$transaction_id = $authorization->getTransactionID();
$void = new AuthnetAIM($apilogin, $apitranskey, true);
$void->setTransactionType("VOID");
$void->setParameter('x_trans_id', $transaction_id);
$void->process();
票数 1
EN

Stack Overflow用户

发布于 2014-06-07 11:31:32

有了授权的新SDK,这就可以工作了

代码语言:javascript
复制
$authorize = new AuthorizeNetAIM(self::AUTHNET_LOGIN, self::AUTHNET_TRANSKEY);
$authorize->setFields(array(
        'amount' => '0.01',
        'card_num' => $cardNumber,
        'exp_date' => $expDate
));

$response = $authorize->authorizeOnly();
if ($response->response_code == 1) {
        // good card
}else{
     // bad card
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18450602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档