1

最初のデータ グローバル ゲートウェイ API 統合をテストするために、単純な ASP.NET プロジェクトをコンパイルしました。

私はすべてを試したので、誰かが私に何をすべきか教えてください.

It throws the ERROR if I use ASP.NET Development server:
<r_error> Unable to load certificate   ERRs: wsa=33558530 err=33558530 ssl=537317504 sys=33558530.  INFO: ACE_SSL (5260|6284) error code: 33558530 - error:02001002:lib(2):func(1):reason(2)
</r_error>

仮想ディレクトリを使用している場合のエラー: これは次の場合に生成されます

//Call LPTxn
string resp = LPTxn.send(keyfile, host, port, outXml);

終わらせる

ERROR: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

テスト:

Windows 7 ultimate 64 bit

ルートのプロジェクトには次のものがあります。

default.aspx 
status.aspx
111222333.pem

置き場:

LinkPointTransaction.dll
lpssl.dll
libeay32.lib
libssl32.dll
ssleay32.lib

確認するためにこれを表示するだけのWeb.Config:

<client>
      <!-- Change this to your store number -->
      <add key="Configfile" value="xxxxx"/>
      <!-- Change this to the name and location of your certificate file -->
      <add key="Keyfile" value="111222333.pem"/>
      <add key="Host" value="xxx.xxx.net"/>
      <add key="Port" value="1129"/>
</client>
4

4 に答える 4

4

ご連絡が遅くなり申し訳ありません。以下は私が使用したコードです。特に、BuildOrderService が証明書を設定する方法を見てください。

応答

Public Class CLinkTransResponse
    Public ApprovalCode As String
    Public ErrorMessage As String
    Public OrderId As String
    Public TransactionID As String
    Public TransactionResult As String


    Public Sub New()
        ApprovalCode = ""
        ErrorMessage = ""
        OrderId = ""
        TransactionID = ""
        TransactionResult = ""
    End Sub
End Class

設定

--XMLファイル--

<?xml version="1.0" encoding="utf-8"?>
<LinkPointSettings>
  <OrderServiceUrl>https://ws.merchanttest.firstdataglobalgateway.com/fdggwsapi/services/order.wsdl</OrderServiceUrl>
  <P12File>WS{texthere}._.1.p12</P12File>
  <!-- From .auth.txt-->
  <username>WS{texthere}._.1</username>
  <password>{texthere}</password>
  <!-- From .p12.pw.txt-->
  <P12Pw>{texthere}</P12Pw>  
</LinkPointSettings>

- コード -

Imports System.IO
Imports System.Web

Friend Class CLinkPointSettings
    Private sOrderServiceUrl As String
    Private sP12File As String
    Private sP12Pw As String
    Private susername As String
    Private spassword As String

    Public Sub New()
        ' Read XML Link Point Settings File
        Dim sXMLFile As String
        sXMLFile = HttpContext.Current.Server.MapPath("~/bin/xLinkPointSettings.xml")

        If Not File.Exists(sXMLFile) Then
            Return
        End If

        ' Read XML File
        Dim oXmlDoc As New System.Xml.XmlDocument
        oXmlDoc.Load(sXMLFile)

        sOrderServiceUrl = oXmlDoc.GetElementsByTagName("OrderServiceUrl")(0).InnerText
        sP12File = oXmlDoc.GetElementsByTagName("P12File")(0).InnerText
        sP12Pw = oXmlDoc.GetElementsByTagName("P12Pw")(0).InnerText
        susername = oXmlDoc.GetElementsByTagName("username")(0).InnerText
        spassword = oXmlDoc.GetElementsByTagName("password")(0).InnerText
    End Sub

    Public ReadOnly Property OrderServiceUrl() As String
        Get
            Return sOrderServiceUrl
        End Get
    End Property

    Public ReadOnly Property P12File() As String
        Get
            Return sP12File
        End Get
    End Property

    Public ReadOnly Property P12Pw() As String
        Get
            Return sP12Pw
        End Get
    End Property

    Public ReadOnly Property Username() As String
        Get
            Return susername
        End Get
    End Property

    Public ReadOnly Property Password As String
        Get
            Return spassword
        End Get
    End Property
End Class

取引

Imports FirstDataGlobalGateway.WebReference
Imports System.Security.Cryptography.X509Certificates
Imports System.Net
Imports System.IO
Imports System.Web

