yandex-money/yandex-checkout-payout-sdk-php

此包已被废弃,不再维护。作者建议使用 yoomoney/yookassa-payout-sdk-php 包。

1.0.3 2020-09-22 14:59 UTC

This package is auto-updated.

Last update: 2020-12-04 18:08:23 UTC


README

Build Status Latest Stable Version Total Downloads Monthly Downloads License

用于处理大量支付协议的客户端

功能

使用此 SDK 您可以

  1. 生成用于与 Яндекс.Касса交互的证书。
  2. 个人转账至 Яндекс.Деньгах的电子钱包、手机号码、银行卡和账户(makeDeposition)。
  3. 检查向 Яндекс.Деньгах电子钱包转账的可能性(testDeposition)。
  4. 跟踪支付余额(balance)。
  5. 获取关于转账至银行账户、卡、手机失败的提醒(errorDepositionNotification)。

要求

PHP 5.6.0(及以上)带libcurl和libxml扩展

安装

使用以下三种方式之一安装 SDK

在命令行中使用 Composer

  1. 安装 Composer 包管理器。
  2. 在命令行中执行以下命令
composer require yandex-money/yandex-checkout-payout-sdk-php

在项目的 composer.json 文件中

  1. 在项目的 composer.json 文件中依赖列表中添加 "yandex-money/yandex-checkout-payout-sdk-php": "*"
...
    "require": {
        "php": ">=5.6.0",
        "yandex-money/yandex-checkout-payout-sdk-php": "*"
...
  1. 更新项目依赖:在命令行中切换到 composer.json 文件所在的目录,并执行以下命令
composer update
  1. 在您的项目代码中引入 SDK 的自动加载文件
require __DIR__ . '/vendor/autoload.php';

手动安装

  1. 下载 Yandex.Checkout Payout API PHP Client Library 存档,解压它并将 lib 目录复制到您的项目中存放 SDK 的文件夹中。
  2. 在您的项目代码中引入 SDK 的自动加载文件
require __DIR__ . '/lib/autoload.php'; 

获取用于认证请求的证书

与 Яндекс.Касса交互需要获取证书。为此

  1. 创建私有密钥和证书签名请求(CSR)。
  2. 填写证书申请。
  3. 与 Яндекс.Касса交换数据。

步骤 1. 创建私有密钥和 CSR

使用 SDK 方法

  1. 导入用于创建 CSR 的类
use YandexCheckoutPayout\Client;
use YandexCheckoutPayout\Model\Organization;
  1. 创建一个包含申请数据的 Organization 类实例。所有数据都需要用拉丁字母输入。
$organization = new Organization();
$organization->setEmailAddress('test@mail.ru') //Адрес электронной почты
             ->setOrganizationName('ooo sdk.com') //Название вашей организации (латиницей)
             ->setCommonName('/business/test123'); //Имя сервера без пробелов, например название вашей организации; должно начинаться с «/business/»
  1. 创建 CSR 和私有密钥。
$client->createCsr($organization, './output/', '') //Укажите место, куда должны сохраниться файлы, и пароль для приватного ключа (при необходимости)

SDK 将生成私有密钥、CSR 和带电子签名的文本文件(用于后续步骤)。

通过控制台

  1. 在控制台中切换到包含 SDK 的项目文件夹。
cd <путь к SDK>
  1. 执行以下命令
php bin/yamoney get:csr
  1. 根据屏幕上的指示输入证书信息。请用拉丁字母输入文本。SDK 将生成私有密钥、CSR 和带电子签名的文本文件(用于后续步骤)。

步骤 2. 填写证书申请表

下载证书申请表,填写并打印。签名并盖章。扫描。

参数 说明
CN 必须与通用名称(例如,YOUR name)的值相匹配。例如,/business/predpriyatie。
证书请求电子签名 上一步骤中获得的内容的文本表示。
组织名称(拉丁字母) 必须与组织名称(例如,company)[Internet Widgits Pty Ltd]的值相匹配。
申请原因 可能选项
  • 初始 — 用于获取第一个证书;
  • 计划更换 — 用于更换即将到期的证书;
  • 更换受损 — 用于更换因安全违规而发行的先前证书;
  • 添加服务器 — 用于在额外的服务器或服务上使用新证书。
联系人(姓名、电话、电子邮件) 联系专家以解决关于颁发证书的问题。

步骤 3. 与雅虎钱包交换数据

通过电子邮件将证书请求文件(request.csr)和申请表扫描件发送给雅虎钱包的经理。经理将在2个工作日内回复带有证书的文件。证书的有效期为1年。
将获得的证书放置在您的服务器上

开始工作

  1. 确定您需要哪些类型的支付以及您是否想检查余额。
  2. 导入必需的类
use YandexCheckoutPayout\Client;
use YandexCheckoutPayout\Request\Keychain;
  1. 导入解决您任务所需的类。
  2. 创建一个 Keychain 类的实例,传递公共密钥的路径、私有密钥的路径以及必要时私有密钥的密码。
$keychain = new Keychain('publicCert.cer', 'privateCert.pem', 'password');
  1. 创建一个 Client 类的实例,传递雅虎钱包个人账户中的网关标识符以及 Keychain 类的实例。
$client = new Client('000000', $keychain);
  1. 调用所需的方法。有关进行支付的详细信息,请参阅支付操作

示例:向银行账户支付

// Импорт классов
use YandexCheckoutPayout\Client;
use YandexCheckoutPayout\Model\Recipient\BankAccountRecipient;
use YandexCheckoutPayout\Request\Keychain;
use YandexCheckoutPayout\Request\MakeDepositionRequest;

// Создание ключницы и экземпляра клиента
$keychain = new Keychain('./250000.cer', './privateKey.pem', 12345);
$client  = new Client('250000', $keychain);

// Подготовка данных о получателе выплаты
$recipient = new BankAccountRecipient();
$recipient->setPdrLastName('Иванов')
           ->setPdrFirstName('Иван')
           ->setPdrMiddleName('Иванович')
           ->setDocNumber('1234567890')
           ->setPofOfferAccepted(true)
           ->setPdrDocIssueDate('01.02.2018')
           ->setSmsPhoneNumber('79000000000')
           ->setPaymentPurpose('Назначение выплаты')->setBankBIK(5435435435)->setBankCorAccount('');

// Проведение выплаты
$deposition = new MakeDepositionRequest();
$deposition->setDstAccount('25700120202056919')
       ->setAmount(100)
       ->setCurrency(CurrencyCode::RUB)
       ->setContract('test')
       ->setPaymentParams($recipient);

$client->createDeposition($deposition);