2014-01-24 3 views
2

Hello i m using paypal express checkout with the merchant sdk. I have implemented recurring payment using the integration manual, but the given example doesn t внести первоначальный взнос (зарядите пользователя сразу). Моего кода для совершения платежа является:paypal единовременный платеж с первоначальной оплатой

Инициализации оплаты:

$cart = $this->cart->getCart(); 
    $items = $cart['items']; 
    $itemTotal = 0; 

    foreach ($items as $k => $item) { 
     $product = $this->addItem($item); 
     $itemTotal += $product->Amount; 
     $this->paymentDetails->PaymentDetailsItem[$k] = $product; 
    } 

    $this->orderTotal->currencyID = 'USD'; 
    $this->orderTotal->value = $this->cart->getCartAmount(); 

    $this->paymentDetails->OrderTotal = $this->orderTotal; 
    $this->paymentDetails->PaymentAction = 'Sale'; 
    $this->paymentDetails->InvoiceID = $invoice_id->{'$id'}; 

    $setECReqDetails = new \PayPal\EBLBaseComponents\SetExpressCheckoutRequestDetailsType(); 
    $setECReqDetails->PaymentDetails[0] = $this->paymentDetails; 
    $setECReqDetails->CancelURL = $this->cancelURL; 

    $setECReqDetails->ReturnURL = $this->returnURL; 

    $billingAgreementDetails = new \PayPal\EBLBaseComponents\BillingAgreementDetailsType('RecurringPayments'); 
    $billingAgreementDetails->BillingAgreementDescription = 'recurringbilling'; 
    $setECReqDetails->BillingAgreementDetails = array($billingAgreementDetails); 

    $setECReqType = new \PayPal\PayPalAPI\SetExpressCheckoutRequestType(); 
    $setECReqType->Version = $this->version; 
    $setECReqType->SetExpressCheckoutRequestDetails = $setECReqDetails; 

    $setECReq = new \PayPal\PayPalAPI\SetExpressCheckoutReq(); 
    $setECReq->SetExpressCheckoutRequest = $setECReqType; 

    return $this->paypalService->SetExpressCheckout($setECReq); 

А потом на обратном URL я поставляюсь я создать повторяющийся платеж с этим кодом:

$profileDetails = new \PayPal\EBLBaseComponents\RecurringPaymentsProfileDetailsType(); 
    $profileDetails->BillingStartDate = "2014-01-24T00:00:00:000Z"; 

    $paymentBillingPeriod = new \PayPal\EBLBaseComponents\BillingPeriodDetailsType(); 
    $paymentBillingPeriod->BillingFrequency = 10; 
    $paymentBillingPeriod->BillingPeriod = "Day"; 
    $paymentBillingPeriod->Amount = new \PayPal\CoreComponentTypes\BasicAmountType("USD", "1.0"); 
    $scheduleDetails = new \PayPal\EBLBaseComponents\ScheduleDetailsType(); 
    $activationDetails = new \PayPal\EBLBaseComponents\ActivationDetailsType(); 
    $activationDetails->InitialAmount = new \PayPal\CoreComponentTypes\BasicAmountType('USD', 49); 
    $activationDetails->FailedInitialAmountAction = 'ContinueOnFailure'; 
    $scheduleDetails->Description = "recurringbilling"; 
    $scheduleDetails->ActivationDetails = $activationDetails; 
    $scheduleDetails->PaymentPeriod = $paymentBillingPeriod; 

    $createRPProfileRequestDetails = new \PayPal\EBLBaseComponents\CreateRecurringPaymentsProfileRequestDetailsType(); 
    $createRPProfileRequestDetails->Token = $token; 

    $createRPProfileRequestDetails->ScheduleDetails = $scheduleDetails; 
    $createRPProfileRequestDetails->RecurringPaymentsProfileDetails = $profileDetails; 

    $createRPProfileRequest = new \PayPal\PayPalAPI\CreateRecurringPaymentsProfileRequestType(); 
    $createRPProfileRequest->CreateRecurringPaymentsProfileRequestDetails = $createRPProfileRequestDetails; 

    $createRPProfileReq = new \PayPal\PayPalAPI\CreateRecurringPaymentsProfileReq(); 
    $createRPProfileReq->CreateRecurringPaymentsProfileRequest = $createRPProfileRequest; 

    return $this->paypalService->CreateRecurringPaymentsProfile($createRPProfileReq); 
} 

В моем я вижу, что повторяющийся платеж создается, но первоначального платежа нет. Мой вопрос: как я могу настроить этот повторяющийся платеж, чтобы был произведен первоначальный платеж?

Надеюсь, что я хорошо объяснил свою проблему. Если вам нужен дополнительный комментарий.

EIDT: Мой вопрос заключается в том, как создать повторяющийся платеж с первоначальной оплатой. и я отредактировал свой фрагмент кода. После некоторого чтения я увидел, что я пропустил настройку с настройкой «ActivationDetailsType». Я настроил его, и он отлично справляется с одной проблемой ... Профиль оплаты находится на рассмотрении в течение 4-5 часов, а затем проходит. Я читал в форумах и т. Д. ... что это была проблема с песочницей, но, к сожалению, я не могу быть уверен, что платеж не будет отменен. В моем случае мне нужно, чтобы платеж был одобрен сразу. Мой новый вопрос заключается в том, что при создании повторяющегося профиля платежей и ответа для учетной записи все в порядке (успешно, а что нет), и профиль ожидает ответа. Я могу считать платеж успешным и уверен, что я получу деньги точно

Спасибо, что нашли время. С уважением, Georgi

+0

Я не вижу фактических параметров первоначального платежа в вашем запросе. Вы уверены, что это то, что вы имеете в виду, или вы просто говорите о первом платеже в профиле, который должен пройти? Фактический «первоначальный платеж» будет разовым платежом отдельно от профиля, который вы можете взимать при создании профиля. Например, плата за установку для кабельной подписки. Пожалуйста, подтвердите это и опубликуйте образец вашего фактического запроса API, а не код, который его генерирует. –

ответ

0

Довольно поздно, но у меня схожие проблемы.

Мой новый вопрос, при создании повторяющегося профиля оплаты, и ответ на счет в порядке (Сукчес или что нет), и профиль в очереди может я рассчитывать платеж как успешный и быть уверенным, я` получить деньги наверняка?

В настоящее время я работаю над этим, но я не буду считать оплату до тех пор, пока PayPal не отразит платеж. Я бы использовал IPN, чтобы инициировать действия, которые должны быть предприняты при осуществлении платежа. Что касается 4-5-часовой обработки PayPal (хотя источники из Интернета говорят, что производство не должно иметь такой же задержки), я просто обязательно уведомит покупателя о том, что его/ее платеж все еще обрабатывается PayPal.

Смежные вопросы