4

在过去的几个月里,我正在实施一个在线商店,并将其成功连接到贝宝的沙盒,用于贝宝支付专业网关。它从一开始就完美无缺。

因为在周末它不再工作了。商店给我以下错误:

    调用支付网关时出错

    跟踪给了我这个错误:

    无法创建 SSL/TLS 安全通道

    页面 URL:/checkoutreview.aspx 来源:System.Web.Services 消息:请求被中止:无法创建 SSL/TLS 安全通道。
  堆栈跟踪:
     在 System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest 请求)
     在 System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest 请求)
     在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串方法名,对象 [] 参数)
     在 C:\Development\Natrol\AspDotNetStorefront\ASPDNSFGateways\PayPalSvcAPIv30.cs:line 956 中的 AspDotNetStorefrontGateways.Processors.PayPalAPIAASoapBinding.DoDirectPayment(DoDirectPaymentReq DoDirectPaymentReq)
     在 AspDotNetStorefrontGateways.Processors.PayPal.ProcessCard(Int32 OrderNumber、Int32 CustomerID、十进制 OrderTotal、布尔 useLiveTransactions、TransactionModeEnum TransactionMode、地址 UseBillingAddress、String CardExtraCode、地址 UseShippingAddress、String CAVV、String ECI、String XID、String& AVSResult、String& AuthorizationResult、String& AuthorizationCode , String& AuthorizationTransID, String& TransactionCommandOut, String& TransactionResponse) 在 C:\Development\Natrol\AspDotNetStorefront\ASPDNSFGatewayProcessors\GatewayPayPal\PayPal.cs:line 415
     在 C:\Development\Natrol\AspDotNetStorefront\ASPDNSFGateways\GatewayTransaction.cs:line 205 中的 AspDotNetStorefrontGateways.GatewayTransaction.CallGateway(String gateway)
     在 C:\Development\Natrol\AspDotNetStorefront\ASPDNSFGateways\GatewayTransaction.cs:line 176 中的 AspDotNetStorefrontGateways.GatewayTransaction.Process()

这里发生了什么 ?知道发生了什么以及如何解决它?为什么会突然坏掉?

谢谢,迈克尔

4

3 回答 3

9

如果您使用的是 paypal_base.dll,那么您需要更改的 url 将嵌入其中,并且 PayPal 尚未发布新的(目前)。要覆盖设置,您需要将以下内容添加到您的 web.config 文件中。将以下内容添加到 < configSections >。

<section name="paypal" type="com.paypal.sdk.core.ConfigSectionHandler, paypal_base"/>

然后添加以下 <paypal> 部分。

<paypal>
    <endpoints>
      <wsdl>
        <environment name="live">
          <port name="PayPalAPI">https://api.paypal.com/2.0/</port>
          <port name="PayPalAPIAA">https://api-aa.paypal.com/2.0/</port>
          <port name="PayPalAPI" threetoken="true">https://api-3t.paypal.com/2.0/</port>
          <port name="PayPalAPIAA" threetoken="true">https://api-aa-3t.paypal.com/2.0/</port>
        </environment>
        <environment name="sandbox">
          <port name="PayPalAPI">https://api.sandbox.paypal.com/2.0/</port>
          <port name="PayPalAPIAA">https://api-aa.sandbox.paypal.com/2.0/</port>
          <port name="PayPalAPI" threetoken="true">https://api-3t.sandbox.paypal.com/2.0/</port>
          <port name="PayPalAPIAA" threetoken="true">https://api-3t.sandbox.paypal.com/2.0/</port>
        </environment>
      </wsdl>
    </endpoints>
  </paypal>

(见 https://www.x.com/developers/paypal/forums/paypal-sandbox/c-sdk-sandbox-three-token-endpoint

于 2012-11-14T02:42:13.443 回答
3

如果您使用“签名”身份验证,则以下情况为真:

关键是几周前端点https://api.sandbox.paypal.com/2.0/停止工作。现在应该改用这个:https ://api-3t.sandbox.paypal.com/2.0/

为此,我更改了 PayPal SDK 中的“paypal-endpoint.xml”中沙盒的端点。下载SDK,找到“paypal-endpoint.xml”,找到Sandbox部分并将地址更改为上面提到的一个。然后重新编译paypal_base.dll并使用

这里发布了非常相似的解决方案,但 XML 发布在 web.config: www 中。X 。com/developers/paypal/forums/paypal-sandbox/c-sdk-sandbox-three-token-endpoint

谷歌“贝宝端点”以获取有关当前贝宝端点的更多信息

于 2012-10-25T22:51:42.177 回答
2

我猜您使用的是“签名”而不是“证书:身份验证?并且可能在测试时从本地 IP 运行?

贝宝沙盒环境变得混乱:)(贝宝的官方回应)并希望在某些呼叫中看到“证书”。

我们有一个实例,我们正在使用带有 APISignature auth 的 .NET paypal API SDK - 这意味着我们无法更改端点(.NET sdk 版本 51),并且我们没有安装证书(签名身份验证不需要)。创建配置文件的功能在沙盒 (CreateRecurringPaymentsProfile) 上运行良好,但进行事务查找 (TransactionSearch) 会导致“无法创建 SSL/TLS 安全通道”。当我们转移到“实时”环境时,两者都可以正常工作。

我们发现的唯一解决方法是更改​​为“cert: auth,安装证书,它似乎工作正常。这是皇家 PITA。

于 2012-09-26T15:24:49.220 回答