2014-01-24 3 views
2

안녕하십니까. m using paypal express checkout with the merchant sdk. I have implemented recurring payment using the integration manual, but the given example doesn t 초기 지불 (사용자에게 즉시 청구). 지불을 만들기위한 내 코드는 다음과 같습니다페이팔 초기 지불을 통한 반복 지불

는 지불을 초기화 :

$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 시간 동안 계류 중이다. 나는 공개 토론과 etc.에서 읽었다 ... 이것은 샌드 박스 문제점이었다 그러나 unfortunetly 나는 지불이 deleyd이지 않을 것이라는 점을 확실 할 수 없다. 제 경우에는 즉시 지불을 받아야합니다. 내 새로운 질문은, 반복 지불 프로필을 만들 때 계정에 대한 응답 (성공 또는하지 않음)이며 프로필이 보류 중입니다. 나는 성공적으로 지불액을 계산하고 확실하게 돈을 벌 수 있는지 확인하십시오.

시간 내 주셔서 감사합니다. 감사합니다, 게오르기

+0

귀하의 요청에 실제 초기 지불 매개 변수가 표시되지 않습니다. 그것이 당신이 의미하는 바가 틀림 없습니까, 아니면 그냥 들어야 할 첫 번째 지불에 대해 이야기하고 있습니까? 실제 "초기 지불"은 프로파일 작성시 청구 할 수있는 프로파일과는 별도로 1 회만 지불하게됩니다. 예를 들어, 케이블 가입에 대한 설정 수수료와 같습니다. API를 생성하는 코드와 반대되는 실제 API 요청 샘플을 게시하고 게시하십시오. –

답변

0

꽤 늦었지만 비슷한 우려가 있습니다. 지불 프로필을 반복 만들 때

나의 새로운 질문은, 및 계정에 대한 응답 확인 (succes에 여부 무엇)이며, 프로파일은 내가 성공적으로 지불을 계산 얻을 i`ll 확신 할 수 보류 확실히 돈?

현재 처리 중이지만 PayPal에 결제액이 반영 될 때까지는 지불하지 않습니다. 나는 IPN을 활용하여 지불이 이루어질 때 만들어 져야 할 행동을 촉발시킬 것입니다. PayPal에 의한 4 ~ 5 시간 처리에 관해서는 (웹 출처에서 생산에 동일한 지연이 없어야 함) 구매자에게 PayPal에서 여전히 지불이 처리되고 있음을 알릴 것입니다.

관련 문제