Paymentexpress有一个SOAP服务方法Check3dsEnrollment(String username,String password, EnrolmentCheckRequest transaction).第三个参数是复杂参数,包括如下属性: acmout,cardNumber,dateExpiry,txnDescription,txnRef,currency
在php SOAP中使用数组来传入复杂参数,代码例如下:
Php代码
1. $soapClient = new SoapClient('https://www.paymentexpress.com/WSTest/PXWS.asmx?WSDL');
2. $transactionDetails = array(
3. 'acmout'=>'12.35',
4. 'cardNumber'=>'',
5. 'dateExpiry'=>'1010',
6. 'txnDescription'=>'Payment Test',
7. 'txnRef'=>'PT937459',
8. 'currency'=>'USD',
9. );
10. $param=array(
11. 'postUsername' => 'My_Dev',
12. 'postPassword' => 'My_Password',
13. 'transactionDetails' => $transactionDetails,
14. );
15. $ret = $soapClient->Check3dsEnrollment($param);
16. print_r($ret);
用php5+ 做 webservice
1,首先要设置服务器环境。
修改php.ini
得添加 extension=php_soap.dll (加载soap 内置包)
修改 soap.wsdl_cache_enabled=1 改为 soap.wsdl_cache_enabled=0
2,写soap 服务端。(用 Zend Studio For Eclipse 编写)
2.1, 写一个用来提供给客户端用的类文件 ( DizzyLion.php )
Class DizzyLion {
/ **
* 求和函数
* @param float $p_a
* @param float $p_b
* @return float
* /
Public function sum($p_a, $p_b){
Return $p_a + $p_b;
}
}
说明:写上函数的标准注释有利于下面做wsdl的工作。
2.2, 生成wsdl 文件。(dizzylion.wsdl)如果这个你能手写,那你真是太强了。我用zend studio 生成的。
我用的Zend Studio for Eclipse 6.1
选’File’->’Export’->’PHP’->’WSDL File’
在“Generate WSDL File” 的窗口中。
Configuration name 取自己想设的名字;File name 指定要生成wsdl文件(dizzylion.wsdl);Exported files 中“Add”添加刚刚的 DizzyLion.php类文件;在 classer url 就会出现DizzyLion.php的所有类, 勾选 DizzyLion. 在 url 写入 server.php的WEB访问URL如:http://localhot/server.php。点“finish”就好了。如果有上面的标准注释这里就不用再去设置wsdl里对应参数类型之类了。
2.3, 写Soap 服务端文件 (server.php)
<?php
Require ‘./DizzyLion.php’;
$server = new SoapServer(‘./dizzylion.wsdl’);
$server->setClass(‘DizzyLion’);
$server->handle();
?>
3, 写Soap客户端。(client.php)
<?php
$soap = new SoapClient(‘./dizzylion.wsdl’); //如果是远程,那当然写dizzylion.wsdl的URL了。
echo $soap->sum(1.1, 3.1);
?>
运行client.php 得到 4.2 .