com.paypal.sdk.services
com.paypal.soap.api.
我已经验证了PayPal api的调用,即此值
包括ssl3和tls1.2.
我指着“沙盒”模式.
但是当调用setExpressCheckout时,我得到一个运行时异常,说:
请求已中止:无法创建SSL / TLS安全通道.
我已经下载了PayPal API Samples项目并使用相同的沙箱凭据,它可以正常工作.看着fiddler,除了示例API调用到api-3t.sandBox.paypal.com之外,调用几乎相同,而我的代码转到api-aa.sandBox.paypal.com,但根据TLS 1.2准备就绪的文档,两个apis应该工作.除了在“live”和“sandBox”之间切换之外,我在任一API中都没有看到设置端点的任何地方.
在小提琴响应中,两者都表明:
“找到了与SSLv3兼容的ServerHello握手.fiddler提取了以下参数.
版本:3.3(TLS / 1.2)“
并且响应是相同的,除了“随机”参数.所以旧的API调用使用的是TLS 1.2
SetExpressCheckoutRequestType request = new SetExpressCheckoutRequestType(); populateRequestObject(request); //populate request data SetExpressCheckoutReq wrapper = new SetExpressCheckoutReq(); wrapper.SetExpressCheckoutRequest = request; Dictionary<string,string> configurationMap = Configuration.GetAcctAndConfig(); //set merchant config PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(configurationMap); SetExpressCheckoutResponseType setECResponse = service.SetExpressCheckout(wrapper); //make the call
我的(再次,非常古老的代码看起来像这样):
CallerServices caller = new CallerServices(); caller.APIProfile = SetProfile.ApplicationProfile; //set merchant config SetExpressCheckoutRequestType pp_request = new SetExpressCheckoutRequestType(); // Create the request details object pp_request.SetExpressCheckoutRequestDetails = new SetExpressCheckoutRequestDetailsType(); pp_request.SetExpressCheckoutRequestDetails.PaymentAction = paymentAction; pp_request.SetExpressCheckoutRequestDetails.PaymentActionSpecified = true; pp_request.SetExpressCheckoutRequestDetails.OrderTotal = new BasicAmountType(); pp_request.SetExpressCheckoutRequestDetails.OrderTotal.currencyID = currencyCodeType; pp_request.SetExpressCheckoutRequestDetails.OrderTotal.Value = paymentAmount; pp_request.SetExpressCheckoutRequestDetails.CancelURL = cancelURL; pp_request.SetExpressCheckoutRequestDetails.ReturnURL = returnURL; return (SetExpressCheckoutResponseType) caller.Call("SetExpressCheckout",pp_request); //do the call
示例代码有效,我的代码抛出SSL / TLS错误.我尝试升级到最新的SDK,但是已经发生了很多变化,迁移所有代码将付出相当大的努力.
从fiddler看来,即使使用旧的API,它似乎也在使用TLS 1.2,但是我得到了关于SSL / TLS连接的运行时异常.是因为端点不同吗?旧的API太旧了吗?
在此先感谢任何帮助 – 我希望避免迁移所有古老的代码!
编辑:我应该提到我使用的是UserName / Password / Signature凭证,而不是基于证书的凭据.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。