yandex-money/yandex-money-sdk-php 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

yandex-money/yandex-money-sdk-php

Composer 安装命令:

composer require yandex-money/yandex-money-sdk-php

包简介

Yandex.Money API SDK for PHP

README 文档

README

Build Status

PHP Yandex.Money API SDK

Requirements

PHP 5.3 or above

Links

  1. Yandex.Money API page: Ru, En
  2. sample app

Getting started

Installation

  1. Add "yandex-money/yandex-money-sdk-php": "3.0.*" to composer.json of your application. Or clone repo to your project.
  2. If you are using composer - simply use require_once 'vendor/autoload.php'; otherwise paste following code
    // For payments from the Yandex.Money wallet
    require_once '/path/to/cloned/repo/lib/api.php';
    
    // For payments from bank cards without authorization
    require_once '/path/to/cloned/repo/lib/external_payment.php';

Payments from the Yandex.Money wallet

Using Yandex.Money API requires following steps

  1. Obtain token URL and redirect user's browser to Yandex.Money service. Note: client_id, redirect_uri, client_secret are constants that you get, when register app in Yandex.Money API.

    use \YandexMoney\API;
    
    $auth_url = API::buildObtainTokenUrl($client_id, $redirect_uri, $scope);
  2. After that, user fills Yandex.Money HTML form and user is redirected back to REDIRECT_URI?code=CODE.

  3. You should immediately exchange CODE with ACCESS_TOKEN.

    $access_token_response = API::getAccessToken($client_id, $code, $redirect_uri, $client_secret=NULL);
    if(property_exists($access_token_response, "error")) {
        // process error
    }
    $access_token = $access_token_response->access_token;
  4. Now you can use Yandex.Money API.

    $api = new API($access_token);
    
    // get account info
    $acount_info = $api->accountInfo();
    
    // check status 
    
    // get operation history with last 3 records
    $operation_history = $api->operationHistory(array("records"=>3));
    
    // check status 
    
    // make request payment
    $request_payment = $api->requestPayment(array(
        "pattern_id" => "p2p",
        "to" => $money_wallet,
        "amount_due" => $amount_due,
        "comment" => $comment,
        "message" => $message,
        "label" => $label,
    ));
    
    // check status 
    
    // call process payment to finish payment
    $process_payment = $api->processPayment(array(
        "request_id" => $request_payment->request_id,
    ));

Payments from bank cards without authorization

  1. Fetch instantce-id(ussually only once for every client. You can store result in DB).

    use \YandexMoney\ExternalPayment;
    
    $response = ExternalPayment::getInstanceId($client_id);
    if($response->status == "success") {
        $instance_id = $response->instance_id;
    }
    else {
        // throw exception with $response->error message
    }
  2. Make request payment

    // make instance
    $external_payment = ExternalPayment($instance_id);
    
    $payment_options = array(
        // pattern_id, etc..
    );
    $response = $external_payment->request($payment_options);
    if($response->status == "success") {
        $request_id = $response->request_id;
    }
    else {
        // throw exception with $response->message
    }
  3. Process the request with process-payment.

    $process_options = array(
        "request_id" => $request_id
        // other params..
    );
    $result = $external_payment->process($process_options);
    // process $result according to docs

Side notes

  1. Library throws exceptions in case of
    • response status isn't equal 2**
    • I/O error(see requests)
  2. If you register app and fill CLIENT_SECRET entry then you should provide $client_secret explicitly where $client_secret=NULL
  3. You should wrap all passed boolean values in quotes(because php converts them to numbers otherwise). For example:
API($access_token).requestPayment(array(
    test_payment => "true",
    // other params
));

Running tests

  1. Clone this repo.
  2. Install composer
  3. Run composer install
  4. Make sure phpunit executable is present in your $PATH
  5. Create tests/constants.php with CLIENT_ID, CLIENT_SECRET and ACCESS_TOKEN constants.
  6. Run tests phpunit --bootstrap vendor/autoload.php tests/

yandex-money/yandex-money-sdk-php 适用场景与选型建议

yandex-money/yandex-money-sdk-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 168.84k 次下载、GitHub Stars 达 105, 最近一次更新时间为 2014 年 03 月 12 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「payment」 「money」 「sdk」 「yandex」 「yandex.money」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 yandex-money/yandex-money-sdk-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 yandex-money/yandex-money-sdk-php 我们能提供哪些服务?
定制开发 / 二次开发

基于 yandex-money/yandex-money-sdk-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 168.84k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 106
  • 点击次数: 22
  • 依赖项目数: 7
  • 推荐数: 0

GitHub 信息

  • Stars: 105
  • Watchers: 20
  • Forks: 43
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-03-12