PayPal自适应支付SetPaymentOptions - 它有效吗?

时间:2014-04-04 08:50:43

标签: perl paypal paypal-adaptive-payments

我一直在努力(毫无结果!)让 PayPals SetPaymentOptions API 功能正常工作,具体如下:https://developer.paypal.com/docs/classic/api/adaptive-payments/SetPaymentOptions_API_Operation/

FWIW - 我知道下面不是真正的JSON,而是我正在创建的Perl对象 - 在发送之前将其转换为JSON(它更容易读取,如下所示,相比于在一条线上拥有它=))

到目前为止,我使用“付费”功能(https://svcs.sandbox.paypal.com/AdaptivePayments/Pay)创建了初始付款:

{
      requestEnvelope => { 
        detailLevel => "ReturnAll",
        errorLanguage =>  "en_US",
      },
      actionType => "PAY",
      currencyCode => "USD",
      receiverList => {
         receiver => [
           {
              amount => 65,
              email  => 'user1@gmail.com',
              paymentType => "GOODS",
              invoiceId => "test"
           },
            {
              amount => 15,
              email  => 'user2@gmail.com',
              paymentType => "GOODS",               
              invoiceId => "test 2"
           }
         ],  
      },
      returnUrl => 'http://xx.com/thanks.html',
      cancelUrl => 'http://xx.com/cancel.html',
}

这样就可以了,我收回了 payKey 就好了。当我尝试通过 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 请求(https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails)来抓回该交易以查看是否全部保存好了

这总是回来没有运费,税收,单位数字等。我真的不知道最近会发生什么 - 因为如果我要改变(例如)第二次请求中的单位数量,或交货价格...它给我一个错误,数字不匹配!所以它必须承认它 - 但只是没有做任何事情

我真的在这里结束了我的目标(我希望他们快点让REST API完成 - 因为他们看起来比这更有希望......但是现在,我必须做我们在这里使用自适应支付)

更新

这是关于运行ExecutePayment

的意思吗?
my $pass_in_params = {
  payKey => $json_returned->{payKey},
  requestEnvelope => { 
          detailLevel => "ReturnAll",
          errorLanguage =>  "en_US",
  },
  actionType => "CREATE"
};

WAHOO - 终于搞定了!根据安德鲁斯信息,我没有看到ExecutePayment请求的运费/单位/税收的原因是因为我们还没有将它们发送到付款页面(你不能抓住它直到付款完成)。使用Sandbox,您可以登录测试帐户并完美地查看所有单元等。

1 个答案:

答案 0 :(得分:2)

当你使用Pay with CREATE然后在后面调用SetPaymentOptions时,在用ExecutePayment完成之前不会发生任何付款。因此,当您致电PaymentDetails时,无法获取详细信息。

尝试调用ExecutePayment完成任务,然后查看PaymentDetails是否适合您。