2016-07-26 9 views
0

私は、HostedプロファイルページのBilling Addressフィールドを非表示にするため、Authorize.netのCIMインターフェイスへのAPI呼び出しを更新しようとしていました。GetHostedProfilePageがhostedProfileBillingAddressOptionsの設定を尊重しない

ドキュメントでは、トークン作成機能を呼び出すときに、値 "showNone"の設定を "hostedProfileBillingAddressOptions"に設定すると、フォームの請求先アドレス部分が非表示になりますが、この設定を渡すと、請求先住所が表示されます。

「hostedProfileIFrameCommunicatorUrl」および「hostedProfilePageBorderVisible」設定と同じ方法で追加した設定を正しく渡していることを確認しました。また、「hostedProfileBillingAddressOptions」オプションに無効な値を渡した場合、トークン作成機能エラーを返します

アカウント設定や別の設定パラメータなど、このオプションが依存するその他の項目がありますか?

参考のために、私はサンドボックスシステムでこれをテストしていると私はDOTNET SDKを使用しています、私はSDKを通じて見てきた

Public Shared Function CreateHostFormToken(apiId As String, apiKey As String, branchId As Int64, nUser As Contact, iframeComURL As String) As String 
     Dim nCustProfile = GetCustomerProfile(apiId, apiKey, branchId, nUser) 

      Dim nHost = New AuthorizeNet.Api.Contracts.V1.getHostedProfilePageRequest() 
      nHost.customerProfileId = nCustProfile 

      ' Set Auth 
      Dim nAuth = New Api.Contracts.V1.merchantAuthenticationType() 
      nAuth.ItemElementName = Api.Contracts.V1.ItemChoiceType.transactionKey 
      nAuth.name = apiId 
      nAuth.Item = apiKey 

      nHost.merchantAuthentication = nAuth 

      ' Set Params 
      Dim settingList As New List(Of Api.Contracts.V1.settingType) 
      Dim nParam As New Api.Contracts.V1.settingType With {.settingName = "hostedProfileIFrameCommunicatorUrl", 
                   .settingValue = iframeComURL} 
      settingList.Add(nParam) 
      nParam = New Api.Contracts.V1.settingType With {.settingName = "hostedProfilePageBorderVisible", 
                  .settingValue = "false"} 
      settingList.Add(nParam) 

      nParam = New Api.Contracts.V1.settingType With {.settingName = "hostedProfileBillingAddressOptions", 
                  .settingValue = "showNone"} 
      settingList.Add(nParam) 

      nHost.hostedProfileSettings = settingList.ToArray 

      Dim nX = New AuthorizeNet.Api.Controllers.getHostedProfilePageController(nHost) 
      Dim nRes = nX.ExecuteWithApiResponse(GetEnvironment()) 

      Return nRes.token 
End Function 

を次のようにAPI関数を呼び出すための私のテストコードがありますコードも同様ですが、そこに設定が通過しないようにするものはありません。

誰かがこの問題に遭遇したか、請求先住所を非表示にするためにカード入力フォームを設定しましたか?

答えて

0

は、この問題の解決策には2つの部分があると判明:「hostedProfileBillingAddressOptions」オプションを使用するためには

、あなたは私が使っていたよりも、キャプチャページの新しいバージョンを使用する必要があります。私は "https://secure2.authorize.net/profile/"を使っていましたが、新しいバージョンは "https://secure2.authorize.net/customer/"です。追加されたボーナスは、新しいURLは、はるかにより良く、現代的な外観のフォームを提供します。

しかし、いったんこれが機能したら、私はカードに入ったときに、表示されていないにもかかわらず「アドレスと郵便番号が必要です」という確認メッセージが表示されるという問題がありました。私はまた、オプション "hostedProfileBillingAddressRequired"をfalseに設定していることを確認しました(これはデフォルト値です)

Authorize.netサポートからのレスポンスは、アドレスなしでカードをキャプチャするには、 "hostedProfileValidationMode "を" testMode "に設定する必要があります。

これはドキュメントには記載されていません(少なくとも私が見る限り)ので、実際の環境では 'testMode'を使用するのはちょっと逆説的なので他の人が気づいているかもしれません。 顧客アカウントのカードを検証すると、商店主に取引のメールが送信されるため理想的ではありませんが、今のところこれ以外の方法はありません。要約すると

は、顧客がアドレスを提供することなく、自分のプロフィールにクレジットカードを追加できるようにするには、次のオプションを指定する必要があります。キャプチャに

フォームURLを - https://secure2.authorize.net/customer/

getHostedProfilePageRequest -

hostedProfileIFrameCommunicatorUrl: *your URL* 
hostedProfilePageBorderVisible: false //assuming you are using an iFrame 
hostedProfileValidationMode: testMode 
hostedProfileBillingAddressOptions: showNone 
関連する問題