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