SimpleXML问题
|
也许有人可以帮助我解决有关SimpleXML对象的问题。
我正在与authorize.net CIM经理集成并发送客户资料。当我发送它时,原始的xml响应将通过解析器传递并变成SimpleXML对象。
这是用于提交请求的代码:
$content =
\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\".
\"<createCustomerProfileRequest xmlns=\\\"AnetApi/xml/v1/schema/AnetApiSchema.xsd\\\">\".
MerchantAuthenticationBlock().
\"<profile>\".
//\"<merchantCustomerId>\".$userInsertedId.\"</merchantCustomerId>\". // Your own identifier for the customer.
\"<description>\'New User Purchase\'</description>\".
\"<email>\" . $_GET[\"email\"] . \"</email>\".
\"<paymentProfiles>\".
\"<billTo>\".
\"<firstName>\".$_GET[\"firstname\"].\"</firstName>\".
\"<lastName>\".$_GET[\"lastname\"].\"</lastName>\".
\"<address>\".$_GET[\"street\"].\"</address>\".
\"<city>\".$_GET[\"city\"].\"</city>\".
\"<state>\".$_GET[\"state\"].\"</state>\".
\"<zip>\".$_GET[\"zip\"].\"</zip>\".
\"<country>\".$_GET[\"country\"].\"</country>\".
\"<phoneNumber>\".$_GET[\"phone\"].\"</phoneNumber>\".
\"</billTo>\".
\"<payment>\".
\"<creditCard>\".
\"<cardNumber>\".$_GET[\"number\"].\"</cardNumber>\".
\"<expirationDate>\".$_GET[\"year\"].\"-\".$_GET[\"month\"].\"</expirationDate>\". // required format for API is YYYY-MM
\"<cardCode>\".$_GET[\"code\"].\"</cardCode>\".
\"</creditCard>\".
\"</payment>\".
\"</paymentProfiles>\".
\"</profile>\".
\"<validationMode>testMode</validationMode>\".
\"</createCustomerProfileRequest>\";
$CCresponse = send_xml_request($content);
//echo($CCresponse);
$parsedresponse = parse_api_response($CCresponse);
function parse_api_response($content)
{
$parsedresponse = simplexml_load_string($content, \"SimpleXMLElement\", LIBXML_NOWARNING);
if (\"Ok\" != $parsedresponse->messages->resultCode)
{
echo \"The operation failed with the following errors:<br>\";
foreach ($parsedresponse->messages->message as $msg)
{
echo \"[\" . htmlspecialchars($msg->code) . \"] \" . htmlspecialchars($msg->text) . \"<br>\";
}
echo \"<br>\";
}
return $parsedresponse;
}
当我执行以下操作时:
$parsedresponse = parse_api_response($CCresponse);
print_r($parsedresponse);
我得到以下输出:
SimpleXMLElement Object
(
[messages] => SimpleXMLElement Object
(
[resultCode] => Ok
[message] => SimpleXMLElement Object
(
[code] => I00001
[text] => Successful.
)
)
[customerProfileId] => 15642446
[customerPaymentProfileIdList] => SimpleXMLElement Object
(
[numericString] => 13865552
)
[customerShippingAddressIdList] => SimpleXMLElement Object
(
)
[validationDirectResponseList] => SimpleXMLElement Object
(
[string] => 1|1|1|(TESTMODE) This transaction has been approved.|000000|P|0|none|Test transaction for ValidateCustomerPaymentProfile.|1.00|CC|auth_only||*****|******||****|*******|******|******|USA|1234567890||email@email.com|none|none|none|none|none|none|none|none|0.00|0.00|0.00|FALSE|none|207BCBBF78E85CF174C87AE286B472D2|||||||||||||*******|*******||||||||||||||||
)
)
)
)
因此,看起来一切正常。但是,当我尝试深入到SimpleXML对象并执行以下操作时:
echo $code = (string) $parsedresponse->messages->resultCode;
我收到\“ OkOk \”的输出,好像它运行了两次。这让我非常疯狂,我无法弄清楚这里到底发生了什么。有人可以在这里指示我正确的方向,以便我可以正常工作吗?
谢谢!
没有找到相关结果
已邀请:
1 个回复
谷起