【发布时间】:2014-05-16 11:26:31
【问题描述】:
我一直在尝试(没有结果!)让 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 - 终于成功了!根据 Andrews 的信息,我没有看到 ExecutePayment 请求中的运费/单位/税金的原因是因为我们还没有将它们发送到付款页面(并且您在付款之前无法获取它做完了)。使用沙盒,您可以登录测试帐户并完美查看所有单元等。
【问题讨论】:
-
您是否在调用 PaymentDetails 之前使用 ExecutePayment 完成付款?
-
哦,你必须在调用 SetPaymentOptions 之后这样做吗?
-
@AndrewAngel 我尝试在
SetPaymentOptions请求之后执行PaymentDetails请求,但出现错误:此付款请求必须由发件人在 test.cgi 第 16 行授权。我正在传递:payKey => $json_returned->{payKey}, requestEnvelope => { detailLevel => "ReturnAll", errorLanguage => "en_US" }...我错过了什么?谢谢! -
在我的情况下执行也不起作用
标签: perl paypal paypal-adaptive-payments