2014-04-13 3 views
1

계속 오류 # 10400 (주문 누락)이 계속 표시되지만 제외 할 항목을 모르겠습니다. 모든 것이 올바르게 처리되는 것 같습니다. 결제 설정 위치 :익스프레스 체크 아웃 주문 누계가 누락되었습니다

def setcheckout 
    api = PayPal::SDK::Merchant::API.new 


    @set_express_checkout = api.build_set_express_checkout(params[:SetExpressCheckoutRequestType]) 

    # Find Item Total and Order Total 
    details = @set_express_checkout.SetExpressCheckoutRequestDetails 
    pay = details.PaymentDetails[0] 

    pay.PaymentDetailsItem[0].Name = 'Item' 
    pay.PaymentDetailsItem[0].Amount = 1 
    pay.PaymentDetailsItem[0].Quantity = 1 

    pay.ItemTotal = pay.PaymentDetailsItem[0].Amount 
    pay.OrderTotal.currencyID = pay.ItemTotal.currencyID 
    pay.OrderTotal.value = pay.ItemTotal.value.to_f 

    # Notify url 
    #pay.NotifyURL ||= ipn_notify_url 

    # Return and cancel url 
    details.ReturnURL ||= 'http://localhost:3000/confirm' 
    details.CancelURL ||= 'http://localhost:3000/failed' 

    @set_express_checkout_response = api.set_express_checkout(@set_express_checkout) 


    if @set_express_checkout_response.success? 
     redirect_to "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=#{@set_express_checkout_response.Token}" 
    end 
end 

이것은 페이팔로 이동하고 사용자를 인증 한 다음 예상대로 확인 URL로 돌아갑니다. 즉 다음과 같습니다

def confirm 
    session[:token] = params[:token] if params[:token] 
    session[:PayerID] = params[:PayerID] if params[:PayerID] 

    api = PayPal::SDK::Merchant::API.new 
    @do_express_checkout_payment = api.build_do_express_checkout_payment(params[:DoExpressCheckoutPaymentRequestType]) 
    details = @do_express_checkout_payment.DoExpressCheckoutPaymentRequestDetails 
    details.Token = session[:token] 
    details.PayerID = session[:PayerID] 
    #details.PaymentDetails[0].NotifyURL ||= ipn_notify_url 
    @do_express_checkout_payment_response = api.do_express_checkout_payment(@do_express_checkout_payment) if request.post? 
end 

(가) "확인하고 지불"버튼에 게시 된 위 클릭하고, 트랜잭션이 10400 Order total is missing. 오류와 함께 실패하면. 위의 주문 총계를 지정한 것처럼 내게 보이며 총액은 페이팔로 가져갈 때 표시됩니다. 내가 뭘 놓치고 있니?

답변

2

귀하의 DoExpressCheckoutPayment 요청에 총 금액이 표시되지 않습니다 .. ?? SEC에서하는 DECP와 동일한 세부 정보를 포함해야합니다.

버전 112.0부터 그들은 USESESSIONPAYMENTDETAILS 매개 변수를 도입했습니다.이 매개 변수는 DECP로 하여금 참 또는 1로 설정하면 SEC에서 보낸 것을 사용하도록 알려줍니다. 매개 변수의 불일치 여부 그래도 작동합니다. 나는 아직 그것을 직접 테스트하지 않았다.

+0

은 'USESESSIONPAYMENTDETAILS'이 (가) 작동하지 않는 것 같습니다. 확인할 수 있습니까? – Vimalnath

+0

당신이 옳았습니다. 나는 설정에서 Order Total을 전달함으로써 실제로 지불을 시도 할 때 모든 것을 기억했다고 생각했습니다. (그것도 그들의 가이드가 나타나는 방법입니다). 어쨌든 이제는 작동합니다. 감사! – drewwyatt

+0

'USESESSIONPAYMENTDETAILS'는 작동하지만 여전히'PAYMENTREQUEST_0_AMT'을 전달해야합니다. 왜냐하면 DoECP 호출은'USESESSIONPAYMENTDETAILS'을보기 전에 필수 매개 변수를 전달하고 있는지 계속 확인하기 때문입니다. –

관련 문제