2016-07-26 2 views
0

J'ai essayé de mettre à jour notre appel d'API vers l'interface CIM pour Authorize.net afin de masquer les champs Adresse de facturation sur la page de profil hébergée.GetHostedProfilePage ne respectant pas le paramètre hostedProfileBillingAddressOptions

La documentation indique que lorsque vous appelez la fonction de création de jeton, le fait de passer dans un paramètre "hostedProfileBillingAddressOptions" avec la valeur "showNone" masquera l'adresse de facturation du formulaire, mais lorsque je passe dans ce paramètre, l'adresse de facturation J'ai vérifié que je passais le paramètre correctement (ajouté de la même manière que les paramètres "hostedProfileIFrameCommunicatorUrl" et "hostedProfilePageBorderVisible") et si je transmets une valeur non valide pour l'option "hostedProfileBillingAddressOptions", la fonction de création de jetons retournera une erreur

Y a-t-il une autre chose dont cette option dépend, comme un paramètre de compte ou un autre paramètre?

Pour référence, je teste ce dans le système Sandbox et j'utilise le SDK dotNet, mon code de test pour appeler la fonction API est la suivante

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 

Je l'ai regardé à travers le SDK code également, et je ne vois rien là qui empêcherait le passage de passer.

Quelqu'un a-t-il rencontré ce problème ou a-t-il correctement configuré le formulaire de saisie de la carte pour masquer l'adresse de facturation?

Répondre

0

Il est avéré être deux parties à la solution à ce problème:

Pour utiliser l'option « hostedProfileBillingAddressOptions », vous devez utiliser une version plus récente de la page de capture que j'utilisais. J'utilisais "https://secure2.authorize.net/profile/", tandis que la nouvelle version est "https://secure2.authorize.net/customer/". Bonus ajouté, la nouvelle URL fournit une forme plus belle et moderne.

Cependant, une fois que cela a fonctionné, j'ai alors eu le problème qu'en entrant dans la carte, un message de validation m'a indiqué que "l'adresse et le code postal sont requis", bien qu'ils ne soient pas visibles. Je me suis également assuré que j'avais l'option "hostedProfileBillingAddressRequired" définie à false (qui est sa valeur par défaut de toute façon)

La réponse du support Authorize.net est que, pour capturer une carte sans adresse, l'option "hostedProfileValidationMode" "doit être réglé sur" testMode ". Ceci n'est pas mentionné dans la documentation (du moins pour autant que je puisse voir), donc peut-être pas quelque chose que d'autres personnes sont au courant car il est un peu contre-intuitif d'utiliser 'testMode' sur un environnement en direct . Ce n'est pas idéal puisque la validation de la carte pour un compte client enverra un e-mail de transaction au marchand, mais il semble qu'il n'y ait pas d'autre solution pour le moment.

En résumé, pour permettre au client d'ajouter une carte de crédit à leur profil sans avoir à fournir une adresse, vous devez spécifier les options suivantes:

URL de formulaire pour la capture - https://secure2.authorize.net/customer/

getHostedProfilePageRequest -

hostedProfileIFrameCommunicatorUrl: *your URL* 
hostedProfilePageBorderVisible: false //assuming you are using an iFrame 
hostedProfileValidationMode: testMode 
hostedProfileBillingAddressOptions: showNone