Public Class CLinkTransaction
    Public Sub New()
        ServicePointManager.Expect100Continue = False
    End Sub

    ''' <summary>
    ''' charge credit card
    ''' </summary>
    ''' <param name="cardNumber">Credit Card Number</param>
    ''' <param name="expMonth">expiry month</param>
    ''' <param name="expYear">expiry year</param>
    ''' <param name="chargeTotal">charge total(including tax,vat etc)</param>
    ''' <param name="billingInfo">Client Billing Information</param>
    ''' <returns>Returns True/False Transaction result</returns>
    ''' <remarks></remarks>    
    Public Function ChargeCreditCard(ByVal cardNumber As String, ByVal expMonth As String, _
                                     ByVal expYear As String, _
                                     ByVal ccv As String, _
                                     ByVal chargeTotal As Decimal, _
                                     ByVal billingInfo As Billing, ByRef transResponse As CLinkTransResponse) As Boolean

        Dim oFDGGWSApiOrderService As FDGGWSApiOrderService = BuildOrderService()

        ' Create sale transaction request
        Dim oFDGGWSApiOrderRequest As New FDGGWSApiOrderRequest()

        Dim oTransaction As New Transaction()

        Dim oCreditCardTxType As New CreditCardTxType()

        oCreditCardTxType.Type = CreditCardTxTypeType.sale

        Dim oCreditCardData As New CreditCardData()

        oCreditCardData.ItemsElementName = New ItemsChoiceType() {ItemsChoiceType.CardNumber, ItemsChoiceType.ExpMonth, ItemsChoiceType.ExpYear}

        oCreditCardData.Items = New String() {cardNumber, expMonth, expYear}

        oTransaction.Items = New Object() {oCreditCardTxType, oCreditCardData}

        Dim oPayment As New Payment() With {.ChargeTotal = chargeTotal}

        '' Set Billing Information
        'Dim oBilling As New Billing()

        'oBilling.Address1 = billingInfo.Address1
        'oBilling.Address2 = billingInfo.Address2
        'oBilling.City = billingInfo.City
        'oBilling.Company = billingInfo.Company
        'oBilling.Country = billingInfo.Country
        'oBilling.CustomerID = billingInfo.CustomerID
        'oBilling.Email = billingInfo.Email
        'oBilling.Fax = billingInfo.Fax
        'oBilling.Name = billingInfo.Name
        'oBilling.Phone = billingInfo.Phone
        'oBilling.State = billingInfo.State
        'oBilling.Zip = billingInfo.Zip

        oTransaction.Billing = billingInfo

        oFDGGWSApiOrderRequest.Item = oTransaction

        Try
            ' Get Response
            Dim oFDGGWSApiOrderResponse As FDGGWSApiOrderResponse

            oFDGGWSApiOrderResponse = Nothing

            oFDGGWSApiOrderResponse = oFDGGWSApiOrderService.FDGGWSApiOrder(oFDGGWSApiOrderRequest)

            transResponse.ApprovalCode = oFDGGWSApiOrderResponse.ApprovalCode
            transResponse.TransactionResult = oFDGGWSApiOrderResponse.TransactionResult
            transResponse.ErrorMessage = oFDGGWSApiOrderResponse.ErrorMessage
            transResponse.OrderId = oFDGGWSApiOrderResponse.OrderId
            transResponse.TransactionID = oFDGGWSApiOrderResponse.TransactionID

            If (transResponse.TransactionResult.ToLower() <> "approved") Then
                Return False
            End If

            Return True

        Catch ex As System.Web.Services.Protocols.SoapException
            transResponse.ErrorMessage = ex.Message
            Return False
        End Try
    End Function

    ''' <summary>
    ''' Perfrom Refund
    ''' </summary>
    ''' <param name="orderID">Order ID</param>
    ''' <param name="chargeTotal">Charge Total (Including Taxes)</param>
    ''' <param name="transResponse">Transaction Response</param>
    ''' <returns>Returns True/False</returns>
    ''' <remarks></remarks>
    Public Function PerformRefund(ByVal orderID As String, ByVal chargeTotal As Decimal, ByRef transResponse As CLinkTransResponse) As Boolean
        Dim oFDGGWSApiOrderService As FDGGWSApiOrderService = BuildOrderService()

        ' Create sale transaction request
        Dim oFDGGWSApiOrderRequest As New FDGGWSApiOrderRequest()

        Dim oTransaction As New Transaction()

        Dim oCreditCardTxType As New CreditCardTxType()

        oCreditCardTxType.Type = CreditCardTxTypeType.return

        oTransaction.Items = New Object() {oCreditCardTxType}

        Dim oPayment As New Payment()

        oPayment.ChargeTotal = chargeTotal

        oTransaction.Payment = oPayment

        Dim oTransactionDetails As New TransactionDetails()

        oTransactionDetails.OrderId = orderID

        oTransaction.TransactionDetails = oTransactionDetails

        oFDGGWSApiOrderRequest.Item = oTransaction

        Try
            ' Get Response
            Dim oFDGGWSApiOrderResponse As FDGGWSApiOrderResponse

            oFDGGWSApiOrderResponse = Nothing

            oFDGGWSApiOrderResponse = oFDGGWSApiOrderService.FDGGWSApiOrder(oFDGGWSApiOrderRequest)

            transResponse.ApprovalCode = oFDGGWSApiOrderResponse.ApprovalCode
            transResponse.TransactionResult = oFDGGWSApiOrderResponse.TransactionResult
            transResponse.ErrorMessage = oFDGGWSApiOrderResponse.ErrorMessage
            transResponse.OrderId = oFDGGWSApiOrderResponse.OrderId
            transResponse.TransactionID = oFDGGWSApiOrderResponse.TransactionID

            If (transResponse.TransactionResult.ToLower() <> "approved") Then
                Return False
            End If

            Return True

        Catch ex As System.Web.Services.Protocols.SoapException
            transResponse.ErrorMessage = ex.Message
            Return False
        End Try
    End Function
    ''' <summary>
    ''' Check Sale Transaction
    ''' </summary>
    ''' <param name="teleCheckData">TeleCheckData</param>
    ''' <param name="chargeTotal">Charge Total</param>
    ''' <param name="transResponse">Transaction Response</param>
    ''' <returns>Returns True/False</returns>
    ''' <remarks></remarks>
    Public Function CheckSaleTransaction(ByVal teleCheckData As TeleCheckData, ByVal chargeTotal As Decimal, ByRef transResponse As CLinkTransResponse) As Boolean
        Dim oFDGGWSApiOrderService As FDGGWSApiOrderService = BuildOrderService()

        ' Create sale transaction request
        Dim oFDGGWSApiOrderRequest As New FDGGWSApiOrderRequest()

        Dim oTransaction As New Transaction()

        Dim oTeleCheckTxType As New TeleCheckTxType()

        oTeleCheckTxType.Type = CreditCardTxTypeType.sale

        oTransaction.Items = New Object() {oTeleCheckTxType, teleCheckData}

        Dim oPayment As New Payment()

        oPayment.ChargeTotal = chargeTotal

        oTransaction.Payment = oPayment

        oFDGGWSApiOrderRequest.Item = oTransaction

        Try
            ' Get Response
            Dim oFDGGWSApiOrderResponse As FDGGWSApiOrderResponse

            oFDGGWSApiOrderResponse = Nothing

            oFDGGWSApiOrderResponse = oFDGGWSApiOrderService.FDGGWSApiOrder(oFDGGWSApiOrderRequest)

            transResponse.ApprovalCode = oFDGGWSApiOrderResponse.ApprovalCode
            transResponse.TransactionResult = oFDGGWSApiOrderResponse.TransactionResult
            transResponse.ErrorMessage = oFDGGWSApiOrderResponse.ErrorMessage
            transResponse.OrderId = oFDGGWSApiOrderResponse.OrderId
            transResponse.TransactionID = oFDGGWSApiOrderResponse.TransactionID

            If (transResponse.TransactionResult.ToLower() <> "approved") Then
                Return False
            End If

            Return True

        Catch ex As System.Web.Services.Protocols.SoapException
            transResponse.ErrorMessage = ex.Message
            Return False
        End Try
    End Function

    ''' <summary>
    ''' Void Transaction
    ''' </summary>
    ''' <param name="orderID">Order ID</param>
    ''' <param name="chargeTotal">Charge Total (Including Taxes)</param>
    ''' <param name="transResponse">Transaction Response</param>
    ''' <returns>Returns True/False</returns>
    ''' <remarks></remarks>
    Public Function VoidTransaction(ByVal orderID As String, ByVal chargeTotal As Decimal, ByRef transResponse As CLinkTransResponse) As Boolean
        Dim oFDGGWSApiOrderService As FDGGWSApiOrderService = BuildOrderService()

        ' Create sale transaction request
        Dim oFDGGWSApiOrderRequest As New FDGGWSApiOrderRequest()

        Dim oTransaction As New Transaction()

        Dim oTeleCheckTxType As New TeleCheckTxType()

        oTeleCheckTxType.Type = CreditCardTxTypeType.void

        oTransaction.Items = New Object() {oTeleCheckTxType}

        Dim oPayment As New Payment()

        oPayment.ChargeTotal = chargeTotal

        oTransaction.Payment = oPayment

        Dim oTransactionDetails As New TransactionDetails()

        oTransactionDetails.OrderId = orderID

        oTransaction.TransactionDetails = oTransactionDetails

        oFDGGWSApiOrderRequest.Item = oTransaction

        Try
            ' Get Response
            Dim oFDGGWSApiOrderResponse As FDGGWSApiOrderResponse

            oFDGGWSApiOrderResponse = Nothing

            oFDGGWSApiOrderResponse = oFDGGWSApiOrderService.FDGGWSApiOrder(oFDGGWSApiOrderRequest)

            transResponse.ApprovalCode = oFDGGWSApiOrderResponse.ApprovalCode
            transResponse.TransactionResult = oFDGGWSApiOrderResponse.TransactionResult
            transResponse.ErrorMessage = oFDGGWSApiOrderResponse.ErrorMessage
            transResponse.OrderId = oFDGGWSApiOrderResponse.OrderId
            transResponse.TransactionID = oFDGGWSApiOrderResponse.TransactionID

            If (transResponse.TransactionResult.ToLower() <> "approved") Then
                Return False
            End If

            Return True

        Catch ex As System.Web.Services.Protocols.SoapException
            transResponse.ErrorMessage = ex.Message
            Return False
        End Try
    End Function

    Private Function BuildOrderService() As FDGGWSApiOrderService

        Dim olinkpoint As New CLinkPointSettings()

        ServicePointManager.Expect100Continue = False

        Dim oFDGGWSApiOrderService As New FDGGWSApiOrderService()

        ' Set WSDL URL
        oFDGGWSApiOrderService.Url = olinkpoint.OrderServiceUrl

        ' Configure Client Certificate
        oFDGGWSApiOrderService.ClientCertificates.Add(
                New X509Certificate(HttpContext.Current.Server.MapPath("~/bin/" + olinkpoint.P12File), olinkpoint.P12Pw))


        ' Initialize Netwokr Credentials
        Dim oNetworkCredentials As New NetworkCredential(olinkpoint.Username, olinkpoint.Password)

        ' Assign network creditials
        oFDGGWSApiOrderService.Credentials = oNetworkCredentials

        Return oFDGGWSApiOrderService
    End Function
