2017-02-05 42 views
0

私はちょうどペイパルチェーン決済でテストしようとしています。本当にイライラしています。このテストの私の目標は、プライマリレシーバを$ 15、次に$ 1をセカンダリレシーバに送信することです。ここに私のコードです:PayPalチェーン決済ヘルプ[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を示し、主受信機の痕跡はありません

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

私はユーチューブ、stackoverflowの上でそれを見てきた通りになど、いくつかのフォーラムのウェブサイトをかなりイライラなってきた:私は「PAY_PRIMARY」に「actionTypeが」を設定しようと、それは私にこのエラーを与えた

多くの有用な情報を見つけていない。

これを読んで助けてくれる人には、本当にありがとうございます!

+0

「本当にイライラしています。」ペイパルの世界へようこそ。 – Martin

答えて

0

あなたの間違いはここにPHPの配列構文である:

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

連想配列のみを配列から$receiverList['receiver']にアクセス想像し、理由を想像する(各キーに1つの値を持つことができ、このように宣言し、それがwouldnあなたが望むものは分かりません)。

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"キーニーズがあるために、そして2つのエントリは、その内部にある:ドキュメントを見ることなく私の最高の推測では、指定されていないキーを持つ単純なリストになり

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

かおそらくあなたは、ドキュメントを読み違えてきましたし、何も「receiverList」キー、唯一の「受信機」は存在しない:それはどちらのバリアント

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

は、残りの部分を変更しない点はありません今すぐあなたがこのビットを取得するまであなたのクエリの、あなたはPaypalに受信者の詳細の1つのセットを送信しているので

+0

@cola私はより多くの説明といくつかの可能性を持って私の答えを更新しました。私はどちらが正しいかはわかりませんが、私はあなたの質問に入れたものが間違っていることを100%確信しており、あなたが描いている症状を正確に導くでしょう。 – IMSoP

+0

ありがとうございました!私はまったく新しいプログラミング言語であり、あなたは本当に私を助けました。時間をとってくれてありがとう、本当にありがとう。 – 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の提案が正しい解決策であることを示唆しています。 –

関連する問題