起初我认为这是一个测试环境错误,但我已经确认它也适用于生产。了解Fees Charged By PayPal
至关重要。
有没有办法让Paypal测试环境(developer.paypal.com)回复PayPal收取的费用? Sale
或{{1>似乎返回实时交易中看到的Sale Lookup
。我们是否被迫使用实时交易进行测试(不是最佳做法)?如果没有您在实时环境中看到的相同费用价值,则难以对我们的会计系统进行单元测试。
Paypal Fee
$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
- 在测试环境中似乎没有公开。
答案 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将被修复。还没有约会。