我目前正在使用 JAVA 实现 Paypal 的快速结帐,并与 PayPal NVP API 接口。我的 SetExpressCheckout、GetExpressCheckoutDetails、DoExpressCheckout、DoAuthorization 和 DoCapture 方法都在工作。但是,我需要实现即时更新 API 来计算我们服务器上的运费和税金并显示在贝宝的页面上。我遵循了所有步骤和建议,但是,从未调用过回调。我曾尝试使用 setExpressCheckout 参数,因为我在此论坛中读到这些参数可能是问题所在,但还不能使其正常工作。当我登录或更改送货地址时,永远不会调用回调,顺便说一句,我处于沙盒环境中。
我的回调 url 是公开的并且可以正常工作。尝试使用网络浏览器时,它会调用我的 payPalCheckoutUpdate 方法并写入我服务器的日志文件中,所以我很肯定该 url 被调用了。问题是当我登录贝宝的结帐移动网站或更改送货地址时,永远不会调用此回调 url。
我的 paypal 更新方法托管在基于 Apache Ofbiz 的应用程序中,我在不同的论坛中发现 paypal 无法访问端口 8443 或 8080 中的 ofbiz url。所以我使用 apache 从我的回调 URL 重定向到我的实际方法并避免使用回调 url 中的端口不同于 80。(使用网络浏览器测试时效果很好)
这是我在没有凭据的情况下对 setExpressCheckout 的调用(如果您在此调用中发现问题,请告诉我)
372623 [http-0.0.0.0-8443-3] 信息 com.paypal.sdk.core.nvp.NVPAPICaller - L_SHIPPINGOPTIONAMOUNT0=0.00&CANCELURL=https%3A%2F%2Fdev2.XXXjacker.com%3A8443%2FXXXjacker%2Fcontrol%2FpayPalCheckoutCancel&MAXAMT= 80.99&L_SHIPPINGOPTIONLABEL0=Calculated+Offline&AMT=80.99&RETURNURL=https%3A%2F%2Fdev2.XXXjacker.com%3A8443%2FXXXjacker%2Fcontrol%2FpayPalCheckoutReturn&CALLBACK=http%3A%2F%2Fdev2.XXXjacker.com%2FpayPalCheckoutUpdate&L_SHIPPINGOPTIONISDEFAULT0=true&L_AMT0=80.99&TAXAMT=0.00 &L_QTY0=1&L_NUMBER0=286202&SHIPPINGAMT=0.00&L_NAME0=DVD+%2B+VCR+w%2F+Line+in+%28no+tuner%29&ITEMAMT=80.99&CALLBACKVERSION+=84.0&VERSION=84.0&L_SHIPPINGOPTIONNAME0=Calculated+Offline&CALLBACKCheckout&CALLBACKTIMEOUT=3&L_SHIPPINGOPTIONNAME0=已计算+离线&SETPWDCheckout& OUTCYMETHOD =USD& &源=PAYPAL_JAVA_SDK_76.0&SIGNATURE= * ***&USER=xxxxx_12xxxx643_biz_api1.xxxxxxxxxxxxx.com
我尝试了使用和不使用 L_SHIPPINGOPTIONLABEL0 参数,还尝试了将 version 和 callbackversion 设置为 76.0(我正在使用的 java 库的默认设置,取自 paypal)我总是得到相同的结果,回调 url 没有被调用。
这是来自贝宝的回应:
373536 [http-0.0.0.0-8443-3] INFO com.paypal.sdk.core.nvp.NVPAPICaller - TOKEN=EC%2dXXXXXXXX03911650G&TIMESTAMP=2012%2d06%2d12T22%3a03%3a06Z&CORRELATIONID=f1e3c64211d5e&ACK=Success&VERSION=84%2e0&BUILD=2975009确认:200 经过时间:914 毫秒
预先感谢您在此问题上提供的帮助。