Problem: Need guidance on returning the Order->InvoiceNum (or refTransID) while using Accept Hosted Payment form. My attempt (see code below) is not working. Not sure if I'm setting it incorrectly or returning it incorrectly. If there's a way to do this with refTransId, that would be even better.
Background:
-I can successfully complete authcapture transactions using the Accept Hosted payment form. I can also call the TransactionDetail and get a json payload.
I'm sending my custom 'order id' (Session #) in the Order->Invoice number field when I do the authCapture transaction . I tried to put it in both the reference ID field and the refTransID field with no luck. Then I stumbled across a forum post (see below) where the admin says there's a known bug with the Accept Hosted Payment form where the refTransID is not currently working.
This says to use transRefID:
This says transRefid has known bug. Use Order->Invoice Number instead
Thanks
JJ
CODE TO SET THE ORDER
$refId = $_SESSION["SessionNumber"]; //Always unique - returned with the web hook
//$refId =12345;
$input_xml = '<getHostedPaymentPageRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
<merchantAuthentication>
<name>MyLogin</name>
<transactionKey>MyTransKey</transactionKey>
</merchantAuthentication>
<transactionRequest>
<transactionType>authCaptureTransaction</transactionType>
<amount>';
// $input_xml .=3.50 .'</amount>
$input_xml .= $_SESSION["ReceiptTotal"] .'</amount>
<order><invoiceNumber>';
$input_xml .= $refId .'</invoiceNumber></order>
</transactionRequest>
<hostedPaymentSettings>
<setting>
<settingName>hostedPaymentBillingAddressOptions</settingName>
<settingValue>{"show": false, "required":false}</settingValue>
</setting>
<setting>
<settingName>hostedPaymentButtonOptions</settingName>
<settingValue>{"text": "Pay"}</settingValue>
</setting>
<setting>
<settingName>hostedPaymentReturnOptions</settingName>
<settingValue>{ "showReceipt":true, "url":"https://xxxxx.org/IntCampReceiptSuccess.html","urlText":"Continue","cancelUrl":"https://xxxx.org/IntCampReceiptCancel.html","cancelUrlText":"Cancel"}</settingValue>
</setting>
<setting>
<settingName>hostedPaymentPaymentOptions</settingName>
<settingValue>{"cardCodeRequired": true, "showCreditCard": true, "showBankAccount": false}</settingValue>
</setting>
<setting>
<settingName>hostedPaymentOrderOptions</settingName>
<settingValue>{"show": true, "merchantName": "xxxxx"}</settingValue>
</setting>
</hostedPaymentSettings>
</getHostedPaymentPageRequest>';
CODE TO RETRIEVE THE ORDER
<?php
require 'vendor/autoload.php';
use net\authorize\api\contract\v1 as AnetAPI;
use net\authorize\api\controller as AnetController;
define("AUTHORIZENET_LOG_FILE", "phplog");
function getTransactionDetails($transactionId)
{
/* Create a merchantAuthenticationType object with authentication details
retrieved from the constants file */
$merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
// $merchantAuthentication->setName(\SampleCode\Constants::MERCHANT_LOGIN_ID);
// $merchantAuthentication->setTransactionKey(\SampleCode\Constants::MERCHANT_TRANSACTION_KEY);
$merchantAuthentication->setName('Mylogin');
$merchantAuthentication->setTransactionKey('MyTranskey');
// Set the transaction's refId
$refId = 'ref' . time();
$request = new AnetAPI\GetTransactionDetailsRequest();
$request->setMerchantAuthentication($merchantAuthentication);
$request->setTransId($transactionId);
$request->setrefId($refId);
$controller = new AnetController\GetTransactionDetailsController($request);
$response = $controller->executeWithApiResponse( \net\authorize\api\constants\ANetEnvironment::SANDBOX);
if (($response != null) && ($response->getMessages()->getResultCode() == "Ok"))
{
echo "SUCCESS: Transaction Status:" . $response->getTransaction()->getTransactionStatus() . "\n";
echo " Auth Amount:" . $response->getTransaction()->getAuthAmount() . "\n";
echo " Trans ID:" . $response->getTransaction()->getTransId() . "\n";
NEXT LINE DOES NOT WORK
echo " Reference ID/Session Num:" . $response->getTransaction()->getOrder() . "\n";
}
else
{
echo "ERROR : Invalid response\n";
$errorMessages = $response->getMessages()->getMessage();
echo "Response : " . $errorMessages[0]->getCode() . " " .$errorMessages[0]->getText() . "\n";
}
return $response;
}
if(!defined('DONT_RUN_SAMPLES'))
getTransactionDetails("123456...");
?>
06-08-2018 01:46 PM