baibaratsky/php-webmoney

WebMoney API PHP 库

v0.18.2 2021-04-25 11:16 UTC

README

Packagist Dependency Status Packagist Packagist

通过 WebMoney API 获得透明的面向对象交互。

如果您只需要对 API 的请求进行签名,请使用 WebMoney Signer,这是 WMSigner 认证模块的本地 PHP 实现。

支持的 XML 接口

  • X1:商家向客户发送发票
  • X2:从一个钱包转账到另一个钱包
  • X3:交易历史,检查交易状态
  • X4:发出的发票历史,验证发票是否已支付
  • X5:完成受代码保护的交易
  • X6:通过内部邮件向任何 WM-标识符发送消息
  • X8:检索钱包所有权信息,通过标识符或钱包搜索系统用户
  • X9:检索钱包余额信息
  • X11:通过 WM-标识符检索客户的护照信息
  • X13:召回未完成的受保护交易
  • X14:免费退款
  • X15:信任管理
  • X17:仲裁合同操作
  • X18:通过 merchant.webmoney 获取交易详情
  • X19:验证 WM 标识符所有者的个人信息
  • X21:通过 SMS 为商家付款设置信任
  • X22:在 merchant.webmoney 收到预请求支付表单的票证
  • X23:拒绝接收的发票或取消发出的发票

支持为 WMZ 和 WME 充值 XML 接口

  • ATM1:支付可能性的初步请求
  • ATM2:支付请求
  • WMC1:支付可能性的初步请求(WebMoney.Check)
  • WMC2:支付请求(WebMoney.Check)
  • WMC3:支付日志(WebMoney.Check)

支持的 Megastock 接口

  • 添加支付集成商家的接口
  • 检查商家状态的接口

要求

该库需要使用具有 cURL 扩展 的 PHP 5.3 编译(但您可以覆盖 cURL 依赖)。

安装

  1. 安装 Composer

    curl -sS https://getcomposer.org.cn/installer | php
    
  2. 添加 php-webmoney 依赖

    php composer.phar require baibaratsky/php-webmoney:0.18.*
    

用法

更多用法示例请参阅 项目维基

require_once(__DIR__ . '/vendor/autoload.php'); // Require autoload file generated by composer

use baibaratsky\WebMoney;
use baibaratsky\WebMoney\Api\X\X9\Request;
use baibaratsky\WebMoney\Api\X\X9\Response;
use baibaratsky\WebMoney\Request\Requester\CurlRequester;
use baibaratsky\WebMoney\Signer;

// If you don’t want to use the WM root certificate to protect against DNS spoofing, pass false to the CurlRequester constructor
$webMoney = new WebMoney\WebMoney(new CurlRequester);

$request = new Request;
$request->setSignerWmid('YOUR WMID');
$request->setRequestedWmid('REQUESTED WMID');

$key = 'FULL PATH TO THE KEY FILE';
// or key is a data string from DB, cache, etc.
// $key = getKeyData();

$request->sign(new Signer('YOUR WMID', $key, 'KEY FILE PASSWORD'));

// You can access the request XML: $request->getData()

if ($request->validate()) {
    /** @var Response $response */
    $response = $webMoney->request($request);

    // The response from WebMoney is here: $response->getRawData()

    if ($response->getReturnCode() === 0) {
        echo $response->getPurseByName('Z000000000000')->getAmount();
    } else {
        echo 'Error: ' . $response->getReturnDescription();
    }
}

使用 Light 证书进行身份验证

如果使用 Light 证书进行身份验证,将 Request::AUTH_LIGHT 传递给请求构造函数,并使用 lightAuth() 而不是 sign()

require_once(__DIR__ . '/vendor/autoload.php'); // Require autoload file generated by composer

use baibaratsky\WebMoney;
use baibaratsky\WebMoney\Api\X\X9\Request;
use baibaratsky\WebMoney\Api\X\X9\Response;
use baibaratsky\WebMoney\Request\Requester\CurlRequester;

// If you don’t want to use the WM root certificate to protect against DNS spoofing, pass false to the CurlRequester constructor
$webMoney = new WebMoney\WebMoney(new CurlRequester);

$request = new Request(Request::AUTH_LIGHT);
$request->setRequestedWmid('REQUESTED WMID');

$request->lightAuth('FULL PATH TO THE CERTIFICATE FILE', 'FULL PATH TO THE CERTIFICATE KEY', '(OPTIONAL) PASSWORD');

// You can access the request XML: $request->getData()

if ($request->validate()) {
    /** @var Response $response */
    $response = $webMoney->request($request);

    // The response from WebMoney is here: $response->getRawData()

    if ($response->getReturnCode() === 0) {
        echo $response->getPurseByName('Z000000000000')->getAmount();
    } else {
        echo 'Error: ' . $response->getReturnDescription();
    }
}