Paypal REST API Bug - 由PayPal收取的费用未设置为响应

时间:2013-05-02 21:18:27

标签: paypal paypal-sandbox

更新:问题同时适用于TEST和LIVE API请求

起初我认为这是一个测试环境错误,但我已经确认它也适用于生产。了解Fees Charged By PayPal至关重要。


有没有办法让Paypal测试环境(developer.paypal.com)回复PayPal收取的费用? Sale或{{1>似乎返回实时交易中看到的Sale Lookup我们是否被迫使用实时交易进行测试(不是最佳做法)?如果没有您在实时环境中看到的相同费用价值,则难以对我们的会计系统进行单元测试。

请求 - 存储卡的信用卡费用($ 43)

Paypal Fee

响应 - 已批准(full response

        $cardToken = new CreditCardToken();
        $cardToken->setCredit_card_id( $cc->getRefid() );

        $fi = new FundingInstrument();
        $fi->setCredit_card_token( $cardToken );

        $payer = new Payer();
        $payer->setPayment_method('credit_card');
        $payer->setFunding_instruments(array($fi));

        $amount = new Amount();
        $amount->setCurrency('USD');
        $amount->setTotal('43.00');

        $transaction = new Transaction();
        $transaction->setAmount($amount);
        $transaction->setDescription($note);

        $payment = new Payment();
        $payment->setIntent('sale');
        $payment->setPayer($payer);
        $payment->setTransactions(array($transaction));

        $response = $payment->create();

文档 - PayPal\Api\Transaction Object ( [_propMap:PPModel:private] => Array ( [amount] => PayPal\Api\Amount Object ( [_propMap:PPModel:private] => Array ( [total] => 43.00 [currency] => USD [details] => PayPal\Api\AmountDetails Object ( [_propMap:PPModel:private] => Array ( [subtotal] => 43.00 ) ) ) )

(图片下方) - 详细信息对象from the documentation显示Fee Charged By PayPal - 在测试环境中似乎没有公开。

enter image description here

3 个答案:

答案 0 :(得分:1)

使用NVP API(GetTransactionDetails请求)代替标准REST响应或在标准REST响应旁边返回更准确的详细信息。如果您有兴趣,我可以发布一个PHP示例。

REST API允许您执行诸如管理信用卡保险库之类的操作..因此您可以存储卡并使用REST为卡充电..但是当我收费时,我会返回包含{的NVP API GetTransactionDetails响应{1}}以及您需要了解的有关通过REST收取的交易的所有其他信息。它可能是一个黑客,并涉及额外的API调用,但它工作得很好。

答案 1 :(得分:0)

现在可以在REST api上使用。 Specifically, via the transaction_fee on the sale object.

您还可以通过向下钻取来从付款对象访问transaction_fee。这是一个(略微编辑的)示例响应:

{
  "id": "PAY-5YK922393D847794YKER7MUI",
  "state": "approved",
  "intent": "sale",
  "payer": {...},
  "transactions": [
    {
      "related_resources": [
        {
          "sale": {
            "id": "36C38912MN9658832",
            "state": "completed",
            "amount": {
              "total": "7.47",
              "currency": "USD"
            },
            "transaction_fee": {
              "value": "1.75",
              "currency": "USD"
            }
          }
        }
      ]
    }
  ]
}

对于那些在家中跟随的人,您可以通过以下简单直观的代码行获得此笔付款的交易费用价值:

payment.transactions[0].related_resources[0].sale.transaction_fee.value

请参阅?简单。哦,但请记住 - 在付款执行完之后,销售对象才会存在。

如果你想要一些轻读,这是一个massive ticket on the Ruby SDK about how this feature was added

答案 2 :(得分:-1)

看起来已知的bug将被修复。还没有约会。