HI,
I have tried to refund amount using the new latest API as mentioned below,
I need to refund amount to particular Customer Payment Profile ID's transaction ID.
How can i do that?
Please reply me as soon as possible.
Thanks.
Kalpesh
Solved! Go to Solution.
10-25-2018 05:22 AM
Hi,
I have own find a solution. I just post here so someone might be useful.
In following code refund to the card either system charged by CIM OR accept.js.
First Get the transaction detail to get the card number if refund to the card whcih was charged by accept.js.
function getTransactionDetails($transactionId) { $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName(AUTHORIZENET_API_LOGIN_ID); $merchantAuthentication->setTransactionKey(AUTHORIZENET_TRANSACTION_KEY); // Set the transaction's refId $refId = 'ref' . time(); $request = new AnetAPI\GetTransactionDetailsRequest(); $request->setMerchantAuthentication($merchantAuthentication); $request->setTransId($transactionId); $controller = new AnetController\GetTransactionDetailsController($request); $response = $controller->executeWithApiResponse( \net\authorize\api\constants\ANetEnvironment::SANDBOX); return $response; }
Make a refund process by following function
function refundTransaction($ary) { $customerProfileId=$ary['customerProfileId']; $customerPaymentProfileId=$ary['customerPaymentProfileId']; echo $customerProfileId."---->".$customerPaymentProfileId; $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName(AUTHORIZENET_API_LOGIN_ID); $merchantAuthentication->setTransactionKey(AUTHORIZENET_TRANSACTION_KEY); $refId = 'ref' . time(); // Set the transaction's refId // Create the payment data for a credit card if($ary['paymnetByAcceptJS']=="yes"){ $creditCard = new AnetAPI\CreditCardType(); $creditCard->setCardNumber($ary['cardnumber']); $creditCard->setExpirationDate("XXXX"); $paymentOne = new AnetAPI\PaymentType(); $paymentOne->setCreditCard($creditCard); }else{ $profileToCharge = new AnetAPI\CustomerProfilePaymentType(); $profileToCharge->setCustomerProfileId($customerProfileId); $paymentProfile = new AnetAPI\PaymentProfileType(); $paymentProfile->setPaymentProfileId($customerPaymentProfileId); $profileToCharge->setPaymentProfile($paymentProfile); } //create a transaction $transactionRequest = new AnetAPI\TransactionRequestType(); $transactionRequest->setTransactionType("refundTransaction"); $transactionRequest->setAmount($ary['amount']); $transactionRequest->setRefTransId($ary['refTransId']); if($ary['paymnetByAcceptJS']=="yes"){ $transactionRequest->setPayment($paymentOne); }else{ $transactionRequest->setProfile($profileToCharge); } $request = new AnetAPI\CreateTransactionRequest(); $request->setMerchantAuthentication($merchantAuthentication); $request->setRefId($refId); $request->setTransactionRequest($transactionRequest); if(isset($ary['isCancelEvent']) && $ary['isCancelEvent']=="Yes"){ $paymenLogRes = $this->addPaymentLog(); }else{ $paymenLogRes=""; } $controller = new AnetController\CreateTransactionController($request); $response = $controller->executeWithApiResponse(AUTHORIZENET_ENVIRONMENT); return $response; }
Hope this might be helpful.
Thanks,
Kalpesh
10-26-2018 03:25 AM
Hi,
I have own find a solution. I just post here so someone might be useful.
In following code refund to the card either system charged by CIM OR accept.js.
First Get the transaction detail to get the card number if refund to the card whcih was charged by accept.js.
function getTransactionDetails($transactionId) { $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName(AUTHORIZENET_API_LOGIN_ID); $merchantAuthentication->setTransactionKey(AUTHORIZENET_TRANSACTION_KEY); // Set the transaction's refId $refId = 'ref' . time(); $request = new AnetAPI\GetTransactionDetailsRequest(); $request->setMerchantAuthentication($merchantAuthentication); $request->setTransId($transactionId); $controller = new AnetController\GetTransactionDetailsController($request); $response = $controller->executeWithApiResponse( \net\authorize\api\constants\ANetEnvironment::SANDBOX); return $response; }
Make a refund process by following function
function refundTransaction($ary) { $customerProfileId=$ary['customerProfileId']; $customerPaymentProfileId=$ary['customerPaymentProfileId']; echo $customerProfileId."---->".$customerPaymentProfileId; $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName(AUTHORIZENET_API_LOGIN_ID); $merchantAuthentication->setTransactionKey(AUTHORIZENET_TRANSACTION_KEY); $refId = 'ref' . time(); // Set the transaction's refId // Create the payment data for a credit card if($ary['paymnetByAcceptJS']=="yes"){ $creditCard = new AnetAPI\CreditCardType(); $creditCard->setCardNumber($ary['cardnumber']); $creditCard->setExpirationDate("XXXX"); $paymentOne = new AnetAPI\PaymentType(); $paymentOne->setCreditCard($creditCard); }else{ $profileToCharge = new AnetAPI\CustomerProfilePaymentType(); $profileToCharge->setCustomerProfileId($customerProfileId); $paymentProfile = new AnetAPI\PaymentProfileType(); $paymentProfile->setPaymentProfileId($customerPaymentProfileId); $profileToCharge->setPaymentProfile($paymentProfile); } //create a transaction $transactionRequest = new AnetAPI\TransactionRequestType(); $transactionRequest->setTransactionType("refundTransaction"); $transactionRequest->setAmount($ary['amount']); $transactionRequest->setRefTransId($ary['refTransId']); if($ary['paymnetByAcceptJS']=="yes"){ $transactionRequest->setPayment($paymentOne); }else{ $transactionRequest->setProfile($profileToCharge); } $request = new AnetAPI\CreateTransactionRequest(); $request->setMerchantAuthentication($merchantAuthentication); $request->setRefId($refId); $request->setTransactionRequest($transactionRequest); if(isset($ary['isCancelEvent']) && $ary['isCancelEvent']=="Yes"){ $paymenLogRes = $this->addPaymentLog(); }else{ $paymenLogRes=""; } $controller = new AnetController\CreateTransactionController($request); $response = $controller->executeWithApiResponse(AUTHORIZENET_ENVIRONMENT); return $response; }
Hope this might be helpful.
Thanks,
Kalpesh
10-26-2018 03:25 AM