2017-02-05 3 views
0

나는 페이팔 체인 지불로 테스트를하려고하고 있는데, 정말 실망 스럽다. 이 테스트의 목표는 주 수신기를 $ 15, $ 1을 보조 수신기에 보내는 것입니다. 여기 내 코드입니다 :PayPal Chained Payment Help [PHP]

{"paymentInfo":[{"receiver":{"amount":"1.00","email":"[email protected]","primary":"false","paymentType":"SERVICE","accountId":"6LBSVJQNVE9DA"},"pendingRefund":"false"}]}

: 나는이 작업을 수행 할 때

$api = "https://svcs.sandbox.paypal.com/AdaptivePayments/Pay"; 

$input = array(
    "actionType" => "PAY", 
    "currencyCode" => "USD", 
    "feesPayer" => "EACHRECEIVER", 
    "cancelUrl" => "https://www.google.com", //test url 
    "returnUrl" => "https://www.google.com", //test url 
    "receiverList" => array( 
     "receiver" => array(//send primary receiver $15 
      "amount" => "15.00", 
      "email" => "[email protected]", 
      "primary" => true 
     ), 
     "receiver" => array(//send owner of site $1 commission 
      "amount" => "1.00", 
      "email" => "[email protected]", 
      "primary" => false 
     ) 
    ), 
    "requestEnvelope" => array(
     "errorLanguage" => "en_US" 
    ) 
); 

$headers = array(
    "X-PAYPAL-SECURITY-USERID: ".USER_ID, //predefined 
    "X-PAYPAL-SECURITY-PASSWORD: ".USER_PASS, //predefined 
    "X-PAYPAL-SECURITY-SIGNATURE: ".USER_SIG, //predefined 
    "X-PAYPAL-REQUEST-DATA-FORMAT: JSON", 
    "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON", 
    "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T" 
); 

$ch = curl_init($api); 

curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($input)); 

$response = curl_exec($ch); 
var_dump($response); 

, 그것은 작동하지만, 결제 정보에서 단지 보조 수신기에 $ 1 보여 주 수신기의 흔적이 없다

나는 "PAY_PRIMARY"에 "actionType"를 설정 시도하고 나에게이 오류 준 :

"message":"Invalid request parameter: action type PAY_PRIMARY can only be used in chained payments","parameter":["PAY_PRIMARY"]

내가 YouTube에서 살펴본 것처럼 그것은 아주 실망 점점

, 유래, 어떤 포럼 웹 사이트 등 많은 도움이되는 정보를 찾지 못했습니다.

시간을내어 읽어 주시고 저를 도와 주실 분께 고맙습니다!

+0

페이팔의 세계에 오신 걸 환영합니다. – Martin

답변

0

당신의 실수가 여기에 PHP 배열 구문입니다 : 연관 배열은 각 키에 대해 하나 개의 값을 가질 수

"receiverList" => array( 
    "receiver" => array(/*primary receiver info*/), 
    "receiver" => array(/*secondary receiver info*/) 
), 

(배열에서이 방법을 $receiverList['receiver']을 선언 접근 상상 왜 사진합니다, 그것은 같으면 ' 당신이 원하는 것을 알지 못합니다.)

PHP의 경우 이것은 $foo = 1; $foo = 2;과 같으며 1과 2가 여전히 어딘가에있을 것으로 예상됩니다. 그래서 모든 페이팔로 전송 가도록 이것이다 : 당신이 json_encode($input)을 에코 경우

"receiverList" => array( 
    "receiver" => array(/*secondary receiver info*/) 
), 

당신은 자신이 볼 수 있습니다.

배열의 모양을 알 수는 없지만 실제로는 그렇지 않습니다. 설명서를 보지 않고 내 추측에는 키가 지정되지와 함께 간단한 목록이 될 것입니다 :

"receiverList" => array( 
    array(/*primary receiver info*/), 
    array(/*secondary receiver info*/) 
), 

또는 아마도 "recevier" 키 요구가 될, 두 항목은 내부에 :

"receiverList" => array(
    "receiver" => array(
     array(/*primary receiver info*/), 
     array(/*secondary receiver info*/) 
    ) 
), 

또는 아마 당신이 문서를 오해 한 더 "receiverList"키 만 "수신기"없다 :이 중 변형

"receiver" => array( 
    array(/*primary receiver info*/), 
    array(/*secondary receiver info*/) 
), 

가, 나머지를 변경 아무 소용이 없다 당신이이 비트를 얻을 때까지 귀하의 질의를 지금 당장 당신은 오직 하나의 수신기 세부 정보를 Paypal으로 보내기 때문입니다.

+0

@ 콜라 더 많은 설명과 더 많은 가능성으로 내 대답을 업데이트했습니다. 어느 것이 옳은지는 모르겠지만, 질문에 넣은 것이 틀리다고 정확히 100 % 확신하고, 당신이 묘사하는 증상을 정확히 나타낼 것입니다. – IMSoP

+0

정말 고마워요! 나는 전체적으로 PHP와이 전체 프로그래밍을 처음 접했고 당신은 정말로 나를 도왔다. 시간을 내 주셔서 고맙습니다. 정말 고맙습니다. – cola

+0

@cola http://stackoverflow.com/questions/24845135/paypal-payments-to-multiple-receivers-adaptive-payments를 참조하십시오. 예제 코드는 https://github.com/angelleye/paypal-php-library/blob/master/samples/Pay-Chained에 있습니다.php는 IMSoP의 "가장 좋은 추측"이라는 제안이 올바른 해결책임을 시사합니다. –