8 février 2018
Mon application Ruby on Rails a été utilisée avec succès ActiveMerchant::Billing::AuthorizeNetCimGateway
avec le type de paiement :credit_card
pour créer un profil client avec un profil de paiement intégré.
Je suis maintenant en train de migrer vers Accept.js d'Authorize.Net qui accepte les informations de carte de crédit directement envoyées depuis leur formulaire de paiement hébergé et renvoie une annonce de paiement de type COMMON.ACCEPT.INAPP.PAYMENT
qui peut être utilisée une fois pour créer une transaction de paiement, profil client, etc.
J'ai construit un payment_profile
hachage avec :opaque_data
à la place de :credit_card
. Par example:
> payment_profile
=> {:payment=>
{:opaque_data=>
{:data_descriptor=>"COMMON.ACCEPT.INAPP.PAYMENT",
:data_value=> "eyJjb2RlIjoiNTBfMl8wNjAwMDUzNjBDMzAwOUQ3OEUzOUQ1MDk4QTYxMjFGNzlCQ0Y3RDRGQUE4NTNCMEU3MkYyMUJBNTI3NUE0NjQ2Q0ZFQTVFNzMxMDI2Qjg5ODJGNjBFRUE2RDZFMTZCMUY5NzQ4NUJFIiwidG9rZW4iOiI5NTE4MDc3Njg5NDA4MTAwOTAzNTAyIiwidiI6IjEuMSJ9"}},
:bill_to=>{:first_name=>"Firstname",:last_name=>"Lastname",:address=>nil,:city=>nil,:state=>nil,:zip=>nil,:country=>nil,:phone_number=>"(012) 234-5678"}}
J'ai ensuite essayé de créer un profil client avec un code existant similaire au suivant :
response = @gateway.create_customer_profile profile: {
email: client.email,
description: client.name,
merchant_customer_id: client.id,
payment_profiles: payment_profile
}
Cependant, j'ai reçu une réponse qui comportait un result_code
of Error
et me plaignait d'un "contenu incomplet" pour l'élément payment
comme suit :
> response
=> #<ActiveMerchant::Billing::Response:0x007f9827d14900
@authorization=nil,
@avs_result={"code"=>nil, "message"=>nil, "street_match"=>nil, "postal_match"=>nil},
@cvv_result={"code"=>nil, "message"=>nil},
@emv_authorization=nil,
@error_code="E00003",
@fraud_review=nil,
@message=
"The element 'payment' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd' has incomplete content. List of possible elements expected: 'creditCard, bankAccount, trackData, encryptedTrackData, payPal, opaqueData, emv' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'.",
@params=
{"messages"=>
{"result_code"=>"Error",
"message"=>
{"code"=>"E00003",
"text"=>
"The element 'payment' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd' has incomplete content. List of possible elements expected: 'creditCard, bankAccount, trackData, encryptedTrackData, payPal, opaqueData, emv' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'."}}},
@success=false,
@test=true>
J'ai quelques questions en tête:
Prend-il même en charge Accept.js ActiveMerchant::Billing::AuthorizeNetCimGateway
' :opaque_data
à la place de :credit_card
?
Si ActiveMerchant::Billing::AuthorizeNetCimGateway
prend en charge :opaque_data
, qu'est-ce qui ne va pas avec ce qui précède payment_profile
et quel autre contenu devrais-je fournir pour l' payment
élément?
J'apprécierais toute aide pour résoudre ce problème.
Solution of the problem
Bien que cette question ait plus de 4 ans et que je suppose que vous avez trouvé une solution ou abandonné vos efforts, j'ai rencontré ce même problème récemment et j'ai pensé qu'il serait utile d'ajouter mes conclusions au cas où quelqu'un d'autre se heurterait à ce problème..
le AuthorizeNetCimGateway
ne prend pas actuellement en charge Accept.js' opaqueData
. En regardant le code source de la gemme active_merchant, en particulier dans /lib/active_merchant/billing/gateways/authorize_net_cim.rb, il y a finalement une méthode add_payment_profile
qui est appelée. Dans cette méthode, en particulier aux lignes 759 à 761, vous pouvez voir que les options sont soit credit_card, bank_account ou drivers_license. Un paiement tokenisé n'est actuellement pas pris en charge.
That being said, there is an open PR#2422 that adds support for this. At the time of writing this, it appears to be failing some rubocop specs, but hopefully it can get deployed in the near future!
Aucun commentaire:
Enregistrer un commentaire