支付宝支付核心类

Overview

前言

工作这些年接入过很多次大厂的API,使用过程中终会遇到点奇奇怪怪的问题。

在阅读了市面上现有的很多SDK源码之后给我一个启发,我想让更多大厂难用的API变得更简单易用。

于是EasySdk就在这样的设想下横空出世了,这是EasySdk支付宝的核心库,分开各个大分类的分支,各位同学可以直接fork本仓库实现自己的SDK。

QQ交流群:57914282

特点

  • 简单易用使用
  • 隐藏开发者不需要关注的细节
  • 支持开发者替换自己的模块

运行环境

  • PHP 7.2.5+
  • composer

依赖库

  • "pimple/pimple": "^3.4"
  • "guzzlehttp/guzzle": "^7.3"
  • "ext-mbstring": "*"

安装

composer require panyongwei/easysdk-alipay-kernel:~0.0.1 -vvv

基于 easysdk-alipay-kernel 开发自己的类库

1、修改 composer.json 文件家在支付宝核心库

"require": {
  "sphynx/easysdk-alipay-kernel": "dev-master"
},

2、库目录

├── composer.json                   composer.json管理
├── src                             库源码
    ├── AlipayPay.php               入口文件通过这个文件去 Application.php 注册服务和调用
    ├── Application.php             服务提供者文件,负责注册和调用不同模块的服务对象             
    ├── F2fpay                      面对面支付实例
        ├── Client.php              面对面支付api对接代码,开发者都在这里编写业务逻辑
        └── ServiceProvider.php     面对面支付宝服务提供者注册代码
└── vendor

AlipayPay.php 代码

namespace EasySDK\AlipayPay;
use EasySDK\AlipayKernel\ServiceContainer;
/**
 * @method static Application Foctory(array $config)
 */
class AlipayPay extends ServiceContainer
{
    public static function make(string $name, array $config)
    {
        // 这里的命名空间是 Application.php 所在的命名空间
        $application = "\\EasySDK\\AlipayPay\\Application";
        return new $application($config);
    }

    public static function __callStatic($name, $arguments)
    {
        return self::make($name, ...$arguments);
    }
}

Application.php 代码

namespace EasySDK\AlipayPay;
use EasySDK\AlipayKernel\ServiceContainer;
/**
 * @property \EasySDK\AlipayPay\F2fpay\Client $f2fpay 付款码支付
 * @property \EasySDK\AlipayPay\Pc\Client $pc 电脑网站支付
 */
class Application extends ServiceContainer
{
    /**
     * 服务注册
     */
    protected array $providers = [
        \EasySDK\AlipayPay\F2fpay\ServiceProvider::class,
        \EasySDK\AlipayPay\Pc\ServiceProvider::class,
    ];

    /**
     * @param string $name
     * @param array $arguments
     *
     * @return mixed
     */
    public function __call(string $name, array $arguments)
    {
        return call_user_func_array([$this['base'], $name], $arguments);
    }
}

F2fpay/Client.php 代码

post($method, $params); } } ">
namespace EasySDK\AlipayPay\F2fpay;
use EasySDK\AlipayKernel\Exceptions\InvalidArgumentException;
use EasySDK\AlipayKernel\Exceptions\InvalidSignException;
use EasySDK\AlipayKernel\Exceptions\NetworkException;
use EasySDK\AlipayKernel\BaseClient;

class Client extends BaseClient
{
    /**
     * 面对面付款下单接口功能
     * 统一收单交易支付接口
     * 参数参考:https://opendocs.alipay.com/apis/api_1/alipay.trade.precreate
     * @param array $params
     * @return mixed
     * @throws InvalidArgumentException
     * @throws InvalidSignException
     * @throws NetworkException
     */
    public function precreate(array $params): mixed
    {
        $method = "alipay.trade.precreate";
        return $this->post($method, $params);
    }
}

$params 参数是支付宝的请求参数数组,调用 BaseClient 里面的 post 方法即可,签名和验签都已经在 BaseClient 实现。

QQ交流群:57914282

You might also like...
Owner
Sphynx
Sphynx