Perl PayPal自适应支付设置PaymentOptions-有效吗?

Perl PayPal自适应支付设置PaymentOptions-有效吗?,perl,paypal,paypal-adaptive-payments,Perl,Paypal,Paypal Adaptive Payments,我一直在尝试(徒劳!)让PayPals SetPaymentOptions API功能正常工作,具体如下: FWIW—我知道下面的不是真正的JSON,而是我正在创建的Perl对象—它在发送之前被转换成JSON(与将所有内容都放在一行=)相比,这样更容易阅读) 到目前为止,我使用“支付”功能()创建了初始支付: 这样做很好,我可以很好地返回支付密钥。当我尝试通过SetPaymentOptions添加装运/单价/税费等时,问题就出现了。下面是我提出的一个请求示例: { payKey =>

我一直在尝试(徒劳!)让PayPals SetPaymentOptions API功能正常工作,具体如下:

FWIW—我知道下面的不是真正的JSON,而是我正在创建的Perl对象—它在发送之前被转换成JSON(与将所有内容都放在一行=)相比,这样更容易阅读)

到目前为止,我使用“支付”功能()创建了初始支付:

这样做很好,我可以很好地返回支付密钥。当我尝试通过SetPaymentOptions添加装运/单价/税费等时,问题就出现了。下面是我提出的一个请求示例:

{
  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"
};