2013-08-26 4 views
0

나는 authorize.net 반복 트랜잭션을 사용하고 있습니다. 나는 앞으로 12 개월 동안 반복적으로 원할 경우 기부금을 확인하는 옵션을 제공하려고합니다.Authorize.Net 신용 카드 AIM 및 ARB 확인

그래서 ARB 전에 카드를 확인하려고하지만 0.00은 유효하지 않습니다. 그래서 금액 0.01을 만들면 - 카드가 확인 된 후에 어떻게 거래를 무효화 할 수 있습니까?

또한 구독이 이루어지면 정규 트랜잭션이 처리 될 때처럼 트랜잭션이 생성되었음을 알리는 전자 메일 authorize.net을받지 못합니다.

내 코드 :

$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; 
} 
} 

답변

1

은뿐만 아니라 유효한 양이 0.00이지만, 단지 신용 카드를 확인하려는 경우 그 금액을 사용하는 비자와 마스터 카드에 필요한 합법적이다. 몇 년 전만해도 이러한 이유로 실제 값의 사전 승인을 허용하지 않았습니다. 그렇게하지 못한 상인에게는 벌금이 부과됩니다.

당신이 걸릴거야 경우 "$ 0.01를 부과하고 거래를 무효"그런 말로 미루어 보아, 경로, 다음과 같은 코드가 작동해야합니다

$transaction_id = $authorization->getTransactionID(); 
$void = new AuthnetAIM($apilogin, $apitranskey, true); 
$void->setTransactionType("VOID"); 
$void->setParameter('x_trans_id', $transaction_id); 
$void->process(); 
+0

감사합니다 남자! - 귀하의 튜토리얼을 사용하고 금액을 0.00으로 설정하면 다음과 같은 오류가 발생합니다. "트랜잭션 처리에 대한 필수 정보가 누락되었습니다 : 달러 금액" – Mark

+0

흥미 롭습니다. 어쩌면 내가 상인 계정 관련 물건에 연루된 이후로 상황이 바뀌었을 수도 있습니다. 그러나 당신이 그 오류를 얻고 있다면 .01 작품은 확실히 그 경로를 가져 가라. –

+0

그래서 권한 부여 직후에 새 코드를 삽입합니까? 나는 0.01의 영수증에 대한 이메일을 받았다 - 이것은 그날의 무효화를 의미 할까? – Mark

3

을 새로운 SDK와 함께 권한 부여를 위해이 것 직장

$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 
}