Авторизация. Net подписка с использованием CustomerProfileId Ошибка E00121 Laravel PHP - PullRequest
0 голосов
/ 30 апреля 2020

У меня уже есть клиент, у которого есть права доступа. net Профилировано. Я хотел сделать подписку на основе customerProfileId, предоставленной авторизацией. net.

Я использую эти инструкции с их веб-сайта разработчика

https://developer.authorize.net/api/reference/index.html#recurring-billing-create-a-subscription-from-customer-profile

после запуска я получаю это сообщение об ошибке.

Response : E00121  No default payment/shipping profile found.

Laravel PHP Код

public function createSubscription($request, $customerProfileId, $customerPaymentProfileId, $customerAddressId = null)
{
    /* Create a merchantAuthenticationType object with authentication details
    retrieved from the constants file */
    $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
    $merchantAuthentication->setName(config('services.authorize.login'));
    $merchantAuthentication->setTransactionKey(config('services.authorize.key'));
    // Set the transaction's refId
    $refId = 'ref' . time();

    // Subscription Type Info
    $subscription = new AnetAPI\ARBSubscriptionType();
    $subscription->setName("USLOCAL Subscription");

    $interval = new AnetAPI\PaymentScheduleType\IntervalAType();
    $interval->setLength("1");
    $interval->setUnit("months");

    $paymentSchedule = new AnetAPI\PaymentScheduleType();
    $paymentSchedule->setInterval($interval);
    $paymentSchedule->setStartDate(new \DateTime($request->due_date));
    $paymentSchedule->setTotalOccurrences("999");
    /* $paymentSchedule->setTrialOccurrences("1"); */

    $subscription->setPaymentSchedule($paymentSchedule);
    $subscription->setAmount($this->amount);
    /* $subscription->setTrialAmount("0.00"); */

    $profile = new AnetAPI\CustomerProfileIdType();
    $profile->setCustomerProfileId($customerProfileId);
    $profile->setCustomerPaymentProfileId($customerPaymentProfileId);
    if ($customerAddressId) {
        $profile->setCustomerAddressId($customerAddressId);
    }

    $subscription->setProfile($profile);

    $request = new AnetAPI\ARBCreateSubscriptionRequest();
    $request->setmerchantAuthentication($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")) {
        return [
            'success' => true,
            'message' => "SUCCESS: Subscription ID : " . $response->getSubscriptionId() . "\n",
        ];
    } else {
        $errorMessages = $response->getMessages()->getMessage();
        return [
            'success' => false,
            'message' => "Response : " . $errorMessages[0]->getCode() . "  " . $errorMessages[0]->getText() . "\n",
        ];
    }

    return [
        'success' => false,
        'message' => $response,
    ];
}

Авторизация. net: учетная запись клиента песочницы. enter image description here

У кого-нибудь есть идея, почему я получаю это сообщение об ошибке?

Обратите внимание, что это поставщик услуг, и адрес доставки не требуется.

...