activemerchant cybersource xml解析错误
我无法让cybersource与activemerchant合作。Activemerchant与authorize.net和paypal配合良好。我正在尝试从控制台测试它,因为它在站点中失败了activemerchant cybersource xml解析错误,xml,activemerchant,parsing-error,Xml,Activemerchant,Parsing Error,我无法让cybersource与activemerchant合作。Activemerchant与authorize.net和paypal配合良好。我正在尝试从控制台测试它,因为它在站点中失败了 gateway = ActiveMerchant::Billing::CyberSourceGateway.new( :login => "CybersourceUserID", :password => "CybersourceKey", :nexu
gateway = ActiveMerchant::Billing::CyberSourceGateway.new(
:login => "CybersourceUserID",
:password => "CybersourceKey",
:nexus => "NJ",
:vat_reg_number =>""
)
response = gateway.authorize(1000, credit_card, :ip => "127.0.0.1", :order_id=>"23434", :email=>"little@mac.com")
这就是我得到的错误:
#<Net::HTTPInternalServerError:0x1113f0838>
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext" xmlns:c="urn:schemas-cybersource-com:transaction-data-1.0">
<faultcode>soap:Client</faultcode>
<faultstring>
XML parse error.
PI with the name 'xml' can occur only in the beginning of the document.
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
这里还有生成的XML:(编辑掉了私有信息)
CybersourceUserID
CybersourceKey
CybersourceUserID
23434
红宝石活跃商人
1.34.1
i686-darwin12.2.0
弗斯特
最后
little@mac.com
美元
10
2013-07-12T03:32:05.030Z
23434
3735999249970176056695
拒绝
101
c:billTo/c:country
c:billTo/c:city
c:billTo/c:street1
(代币)
101
所以这一定是gem中的一个xml解析问题吧?我不知道到底是什么问题,但我会告诉你我最终是如何让它工作的
ActiveMerchant::Billing::Base.mode = :test
ActiveMerchant::Billing::CyberSourceGateway::TEST_URL = 'https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor'
gateway = ActiveMerchant::Billing::CyberSourceGateway.new(
login: "<Cyber source Merchant ID>",
password: '<Transaction key>',
test: true,
ignore_avs: true
)
credit_card = ActiveMerchant::Billing::CreditCard.new(
:type => "visa",
:number => "4111111111111111",
:verification_value => "123",
:month => 1,
:year => Time.now.year+1,
:first_name => "Test",
:last_name => "Test1"
)
response = gateway.authorize(1000, credit_card, :ip => "127.0.0.1", order_id: "jdgjsahgd", email: "test.test@test.com")
ActiveMerchant::Billing::Base.mode=:测试
ActiveMerchant::Billing::CyberSourceGateway::TEST\u URL=https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor'
gateway=ActiveMerchant::Billing::CyberSourceGateway.new(
登录名:“,
密码:“”,
测试:对,
忽略avs:正确
)
信用卡=ActiveMerchant::账单::CreditCard.new(
:type=>“visa”,
:number=>“4111111111”,
:验证值=>“123”,
:月=>1,
:year=>Time.now.year+1,
:first_name=>“Test”,
:last_name=>“Test1”
)
响应=网关。授权(1000,信用卡,ip=>“127.0.0.1”,订单id:“jdgjsahgd”,电子邮件:“测试”。test@test.com")
记住:登录不是用户名,而是网络空间商户id。谢谢您的帮助
我联系了cybersource(他们非常有帮助)
今晚它刚刚开始工作,所以我想他们已经解决了一些问题。我也面临着类似的问题。我不明白为什么CYbersource发送的是500而不是更有意义的东西。你能公布你用来生成信用卡的代码吗。?这可能有助于调试。此外,在密码字段中,您需要使用交易密钥。是的,我正在使用交易密钥以及网络空间商户id,谢谢。是的,我知道网络空间商户id。我的问题似乎是解析。还是不为我工作。
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" s:mustUnderstand="1">
<wsse:UsernameToken>
<wsse:Username>CybersourceUserID</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">CybersourceKey</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.69">
<merchantID>CybersourceUserID</merchantID>
<merchantReferenceCode>23434</merchantReferenceCode>
<clientLibrary>Ruby Active Merchant</clientLibrary>
<clientLibraryVersion>1.34.1</clientLibraryVersion>
<clientEnvironment>i686-darwin12.2.0</clientEnvironment>
<billTo>
<firstName>First</firstName>
<lastName>Last</lastName>
<street1></street1>
<city></city>
<state></state>
<postalCode></postalCode>
<country></country>
<email>little@mac.com</email>
</billTo>
<purchaseTotals>
<currency>USD</currency>
<grandTotalAmount>10.00</grandTotalAmount>
</purchaseTotals>
<card>
<accountNumber>4111111111111111</accountNumber>
<expirationMonth>01</expirationMonth>
<expirationYear>2020</expirationYear>
<cvNumber>123</cvNumber>
<cardType>001</cardType>
</card>
<ccAuthService run="true"/>
<businessRules>
</businessRules>
</requestMessage>
</s:Body>
</s:Envelope>
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-1851182716">
<wsu:Created>2013-07-12T03:32:05.030Z</wsu:Created>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.69">
<c:merchantReferenceCode>
23434
</c:merchantReferenceCode>
<c:requestID>
3735999249970176056695
</c:requestID>
<c:decision>
REJECT
</c:decision>
<c:reasonCode>
101
</c:reasonCode>
<c:missingField>
c:billTo/c:country
</c:missingField>
<c:missingField>
c:billTo/c:city
</c:missingField>
<c:missingField>
c:billTo/c:street1
</c:missingField>
<c:requestToken>
(a token)
</c:requestToken>
<c:ccAuthReply>
<c:reasonCode>
101
</c:reasonCode>
</c:ccAuthReply>
</c:replyMessage>
</soap:Body>
</soap:Envelope>
ActiveMerchant::Billing::Base.mode = :test
ActiveMerchant::Billing::CyberSourceGateway::TEST_URL = 'https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor'
gateway = ActiveMerchant::Billing::CyberSourceGateway.new(
login: "<Cyber source Merchant ID>",
password: '<Transaction key>',
test: true,
ignore_avs: true
)
credit_card = ActiveMerchant::Billing::CreditCard.new(
:type => "visa",
:number => "4111111111111111",
:verification_value => "123",
:month => 1,
:year => Time.now.year+1,
:first_name => "Test",
:last_name => "Test1"
)
response = gateway.authorize(1000, credit_card, :ip => "127.0.0.1", order_id: "jdgjsahgd", email: "test.test@test.com")