我一直在努力(毫无结果!)让 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,您可以登录测试帐户并完美地查看所有单元等。
答案 0 :(得分:2)
当你使用Pay with CREATE然后在后面调用SetPaymentOptions时,在用ExecutePayment完成之前不会发生任何付款。因此,当您致电PaymentDetails时,无法获取详细信息。
尝试调用ExecutePayment完成任务,然后查看PaymentDetails是否适合您。