承接 super-vle/easy_pay 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

super-vle/easy_pay

Composer 安装命令:

composer require super-vle/easy_pay

包简介

PHP支付集成组件,支持微信支付、微信合作平台(服务商模式)、支付宝等常见支付方式

README 文档

README

PHP 支付集成组件,统一封装微信支付、微信合作平台(服务商模式)、支付宝、慧收款(宝付聚合支付)等常见支付方式,提供一致的 API 调用体验。

支持的支付方式

支付网关 类名 说明
微信支付 Wechat\WechatPay 普通商户模式,支持 JSAPI/APP/H5/Native/付款码
微信合作平台 Wechat\PartnerPay 服务商模式,支持子商户管理
支付宝 Alipay\Alipay 支持电脑网站/手机网站/APP/扫码/JSAPI
慧收款 Huishouqian\Huishouqian 宝付聚合支付,支持全场景支付/查询/退款/通知

环境要求

  • PHP >= 7.4
  • ext-json
  • ext-openssl
  • ext-curl
  • Composer

安装

composer require easy/easy_pay

快速开始

微信支付(普通商户)

use EasyPay\EasyPay;

$wechat = EasyPay::wechat([
    'app_id'     => '你的公众号/小程序/APP的AppID',
    'mch_id'     => '你的商户号',
    'api_key'    => '你的API密钥',
    'notify_url' => 'https://your-domain.com/notify/wechat',
]);

// JSAPI 支付(公众号/小程序)
$result = $wechat->pay([
    'body'         => '测试商品',
    'out_trade_no' => 'ORDER20231201001',
    'total_fee'    => 1,  // 金额单位:分
    'trade_type'   => 'JSAPI',
    'openid'       => '用户的openid',
]);
// 返回前端调起支付所需的参数

// Native 扫码支付
$result = $wechat->pay([
    'body'         => '扫码测试商品',
    'out_trade_no' => 'ORDER20231201002',
    'total_fee'    => 100,
    'trade_type'   => 'NATIVE',
]);
// $result['code_url'] 为支付二维码链接

// APP 支付
$result = $wechat->pay([
    'body'         => 'APP商品',
    'out_trade_no' => 'ORDER20231201003',
    'total_fee'    => 100,
    'trade_type'   => 'APP',
]);

// H5 支付
$result = $wechat->pay([
    'body'         => 'H5商品',
    'out_trade_no' => 'ORDER20231201004',
    'total_fee'    => 100,
    'trade_type'   => 'MWEB',
    'scene_info'   => json_encode([
        'h5_info' => ['type' => 'Wap', 'wap_url' => 'https://your-domain.com', 'wap_name' => '测试网站']
    ]),
]);

微信合作平台(服务商模式)

use EasyPay\EasyPay;

$partner = EasyPay::wechatPartner([
    'app_id'     => '服务商AppID',
    'mch_id'     => '服务商商户号',
    'sub_mch_id' => '子商户商户号',
    'sub_app_id' => '子商户AppID(可选)',
    'api_key'    => 'API密钥',
    'notify_url' => 'https://your-domain.com/notify/wechat',
]);

// 服务商为子商户发起支付(参数与普通模式类似,自动附加子商户信息)
$result = $partner->pay([
    'body'         => '子商户商品',
    'out_trade_no' => 'SUB20231201001',
    'total_fee'    => 100,
    'trade_type'   => 'JSAPI',
    'openid'       => '用户的openid',
]);

支付宝

use EasyPay\EasyPay;

$alipay = EasyPay::alipay([
    'app_id'            => '你的支付宝AppID',
    'private_key'       => '/path/to/private_key.pem',       // 应用私钥路径或内容
    'alipay_public_key' => '/path/to/alipay_public_key.pem', // 支付宝公钥路径或内容
    'notify_url'        => 'https://your-domain.com/notify/alipay',
    'return_url'        => 'https://your-domain.com/return/alipay',
    'sign_type'         => 'RSA2',  // RSA 或 RSA2
]);

// 电脑网站支付(返回自动提交的 HTML 表单)
$html = $alipay->pagePay([
    'subject'      => '测试商品',
    'out_trade_no' => 'ALI20231201001',
    'total_amount' => '0.01',  // 金额单位:元
    'body'         => '商品描述',
]);
echo $html;

// 手机网站支付
$result = $alipay->wapPay([
    'subject'      => '手机商品',
    'out_trade_no' => 'ALI20231201002',
    'total_amount' => '0.01',
]);

// APP 支付(返回参数字符串)
$paramStr = $alipay->appPay([
    'subject'      => 'APP商品',
    'out_trade_no' => 'ALI20231201003',
    'total_amount' => '0.01',
]);

// 扫码支付
$result = $alipay->preCreate([
    'subject'      => '扫码商品',
    'out_trade_no' => 'ALI20231201004',
    'total_amount' => '0.01',
]);

// 付款码支付
$result = $alipay->barCodePay([
    'subject'      => '付款码商品',
    'out_trade_no' => 'ALI20231201005',
    'total_amount' => '0.01',
    'auth_code'    => '用户付款码',
]);

慧收款(宝付聚合支付)

use EasyPay\EasyPay;

$hsq = EasyPay::huishouqian([
    'mer_id'      => '宝付分配的商户号',
    'ter_id'      => '宝付分配的终端号',
    'private_key' => '/path/to/private_key.pem',   // 商户私钥
    'public_key'  => '/path/to/public_key.pem',    // 宝付平台公钥
    'sign_type'   => 'RSA',  // RSA 或 SM2(国密)
    'notify_url'  => 'https://your-domain.com/notify/huishouqian',
]);

