2017-09-21 11 views
0

PHP SDKを使用してPayPalからエラー"Item amount must add up to specified amount subtotal (or total if amount details not specified)"が発生しました。PayPal PHP SDKエラー - 指定金額を加算する必要がある金額小計

私は、アイテムの合計が指定された合計と一致しないときにこのエラーが発生することをドキュメントから読み取っています。私の場合を除いて、彼らは追加します。

他の回答を読むことで、アイテムがアイテムごとに集計されていることが分かります。つまり商品の価格*数量ですが、エラーは引き続き発生します。

さらに興味深いのは、です。ユーザーがすでにログインして「今すぐ支払う」ボタンを押した後に、このエラーが発生します。ここで

は、トランザクションオブジェクトは、(配列として)である:

`array (
     'amount' => array (
      'currency' => 'GBP', 
      'total' => '558.48', 
      'details' => array (
       'shipping' => '0', 
       'tax' => '93.08', 
       'subtotal' => '465.40', 
      ), 
     ), 
     'item_list' => array (
      'items' => array (
       0 => array (
        'name' => 'Q-Connect Premium White A4 90gsm Inkjet Paper (500 Pack) KF01090', 
        'currency' => 'GBP', 
        'quantity' => 50, 
        'price' => '7.49', 
       ), 
       1 => array (
        'name' => 'Stabilo Point 88 Fineliner Pen Black (Pack of 10 with 5 neon pens free) UK12/110-8846885', 
        'currency' => 'GBP', 
        'quantity' => 10, 
        'price' => '9.09', 
       ), 
      ), 
     ), 
    )` 

私はすでにそれを試してみたので、それは£0.00だ場合、私は出荷を削除することを示唆していると出荷がある場合、私はまだエラーを取得しないでください> 0

税金は小計+送料で行われます。したがって、この場合(465.40 + 0)×1.2 = 558.48

同様に、465.40 + 93.08 + 0 = 558.48

答えて

1

私はこの問題を解決しました。

[今すぐ支払う]ボタンをクリックした後に支払いを再確認する必要があります。 2回目は、エラーの原因となった金額を間違って送っていました。これは、支払いがすでに送信された後に起こったのです。

+0

私は知っている知っている –

0

あなたは、文字列の代わりに数値として値を渡していました。何らかの丸め誤差が発生しているかもしれません。数字で試してみて、何が起こるかを見てください。数量は、数として正しく渡され

OR

あなたはアカウントPayPalの手数料に取らなければならないかもしれませんが、私はなくてもよいこと

OR

価格についてはかなりよく分かりません個人でも集計しても、私は確信していません...ダブルチェック

または

配列を宣言するとき、最後のカンマを省略しなければならないPHPで

(これはオプションであってもよいし、二重のチェックが... PHPはエラー報告にはかなり緩んでいる)

ペイパルSDKが本当にありますあなたが「今すぐ支払う」htmlボタンのような非常に簡単なことをしない限り、実際には文書化されておらず、扱いが面倒です。ストライプに行く - >https://stripe.com

+0

こんにちは、迅速な対応に感謝します。残念ながら、私はあなたの答えを完全に無視する必要があります。私が投稿した配列は、トランザクションオブジェクト自体の 'toArray()'を呼び出した結果です。私は実際に番号を渡しています、それはポイントAとDを無効にするそれを変換しているペイパルです。 paypal feeは絶対に考慮されておらず、私は集計を使ってみましたが、ログイン段階に入る前に失敗しました。しかし、私は完全にあなたの最後のポイントに同意します:Pは、しかし、ストライプを使用してこの時点で現時点で実行可能なオプションではありません –

関連する問題