Perl PayPal自适应支付设置PaymentOptions-有效吗?
我一直在尝试(徒劳!)让PayPals SetPaymentOptions API功能正常工作,具体如下: FWIW—我知道下面的不是真正的JSON,而是我正在创建的Perl对象—它在发送之前被转换成JSON(与将所有内容都放在一行=)相比,这样更容易阅读) 到目前为止,我使用“支付”功能()创建了初始支付: 这样做很好,我可以很好地返回支付密钥。当我尝试通过SetPaymentOptions添加装运/单价/税费等时,问题就出现了。下面是我提出的一个请求示例:Perl PayPal自适应支付设置PaymentOptions-有效吗?,perl,paypal,paypal-adaptive-payments,Perl,Paypal,Paypal Adaptive Payments,我一直在尝试(徒劳!)让PayPals SetPaymentOptions API功能正常工作,具体如下: FWIW—我知道下面的不是真正的JSON,而是我正在创建的Perl对象—它在发送之前被转换成JSON(与将所有内容都放在一行=)相比,这样更容易阅读) 到目前为止,我使用“支付”功能()创建了初始支付: 这样做很好,我可以很好地返回支付密钥。当我尝试通过SetPaymentOptions添加装运/单价/税费等时,问题就出现了。下面是我提出的一个请求示例: { payKey =>
{
payKey => $json_returned->{payKey},
requestEnvelope => {
detailLevel => "ReturnAll",
errorLanguage => "en_US",
},
receiverOptions => [
{
customId => "foo123",
receiver => {
email => 'andy-facilitator@ultranerds.com'
},
invoiceData => {
item => [{
name => "ITEM1",
price => 50,
itemCount => 2,
itemPrice => 25,
}],
totalTax => 5,
totalShipping => 10,
},
SenderOptions => {
addressOverride => 1,
requireShippingAddressSelection => 1
}
}
]
}
然后,我通过使用PaymentDetails请求()抓回该事务,查看是否所有事务都保存正常
这总是回来没有航运,税收,单位号码,等等。我在一个真正的损失,因为什么发生了-因为如果我要改变(例如)在第二次请求的单位数量,或交货价格。。。这给了我一个错误,数字不匹配!因此,它必须认识到这一点,但只是不做任何事情
我在这里真的是不知所措(我希望他们能快点完成剩下的API——因为它们看起来比这更有希望……但现在,我不得不将就我们这里的自适应支付)
更新:
这就是您关于运行ExecutePayment
的意思吗
my $pass_in_params = {
payKey => $json_returned->{payKey},
requestEnvelope => {
detailLevel => "ReturnAll",
errorLanguage => "en_US",
},
actionType => "CREATE"
};
哇呼-终于开始工作了!根据Andrews的信息,我没有看到带有
ExecutePayment
请求的shipping/units/tax内容是因为我们还没有将它们发送到付款页面(在付款完成之前,您无法获取)。使用沙箱,您可以登录到一个测试帐户并完美地查看所有单元等 当您在创建时使用Pay,然后在其后面调用SetPaymentOptions时,在使用ExecutePayment完成之前,不会发生付款。因此,当您调用PaymentDetails时,没有要获取的详细信息
尝试致电ExecutePayment完成工作,然后查看PaymentDetails是否更适合您。您是否在致电PaymentDetails之前使用ExecutePayment完成付款?哦,您必须在调用SetPaymentOptions后执行此操作?@AndrewAngel我尝试在
SetPaymentOptions
请求后执行PaymentDetails
请求,但我得到一个错误:此付款请求必须由发送人在test.cgi第16行授权。我正在传递:payKey=>$json\u returned->{payKey},requestEnvelope=>{detailLevel=>“ReturnAll”,errorLanguage=>“en\u US”}
。。。我错过了什么?谢谢在我的情况下,执行是不起作用的。谢谢你的回复。因此,为了确保这一点,您建议我先执行Pay
,然后执行ExecutePayment
,最后(为了测试它是否保存正常),PaymentDetails
?是的。在您运行ExecutePayment之前,您甚至不应该在接收方帐户中看到任何付款。谢谢-当我按该顺序运行时,我得到:错误:此付款请求必须由发送方在test.cgi第170行授权。
(来自ExecutePayment请求)。当我提出“付款”要求时,这是正确的行动,是吗<代码>操作类型=>“支付”,?(因为在某些地方它提到使用更新..但肯定不会在支付请求中调用)当使用SetPaymentOptions时,支付请求需要设置为创建,而不是支付。谢谢-我感觉越来越近了!我现在在Pay中有这样的内容:actionType=>“CREATE”
,但我在执行支付(在设置PaymentOptions之后)时仍然会遇到此错误:此支付请求必须由发件人授权
my $pass_in_params = {
payKey => $json_returned->{payKey},
requestEnvelope => {
detailLevel => "ReturnAll",
errorLanguage => "en_US",
},
actionType => "CREATE"
};