PHP:Curl https xml 结果返回空白

2024-04-14

请需要您的帮助!我正在尝试使用curl 创建一个PHP Soap 客户端。当我运行 PHP 代码时。我得到空白结果。 这是一个 https 连接。我用 OpenSSL 生成我的 .pem 文件example https://stackoverflow.com/questions/27062639/php-soap-client-with-certificates-over-ssl

PHP CODE

    $xml = '<?xml version="1.0" encoding="utf-8"?>'.
        '<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://olp.sadad.com/sadadpaymentmanagement/service/olppaymentmanager/req">'.
           '<x:Header/>'.
            '<x:Body>'.
        '<req:initiatePaymentDetailsReq>'.
           '<req:olpIdAlias>*****</req:olpIdAlias>'.
             '  <req:merchantId>*****</req:merchantId>'.
        '<req:merchantRefNum>999454564</req:merchantRefNum>'.
            '<req:paymentAmount>200</req:paymentAmount>'.
            '<req:paymentCurrency>SAR</req:paymentCurrency>'.
            '<req:dynamicMerchantLandingURL></req:dynamicMerchantLandingURL>'.
            ' <req:dynamicMerchantFailureURL></req:dynamicMerchantFailureURL>'.
              '</req:initiatePaymentDetailsReq>'.
              '</x:Body>'.
              '</x:Envelope>';
    try{
    $url = "https://b2brbtest.riyadbank.com/soap?service=RB_OLP_INITIATE_PAYMENT";
     $certFile =  dirname(__FILE__)."/key1.pem";
      $certPass = "*******";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSLCERT, $certFile);
    curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $certPass);
    $headers = array();
    array_push($headers, "Content-Type: text/xml; charset=utf-8");
    array_push($headers, "SOAPAction: sii:RB_OLP_INITIATE_PAYMENT");

    if($xml != null) {
        curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml");
        array_push($headers, "Content-Length: " . strlen($xml));
    }

    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $response = curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    var_dump($response);

    }  catch (Exception $e){
    echo $e->getMessage();


    }

    ?>

OUTPUT

字符串(228)“”


最后我通过更改 $xml 值解决了这个问题

$xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://olp.bank.com/sappay/service/olppaymentmanager/req">
   <soapenv:Header/>
   <soapenv:Body>
      <req:initiatePaymentDetailsReq>
         <olpIdAlias>****</olpIdAlias>
         <merchantId>***</merchantId>
         <merchantRefNum>'.rand(1, 15).rand().'</merchantRefNum>
         <paymentAmount>'.$tb.'</paymentAmount>
         <paymentCurrency>SAR</paymentCurrency>
         <dynamicMerchantLandingURL></dynamicMerchantLandingURL>
         <dynamicMerchantFailureURL></dynamicMerchantFailureURL>
      </req:initiatePaymentDetailsReq>
   </soapenv:Body>
</soapenv:Envelope>';

这是如何使用 ssl 连接 SOAP Web 服务的完整代码

<?php
$tb='200';

$xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://olp.bank.com/sappay/service/olppaymentmanager/req">
   <soapenv:Header/>
   <soapenv:Body>
      <req:initiatePaymentDetailsReq>
         <olpIdAlias>*****</olpIdAlias>
         <merchantId>********</merchantId>
         <merchantRefNum>'.rand(1, 15).rand().'</merchantRefNum>
         <paymentAmount>'.$tb.'</paymentAmount>
         <paymentCurrency>SAR</paymentCurrency>
         <dynamicMerchantLandingURL></dynamicMerchantLandingURL>
         <dynamicMerchantFailureURL></dynamicMerchantFailureURL>
      </req:initiatePaymentDetailsReq>
   </soapenv:Body>
</soapenv:Envelope>';
try{
$url = "https://b2b.rb.com/soap?service=RB_OLP_INITIATE_PAYMENT";
 $certFile =  dirname(__FILE__)."/key1.pem";
  $certPass = "*****";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch, CURLOPT_SSLCERT, $certFile);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $certPass);
