php - DOMDocument::loadXML():作为输入 CURL 提供的空字符串
问题描述
我正在使用 CURL 发送 XML 数据。我在尝试将我的 XML 消息发送到相反的 URL 时在某处出错。但我无法捕捉到他在哪里。我正在使用 Laravel 5。
这是我的功能线
public function paymentConfirm(Request $request)
{
if (!session()->has('reservation'))
{
return view('frontend.error');
}
$reservation_data = session()->get('reservation');
$amount = number_format($reservation_data['payable_amount'], 2);
$card_num = str_replace(' ', '', $request->cardnumber);
$expiry = $request->expiry;
$cvv = str_replace(' ', '', $request->cvv);
$mpiServiceUrl= "https://example.com/MPIAPI/MPI_Enrollment.aspx";
$sonKullanmaTarihi = $request->expiry;
$karttipi = 200;
$taksitSayisi="";
$kartTipi = "BrandName";
$islemNumarasi = uniqid().'-'.uniqid();
$uyeIsyeriNumarasi = "XXXX";
$uyeIsYeriSifresi = "XXX";
$SuccessURL = "https://www.example.com/payment/success";
$FailureURL = "https://www.example.com/payment/failure";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$mpiServiceUrl);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Content-Type"=>"application/x-www-form-urlencoded"));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,"Pan=".$card_num."&ExpiryDate=$sonKullanmaTarihi&PurchaseAmount=".$amount."&Currency=949&BrandName=$kartTipi&VerifyEnrollmentRequestId=$islemNumarasi&SessionInfo=&MerchantId=".$uyeIsyeriNumarasi."&MerchantPassword=".$uyeIsYeriSifresi."&SuccessUrl=$SuccessURL&FailureUrl=$FailureURL&InstallmentCount=$taksitSayisi");
$resultXml = curl_exec($ch);
curl_close($ch);
$result = $this->SonucuOku3d($resultXml);
if($result["Status"]=="Y") {
?>
我的课
class PaymentController extends Controller
{
public function SonucuOku3d($result)
{
$resultDocument = new \DOMDocument();
$resultDocument->loadXML($result);
$statusNode = $resultDocument->getElementsByTagName("Status")->item(0);
$status = "";
if( $statusNode != null )
$status = $statusNode->nodeValue;
$PAReqNode = $resultDocument->getElementsByTagName("PaReq")->item(0);
$PaReq = "";
if( $PAReqNode != null )
$PaReq = $PAReqNode->nodeValue;
$ACSUrlNode = $resultDocument->getElementsByTagName("ACSUrl")->item(0);
$ACSUrl = "";
if( $ACSUrlNode != null )
$ACSUrl = $ACSUrlNode->nodeValue;
$TermUrlNode = $resultDocument->getElementsByTagName("TermUrl")->item(0);
$TermUrl = "";
if( $TermUrlNode != null )
$TermUrl = $TermUrlNode->nodeValue;
$MDNode = $resultDocument->getElementsByTagName("MD")->item(0);
$MD = "";
if( $MDNode != null )
$MD = $MDNode->nodeValue;
$messageErrorCodeNode = $resultDocument->getElementsByTagName("MessageErrorCode")->item(0);
$messageErrorCode = "";
if( $messageErrorCodeNode != null )
$messageErrorCode = $messageErrorCodeNode->nodeValue;
$result = array
(
"Status"=>$status,
"PaReq"=>$PaReq,
"ACSUrl"=>$ACSUrl,
"TermUrl"=>$TermUrl,
"MerchantData"=>$MD ,
"MessageErrorCode"=>$messageErrorCode
);
return $result;
}
我应该更改哪一行来解决这个错误?我想我在 ResultXML 部分犯了一个错误。谢谢您的帮助。
解决方案
推荐阅读
- node.js - 使用 React 和 Express 在没有谷歌分析的情况下收集页面视图数据
- php - 如何使用单例模式在 php 中正确编写数据库类?
- keycloak - 如何在 keycloak 中查看文档
- python - 找到解决方案/返回后如何停止递归
- java - 在已经声明并赋值时无法解析为变量?
- vue.js - 在 vuetify 的 v-text-field 中使用 v-mask 时未设置数据
- batch-file - 你能克隆一个 git repo 并将所有包更新到最新版本吗
- python - 请求有关网络抓取问题的帮助
- html - 如何在 html 文件中加载 html 链接
- typescript - 我如何将传递给有效负载创建者的参数类型与来自 RTK 中有效负载创建者的返回类型混合在一起?