Hello!
I'm trying to use Accept.js + my Server request to create subscription.
Here a code i found at documentation:
// Set the transaction's refId
$refId = 'ref' . time();
// Subscription Type Info
$subscription = new AnetAPI\ARBSubscriptionType();
$subscription->setName("Socks Subscription ".mt_rand(0,9999));
$interval = new AnetAPI\PaymentScheduleType\IntervalAType();
$interval->setLength(23);
$interval->setUnit("days");
$paymentSchedule = new AnetAPI\PaymentScheduleType();
$paymentSchedule->setInterval($interval);
$paymentSchedule->setStartDate(new DateTime('2019-01-22'));
$paymentSchedule->setTotalOccurrences("12");
$paymentSchedule->setTrialOccurrences("1");
$subscription->setPaymentSchedule($paymentSchedule);
$subscription->setAmount(rand(1,99999)/12.0*12);
$subscription->setTrialAmount("0.00");
$payment = new AnetAPI\PaymentType();
$creditCard = new AnetAPI\CreditCardType();
$creditCard->setCardNumber("4111111111111111");
$creditCard->setExpirationDate("2038-12");
$payment->setCreditCard($creditCard);
$subscription->setPayment($payment);
$order = new AnetAPI\OrderType();
$order->setInvoiceNumber("1234354");
$order->setDescription("Description of the subscription");
$subscription->setOrder($order);
$billTo = new AnetAPI\NameAndAddressType();
$billTo->setFirstName("John");
$billTo->setLastName("Smith");
$subscription->setBillTo($billTo);
$request = new AnetAPI\ARBCreateSubscriptionRequest();
$request->setmerchantAuthentication($this->merchantAuthentication);
$request->setRefId($refId);
$request->setSubscription($subscription);
$controller = new AnetController\ARBCreateSubscriptionController($request);
$response = $controller->executeWithApiResponse( \net\authorize\api\constants\ANetEnvironment::SANDBOX);
if (($response != null) && ($response->getMessages()->getResultCode() == "Ok") )
{
echo "SUCCESS: Subscription ID : " . $response->getSubscriptionId() . "\n";
}
else
{
echo "ERROR : Invalid response\n";
$errorMessages = $response->getMessages()->getMessage();
echo "Response : " . $errorMessages[0]->getCode() . " " .$errorMessages[0]->getText() . "\n";
}It's working well, but it insert card data directly. I want to use Accept.js so i switched
$creditCard = new AnetAPI\CreditCardType();
$creditCard->setCardNumber("4111111111111111");
$creditCard->setExpirationDate("2038-12");
$payment->setCreditCard($creditCard);
to
$opaqueData = new AnetAPI\OpaqueDataType();
$opaqueData->setDataDescriptor("COMMON.ACCEPT.INAPP.PAYMENT");
$opaqueData->setDataValue($opaquedataValue);
$payment->setOpaqueData($opaqueData);
$opaquedataValue contains a value i recieved from Accept.js
So now it's not working and i have ERROR : Invalid response Response : E00114 Invalid OTS Token.
What is wrong?
Please help me :)
12-16-2017 05:14 AM