// JSAPI 支付(公众号/小程序)
$result = $hsq->payJsapi([
    'body'         => '测试商品',
    'out_trade_no' => 'HSQ20231201001',
    'total_amount' => '0.01',  // 金额单位:元
    'openid'       => '用户的openid',
]);

// APP 支付
$result = $hsq->payApp([
    'body'         => 'APP商品',
    'out_trade_no' => 'HSQ20231201002',
    'total_amount' => '0.01',
]);

// H5 支付
$result = $hsq->payH5([
    'body'         => 'H5商品',
    'out_trade_no' => 'HSQ20231201003',
    'total_amount' => '0.01',
]);

// PC 支付
$result = $hsq->payPc([
    'body'         => 'PC商品',
    'out_trade_no' => 'HSQ20231201004',
    'total_amount' => '0.01',
]);

// 主扫支付(用户扫码)
$result = $hsq->masterScan([
    'body'         => '扫码商品',
    'out_trade_no' => 'HSQ20231201005',
    'total_amount' => '0.01',
]);
// $result['code_url'] 为二维码链接

// 被扫支付(商户扫用户付款码)
$result = $hsq->microPay([
    'body'         => '付款码商品',
    'out_trade_no' => 'HSQ20231201006',
    'total_amount' => '0.01',
    'auth_code'    => '用户付款码',
]);

// 综合支付(前端自动选择支付方式)
$result = $hsq->composite([
    'body'         => '综合商品',
    'out_trade_no' => 'HSQ20231201007',
    'total_amount' => '0.01',
]);

// 查询订单
$order = $hsq->query('HSQ20231201001');

// 关闭订单
$hsq->close('HSQ20231201001');

// 申请退款
$refund = $hsq->refund([
    'out_trade_no'  => 'HSQ20231201001',
    'out_refund_no' => 'RF20231201001',
    'total_amount'  => '0.01',
    'refund_amount' => '0.01',
    'refund_reason' => '用户申请退款',
]);

// 处理回调
try {
    $data = $hsq->notify();  // 自动验签
    // 处理业务逻辑
    echo $hsq->replySuccess();  // 返回 "OK"
} catch (\EasyPay\Exceptions\PaymentException $e) {
    echo $hsq->replyFail();
}

通用操作

订单查询

// 微信
$order = $wechat->query('ORDER20231201001');

// 支付宝
$order = $alipay->query('ALI20231201001');

关闭订单

// 微信
$wechat->close('ORDER20231201001');

// 支付宝
$alipay->close('ALI20231201001');

申请退款

// 微信
$refund = $wechat->refund([
    'out_trade_no'  => 'ORDER20231201001',
    'out_refund_no' => 'RF20231201001',
    'total_fee'     => 100,   // 原订单金额(分)
    'refund_fee'    => 50,    // 退款金额(分)
    'refund_desc'   => '用户申请退款',
]);

// 支付宝
$refund = $alipay->refund([
    'out_trade_no'   => 'ALI20231201001',
    'out_request_no' => 'RF20231201001',
    'refund_amount'  => '0.01',  // 退款金额(元)
    'refund_reason'  => '用户申请退款',
]);

查询退款

// 微信
$refundInfo = $wechat->queryRefund('RF20231201001');

// 支付宝
$refundInfo = $alipay->queryRefund('RF20231201001');

处理支付回调通知

// 微信
try {
    $data = $wechat->notify();  // 自动验签
    // 根据 $data['out_trade_no'] 处理业务逻辑
    echo $wechat->replySuccess();
} catch (\EasyPay\Exceptions\PaymentException $e) {
    echo $wechat->replyFail($e->getMessage());
}

// 支付宝
try {
    $data = $alipay->notify();  // 自动验签
    // 处理业务逻辑
    echo $alipay->replySuccess();
} catch (\EasyPay\Exceptions\PaymentException $e) {
    echo $alipay->replyFail();
}

微信 v3 API(可选)

// JSAPI v3
$result = $wechat->payJsapi([
    'description'  => '测试商品',
    'out_trade_no' => 'ORDER20231201001',
    'amount'       => ['total' => 1, 'currency' => 'CNY'],
    'openid'       => '用户的openid',
]);

// Native v3
$result = $wechat->payNative([
    'description'  => '测试商品',
    'out_trade_no' => 'ORDER20231201002',
    'amount'       => ['total' => 1, 'currency' => 'CNY'],
]);

异常处理

use EasyPay\Exceptions\PaymentException;
use EasyPay\Exceptions\InvalidConfigException;

try {
    $result = $wechat->pay([...]);
} catch (InvalidConfigException $e) {
    // 配置错误
    echo "配置错误: " . $e->getMessage();
} catch (PaymentException $e) {
    // 支付业务异常
    echo "支付失败: " . $e->getMessage();
    echo "错误码: " . $e->getErrorCode();
    print_r($e->getRaw());  // 原始响应数据
}

目录结构

easy_pay/
├── composer.json
├── src/
│   ├── EasyPay.php              # 主入口类
│   ├── AbstractPayment.php      # 抽象基类
│   ├── Contracts/
│   │   └── PaymentInterface.php # 支付接口契约
│   ├── Exceptions/
│   │   ├── PaymentException.php # 支付异常
│   │   └── InvalidConfigException.php
│   ├── Wechat/
│   │   ├── WechatPay.php        # 微信支付(普通商户)
│   │   └── PartnerPay.php       # 微信支付(服务商模式)
│   ├── Alipay/
│   │   └── Alipay.php                # 支付宝支付
│   ├── Huishouqian/
│   │   └── Huishouqian.php          # 慧收款(宝付聚合支付)
│   └── Support/
│       ├── Config.php           # 配置管理
│       ├── HttpClient.php       # HTTP 客户端
│       └── Utils.php            # 工具方法

License

MIT

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-13

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固