End Class
于 2011-08-15T21:33:41.637 に答える
0
  1. マーチャントのウェルカム メールから Web サーバー上の .PEM ファイルにデジタル証明書を正しくコピーしたことを確認します。ファイルへのパスを、安全な支払いゲートウェイに指定したパスとファイル名と比較します。
  2. 32 ビットと 64 ビットの問題:
  3. Solution Platform が Visual Studio で x86 に設定されていることを確認し、アプリケーションを再度コンパイルします。
  4. API で処理できない PEM ファイルが原因である可能性があります。
    • 試してみてください: 既存の PEM ファイルのコピーを作成し、メモ帳を使用して再フォーマットしてください。66文字目で改行
于 2011-08-10T19:54:28.600 に答える
0

アプリケーションが本番サーバーにデプロイされたときに使用する信頼レベルは? 中程度の信頼で実行されている場合、DLL が必要とするコンポーネントにアクセスできない可能性があります。サイトの .net 信頼レベルを中に設定することで、これをローカルに複製できます。ローカル サイトを中程度の信頼に設定すると問題が再現する場合は、ホストで完全な信頼を有効にするか、完全な信頼を持つ別のホストを見つけるか、VPS を取得する必要があります。

于 2011-08-17T15:54:30.797 に答える
0

IIS を使用している場合は、サイトを実行しているアプリケーション プールに移動し、[詳細設定] を開きます。そこで、「32 ビット アプリケーションを有効にする」を true に設定できます。これで問題が解決するはずです。

于 2011-08-16T16:04:49.117 に答える