我一直在尝试(徒劳!)让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 => $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
}
}
]
}
然后,我通过使用付款详细信息请求(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"
};
哇 - 终于让它工作了! 根据 Andrews 的信息,我没有在ExecutePayment
请求中看到运费/单位/税费的原因是因为我们还没有将它们发送到付款页面(在付款完成之前您无法获取它)。使用沙盒,您可以登录到测试帐户并完美地查看所有单位等。
然后在其后调用 SetPaymentOptions 时,在您使用 ExecutePayment 完成付款之前,不会发生任何付款。 因此,当您致电付款详细信息时,无法获得任何详细信息。
尝试调用ExecutePayment来完成工作,然后看看PaymentDetails是否更适合您。