我知道有20多个问题,但没有一个是有用的,API文档和其他一些PayPal合作伙伴网站也没有。
生成的XML / SOAP看起来完全如下:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="urn:ebay:apis:eBLBaseComponents"
xmlns:ns2="urn:ebay:api:PayPalAPI">
<SOAP-ENV:Header>
<ns2:RequesterCredentials>
<ns1:Credentials>
<ns1:Username>[FILTERED]</ns1:Username>
<ns1:Password>[FILTERED]</ns1:Password>
<ns1:Signature>[FILTERED]</ns1:Signature>
</ns1:Credentials>
</ns2:RequesterCredentials>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns2:SetExpressCheckoutReq>
<ns2:SetExpressCheckoutRequest>
<ns1:Version>121.0</ns1:Version>
<ns2:SetExpressCheckoutRequestDetails>
<ns1:ReturnUrl>http://localhost/foo</ns1:ReturnUrl>
<ns1:CancelUrl>http://localhost/bar</ns1:CancelUrl>
<ns1:PaymentDetails>
<ns1:OrderTotal currencyID="EUR">100000</ns1:OrderTotal>
</ns1:PaymentDetails>
</ns2:SetExpressCheckoutRequestDetails>
</ns2:SetExpressCheckoutRequest>
</ns2:SetExpressCheckoutReq>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
然而,我得到“Order Total is missing”,我无法理解为什么它不起作用。有什么提示吗?提前谢谢!
答案 0 :(得分:1)
我认为您的XML无效:
<
的 ns1
强> :OrderTotal currencyID="EUR">100000</
的 ns2
强> :OrderTotal>
两个标签都必须是ns1。
答案 1 :(得分:0)
我遇到了同样的问题。问题是SetExpressCheckoutRequestDetails
位于ns1(eBLBaseComponents
)中,而不是ns2(PayPalAPI
)。花了大约六个小时抨击我的头,然后终于搞清楚了。
答案 2 :(得分:0)
在Andrew Wilcox的回答帮助下解决了这个问题。
XML中的违规部分为<ns2:SetExpressCheckoutRequest>
,应使用ns1
而不是ns2
进行命名空间。