gpt4 book ai didi

php - Paypal 自适应链式支付 - 发件人的金额是主要收款人的金额而不是总金额。怎么修?

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:49 24 4
gpt4 key购买 nike

我正在开发一项服务,在该服务中,发件人支付一定金额,其中 95% 给一个收件人,5% 给另一个收件人。 (例如,支付 100 美元,初级费用减去 95 美元,二级费用减去 5 美元。)在这个例子中,发件人看到他要支付的金额是 95 美元,而不是 100 美元,我不明白为什么。

这是在与另一个 Paypal 电子邮件地址数组相对应的数组中设置金额的地方。

$receiverAmountArray = array(
.5*$backing_amount,
.95*$backing_amount
);

第二个电子邮件地址设置为主。最大金额的接收者必须是主要的。

$receiverPrimaryArray = array(
'false',
'true'
);

CallPay(来自 Paypal 的库)被称为:

$resArray = CallPay ($actionType, $cancelUrl, $returnUrl, $currencyCode, $receiverEmailArray,
$receiverAmountArray, $receiverPrimaryArray, $receiverInvoiceIdArray,
$feesPayer, $ipnNotificationUrl, $memo, $pin, $preapprovalKey,
$reverseAllParallelPaymentsOnError, $senderEmail, $trackingId
);

这是 CallPay 函数。抱歉长度:

function CallPay( $actionType, $cancelUrl, $returnUrl, $currencyCode, $receiverEmailArray, $receiverAmountArray,
$receiverPrimaryArray, $receiverInvoiceIdArray, $feesPayer, $ipnNotificationUrl,
$memo, $pin, $preapprovalKey, $reverseAllParallelPaymentsOnError, $senderEmail, $trackingId )
{
/* Gather the information to make the Pay call.
The variable nvpstr holds the name value pairs
*/

// required fields
$nvpstr = "actionType=" . urlencode($actionType) . "&currencyCode=" . urlencode($currencyCode);
$nvpstr .= "&returnUrl=" . urlencode($returnUrl) . "&cancelUrl=" . urlencode($cancelUrl);

if (0 != count($receiverAmountArray))
{
reset($receiverAmountArray);
while (list($key, $value) = each($receiverAmountArray))
{
if ("" != $value)
{
$nvpstr .= "&receiverList.receiver(" . $key . ").amount=" . urlencode($value);
}
}
}

if (0 != count($receiverEmailArray))
{
reset($receiverEmailArray);
while (list($key, $value) = each($receiverEmailArray))
{
if ("" != $value)
{
$nvpstr .= "&receiverList.receiver(" . $key . ").email=" . urlencode($value);
}
}
}

if (0 != count($receiverPrimaryArray))
{
reset($receiverPrimaryArray);
while (list($key, $value) = each($receiverPrimaryArray))
{
if ("" != $value)
{
$nvpstr = $nvpstr . "&receiverList.receiver(" . $key . ").primary=" . urlencode($value);
}
}
}

if (0 != count($receiverInvoiceIdArray))
{
reset($receiverInvoiceIdArray);
while (list($key, $value) = each($receiverInvoiceIdArray))
{
if ("" != $value)
{
$nvpstr = $nvpstr . "&receiverList.receiver(" . $key . ").invoiceId=" . urlencode($value);
}
}
}

// optional fields
if ("" != $feesPayer)
{
$nvpstr .= "&feesPayer=" . urlencode($feesPayer);
}

if ("" != $ipnNotificationUrl)
{
$nvpstr .= "&ipnNotificationUrl=" . urlencode($ipnNotificationUrl);
}

if ("" != $memo)
{
$nvpstr .= "&memo=" . urlencode($memo);
}

if ("" != $pin)
{
$nvpstr .= "&pin=" . urlencode($pin);
}

if ("" != $preapprovalKey)
{
$nvpstr .= "&preapprovalKey=" . urlencode($preapprovalKey);
}

if ("" != $reverseAllParallelPaymentsOnError)
{
$nvpstr .= "&reverseAllParallelPaymentsOnError=" . urlencode($reverseAllParallelPaymentsOnError);
}

if ("" != $senderEmail)
{
$nvpstr .= "&senderEmail=" . urlencode($senderEmail);
}

if ("" != $trackingId)
{
$nvpstr .= "&trackingId=" . urlencode($trackingId);
}

/* Make the Pay call to PayPal */
$resArray = hash_call("Pay", $nvpstr);

/* Return the response array */
return $resArray;
}

这是 $nvpstr 在调用之前的值。 Paypal是否可能只是将付款金额作为主要付款?这在链式支付的背景下没有意义。

actionType=PAY¤cyCode=USD&returnUrl=https%3A%2F%2F.com%2Fview_profile.php&cancelUrl=https%3A%2F%2Fexamplefunding.com%2Fview_profile.php&receiverList.receiver(0).amount=95&receiverList.receiver(1).amount=5&receiverList.receiver(0).email=recip_1334204171_biz%40example.com&receiverList.receiver(1).email=example_1334201682_biz%40example.com&receiverList.receiver(0).primary=true&receiverList.receiver(1).primary=false&receiverList.receiver(0).invoiceId=5c4e2902cbe484a0db37284f0144994c&receiverList.receiver(1).invoiceId=6f3d8ce65d1a59b41f8822ba6129ea58&feesPayer=PRIMARYRECEIVER&memo=New+Draft+Lines+-+ExampleFunding.com&senderEmail=paypal_1334201496_per%40example.com&trackingId=mqN8SSgIq

最佳答案

根据 Paypal's Adaptive Payments Documentation :

In a chained payment, the sender pays the primary receiver an amount, from which the primary receiver pays secondary receivers. The sender only knows about the primary receiver, not the secondary receivers.

因此,这是按预期工作的。为了将总金额的 5% 支付给辅助接收方,我必须更改此设置:

$receiverAmountArray = array(
.05*$backing_amount,
.95*$backing_amount
);

为此:

$receiverAmountArray = array(
.05*$backing_amount,
$backing_amount
);

我错误地认为总金额是数组中各个接收方金额的总和。

关于php - Paypal 自适应链式支付 - 发件人的金额是主要收款人的金额而不是总金额。怎么修?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10129627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com