$headers = array();
array_push($headers, "Content-Type: text/xml; charset=utf-8");
array_push($headers, "SOAPAction: sii:RB_OLP_INITIATE_PAYMENT");
array_push($headers, "Host:b22.rb.com");

if($xml != null) {
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    array_push($headers, "Content-Length: " . strlen($xml));
}

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
     print_r($response);
}  catch (Exception $e){
echo $e->getMessage();
   }


?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:Curl https xml 结果返回空白 的相关文章

  • 如何让 PagerDefault 查询与 Drupal 7 一起正常工作?

    我正在运行以下代码 query db select taxonomy index ti gt fields ti array nid gt condition ti tid term gt tid gt condition n status
  • 递归BBCode解析

    我正在尝试解析脚本中的 BBCode 现在 它可以无缝工作 直到我尝试缩进不仅仅是粗体或下划线的 BBCode 例如剧透 网址 字体大小等 然后它就会搞砸 这是我的代码 function parse bbcode text global d
  • 如何在 PHP 中进行静态代码分析? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有PHP源文件的静态分析工具 二进制文件本身可以检查语法错误 但我正在寻找功能更多的东西 例如 未使用的变量赋值 未先初始化就分配到的
  • 如何将 imagecropauto() 与 IMG_CROP_TRANSPARENT 一起使用?

    当我尝试裁剪图像的透明区域时 它会保持原始大小 并且透明区域会变成黑色 如果我运行这段代码
  • 订单编辑页面中的 WooCommerce 自定义字段

    Display custom field Orders edit page add action woocommerce before order itemmeta storage location of order items 10 3
  • 如何在 Doctrine 中使用 andWhere 和 orWhere ?

    WHERE a 1 AND b 1 Or b 2 AND c 1 OR c 2 我怎样才能在教义中做到这一点 q gt where a 1 q gt andWhere b 1 q gt orWhere b 2 q gt andWhere c
  • 如何将值从 android 传递到 php Web 服务并检索它?

    我正在尝试将一个值传递给我的 php web 服务 我已经使用此代码来传递 名称 值 private class MyAsyncTask extends AsyncTask
  • 我们在哪里/什么时候使用 JSON?

    你能告诉我 JSON 有什么用 在 Javascript 和 PHP 中 当我们需要 JSON 方法时 我从以下链接中阅读 但是 我没有获得有关任何项目的 JSON 实现的任何信息 http www json org js html htt
  • 如何构建 Perl Web 服务基础设施

    我有许多用于管理多服务器基础设施的脚本 其中一些脚本需要 root 访问权限 一些需要访问数据库 并且大多数脚本都是基于 perl 的 我想将所有这些脚本转换为非常简单的 Web 服务 可以从不同的应用程序执行 这些 Web 服务将接受常规
  • PHP:将数组添加在一起

    有人可以帮我解释一下吗 我有两段代码 其中一个按我的预期工作 但另一个则不然 这有效 a array a gt 1 b gt 2 b array c gt 3 c a b print r c Output Array a gt 1 b gt
  • 如何在没有数据库的情况下创建AJAX分页?

    是否可以在没有 MySQL 帮助的情况下获取 AJAX 分页页面 难道我不能只添加一个包含我需要显示的文本和标记的 PHP 文件 然后通过单击页码将该内容提供给用户吗 那么可以用纯 jQuery 和 PHP 来实现吗 您会使用什么代码方法来
  • Laravel 中的支付网关回调时会话会自动销毁

    我正在尝试将 CCavenue com 支付网关集成到我的 Laravel 7 项目中 我面临的唯一问题是在回调 url 中 从支付网关获取发布数据后 活动会话会自动销毁 我还向中间件添加了 CSRF 例外 PayController 生成
  • 如何使用 jquery imgAreaSelect 用 php 裁剪图像?

    我正在使用以下 javascript 代码来实例化 jquery图像区域选择 http odyniec net projects imgareaselect 裁剪我的图像 document ready function ladybug im
  • 下载表格 - 选择文件合并到 Zip 中

    我希望创建一个表单 用户可以从手册列表中进行选择 总共10个 他们可能只想下载 3 份小册子 或 6 份 或 1 份 或 9 份小册子 但想法是他们选择所需的小册子 然后用脚本组合一个包含所需小册子的 zip 文件 任何人都可以提出任何建议
  • 为 foreach() 提供的参数无效..Wordpress

    突然开始出现以下代码的错误 img src title 有时分类 贷款俱乐部 是空的 这可能是问题所在吗 如果是这样 有人可以指出我正确的代码吗 Add if之前的情况foreach
  • 使用 Laravel dusk 仅迁移一次

    根据到 数据库测试 文档 https laravel com docs 5 4 database testing resetting the database after each test我可以在每次测试后重置数据库 第一个选项 第二个选
  • PHP 中的数据清理[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • PHP filesize() 适用于除一个文件之外的所有文件,给出 stat failed 错误

    我正在编写一个 PHP 页面 该页面通过抓取现有 HTML 页面来生成播客提要 一切正常 但我的 mp3 文件之一出现 filesize stat failed 错误 据我所知 该文件没有损坏 并且播放得很好 我还将文件重新上传到服务器 它
  • PHP 内置函数复杂性(isAnagramOfPalindrome 函数)

    我在过去的两个小时里一直在谷歌搜索 但找不到 php 内置函数时间和空间复杂度的列表 我有回文字谜 https stackoverflow com questions 4628386 what is the best algorithm t
  • 如何确定函数是否不返回任何内容?

    有没有办法在 PHP 中使用反射或其他方法来做到这一点 function a return null function b a a null b b null 如果您没有显式返回某些内容 则函数将返回null默认情况下 这就是 PHP 中函

随机推荐

  • 将 html 表单值传递给 google 搜索查询[重复]

    这个问题在这里已经有答案了 旁注 在每个人告诉我谷歌的自定义搜索引擎之前 我一直在使用它直到现在 但我发现很难设计该搜索框的样式 并且它在我的网站上崩溃了 Hello 我正在尝试创建一个使用 HTML 表单输入的 google 搜索查询 我
  • VBA:运行时错误“91”?

    我在这里想做的就是保存对当前活动窗口的引用 但它似乎不起作用 它在最后一行给了我一个运行时错误 Dim SourceWindow As Window QACheckWindow As Window SourceWindow ActiveWi
  • iOS:处理长按并拖动以选择另一个按钮。 (如键盘)

    我很难找到有关如何处理触摸事件以支持与键盘类似的行为的正确文档 我想要的是一个按钮 当我长按它时 它会在按钮上方显示一个自定义视图控制器 但我希望用户能够将手指拖动到其他按钮之一 无需将手指离开屏幕 我长按按钮 它是自定义视图控制器的所有设
  • 上下文是只读的

    Helo大师 我必须动态创建一个JNDI数据源 我尝试使用名为SetupApplicationListener的侦听器来完成它 这是开始WEB LIB web xml
  • 将参数从 pug 传递到 JSX

    我正在使用 Express 和 React 构建游戏 我需要访问我的 userIdindex jsx文件来在我的控制器上执行操作 例如增加用户分数 我的路线呈现index pug文件同时传递user id param server js a
  • 具体时间通知

    我在特定时间收到通知 请参阅我的代码 Create alarm manager AlarmManager alarmMgr0 AlarmManager getSystemService Context ALARM SERVICE Creat
  • JavaScript 字符串换行符是什么?

    Is nJavaScript 中适用于所有平台的通用换行符序列 如果不是 我如何确定当前环境的特征 我不是在询问 HTML 换行元素 br 我问的是 JavaScript 字符串中使用的换行符序列 我刚刚使用这段愚蠢的 JavaScript
  • 如何让我的 Android 应用程序出现在超省电模式下

    一些三星设备具有超省电模式 可以关闭 wifi 将屏幕变成灰度并限制使用一些基本应用程序 但是 它确实允许您添加一些可以使用的应用程序 这些应用程序包括 Facebook 和 WhatsApp 如何让我的应用程序出现在此列表中 我必须对应用
  • ajax响应错误(XML解析错误:找不到元素位置:moz-nullprincipal)

    我无法得到 ajax 的响应 请指导我如何解决此错误 我从已签入的服务器成功返回数据小提琴网络调试器并且 ajax 仍然显示错误 XML 解析错误 找不到元素位置 moz nullprincipal 6b0a1ac2 50ab 4053 9
  • 如何在 Rails 视图中注释代码?

    当我使用 Rails 并开发视图时 我经常想注释掉代码 类和模型足够简单 但是views有点棘手 在视图中注释代码的最佳方式是什么 这样它就不会被任何东西解释 HTML 给了我们尽管这里包含的代码似乎无论如何都会被解释 或者还有更 Rail
  • Flutter FCM onBackgroundMessage 处理程序给出 null 检查错误

    我正在尝试为我的应用程序实现通知 但是在初始化通知时FirebaseMessaging onBackgroundMessage notificationHandler 给出错误 Error E flutter 28265 错误 flutte
  • JVM 在 Ubuntu 上尝试打开 JavaFX 保存对话框或打开对话框时崩溃

    在 Windows 中一切正常 我只是使用 JavaFX 和 Java 1 8 0 131 从操作系统中选择文件 A fatal error has been detected by the Java Runtime Environment
  • Selenium 登录测试不接受 pytest 设备登录或拒绝连接

    我变得绝望 因为我似乎找不到一个我认为每个人都会使用的解决方案 我想使用 selenium 和 pytest 以及 live server url 来测试简单的登录 根据 pytest django 文档 一个简单的固定装置称为live s
  • Gradle Kotlin DSL:如何使用 typesafe api 配置子项目

    摇篮6 1 1 我一直在尝试使用 Kotlin DSL 转换我的项目的 Gradle 文件类型安全方式但到目前为止失败了 我的所有项目都是用 Java 进行的多项目构建 这个想法是分解 删除子模块的常见配置 无论是在根模块的 子项目 块中还
  • Razor Pages 与服务器端 Blazor

    用于服务器端 Web 应用程序 就像过去的美好时光一样 Blazor https learn microsoft com en us aspnet core blazor view aspnetcore 3 1旨在提供流行 JavaScri
  • 在knitr中,for循环中的pander没有输出

    在 RStudio 中使用 knit pander 在 for 循环中不会生成任何 或正确的 html 输出 这是一个最小的情况 作为 Rmd 输入文件 title Untitled output html document Testing
  • doFilter() 是在 Servlet 工作完成之前还是之后执行?

    The javax servlet Filter http java sun com j2ee sdk 1 3 techdocs api javax servlet Filter html对象既可用于身份验证 其中 Filter 需要在需要
  • 如何在 React Native 中隐藏和显示导航栏?

    我正在传递 props 当滚动特定高度时 我正在传递 paramsshowHeader True 因此 当我滚动时 标题是不透明的 最初它是透明的 因此 在用户滚动回顶部后 我希望标题再次透明 但它是不透明的 我该如何解决这个问题 Code
  • Google 文档 - 实时访问文本更改

    Goal 我们的用户在 Google 文档中工作 他们编写的文本将在他们输入时使用文本转语音朗读给他们听 它应该能够跨尽可能多的平台和浏览器工作 我们的解决方案 这似乎适合谷歌应用脚 本 https developers google co
  • PHP:Curl https xml 结果返回空白

    请需要您的帮助 我正在尝试使用curl 创建一个PHP Soap 客户端 当我运行 PHP 代码时 我得到空白结果 这是一个 https 连接 我用 OpenSSL 生成我的 pem 文件example https stackoverflo