PHPackages                             javareact/easypay - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. javareact/easypay

ActiveLibrary[Payment Processing](/categories/payments)

javareact/easypay
=================

支付宝支付、微信支付一行接入

2.1.3(5y ago)0621MITPHPPHP &gt;=7.1CI failing

Since May 12Pushed 5y ago1 watchersCompare

[ Source](https://github.com/javareact/easy-pay)[ Packagist](https://packagist.org/packages/javareact/easypay)[ Docs](https://github.com/javareact/easy-pay)[ RSS](/packages/javareact-easypay/feed)WikiDiscussions master Synced 5d ago

READMEChangelogDependencies (7)Versions (14)Used By (0)

EasyPay
=======

[](#easypay)

支付宝/微信支付/招商银行 支付/退款/转账/发红包/查账 一行接入
----------------------------------

[](#支付宝微信支付招商银行-支付退款转账发红包查账-一行接入)

```
use Payment\Client\Charge;
use Payment\Common\PayException;

try {
    $str = Charge::run(支付类型, 配置文件, 支付数据);
} catch (PayException $e) {
    echo $e->errorMessage();
    exit;
}
```

目录
==

[](#目录)

- [公告](#%E5%85%AC%E5%91%8A)
    - [重要通知](#%E9%87%8D%E8%A6%81%E9%80%9A%E7%9F%A5)
    - [计划](#%E8%AE%A1%E5%88%92)
- [EasyPay解决什么问题](#EasyPay%E8%A7%A3%E5%86%B3%E4%BB%80%E4%B9%88%E9%97%AE%E9%A2%98)
- [如何使用](#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8)
    - [安装](#%E5%AE%89%E8%A3%85)
    - [项目集成](#%E9%A1%B9%E7%9B%AE%E9%9B%86%E6%88%90)
    - [设计支付系统](#%E8%AE%BE%E8%AE%A1%E6%94%AF%E4%BB%98%E7%B3%BB%E7%BB%9F)
    - [支持的接口](#%E6%94%AF%E6%8C%81%E7%9A%84%E6%8E%A5%E5%8F%A3)
- [贡献指南](#%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97)
    - [代码设计](#%E4%BB%A3%E7%A0%81%E8%AE%BE%E8%AE%A1)
    - [接入支付指南](#%E6%8E%A5%E5%85%A5%E6%94%AF%E4%BB%98%E6%8C%87%E5%8D%97)
- [第三方文档](#%E7%AC%AC%E4%B8%89%E6%96%B9%E6%96%87%E6%A1%A3)
- [License](#License)

重要通知
----

[](#重要通知)

- 2020-7-22 自动过滤参数中的特殊字符,避免签名错误
- 2020-7-8 兼容PHP7.4
- 2020-5-14: **提醒：支付宝新增公钥证书方式,后续不再支持普通公钥方式,请注意升级**

> 官方公告： [https://opendocs.alipay.com/open/00ou7f?click\_from=LETTER&amp;\_bdType=adchcdadbegcgbdiifbb&amp;messageId=b2c0926f99ef0c90887eab9c044e12cb](https://opendocs.alipay.com/open/00ou7f?click_from=LETTER&_bdType=adchcdadbegcgbdiifbb&messageId=b2c0926f99ef0c90887eab9c044e12cb)

- 目前项目兼容支付宝公钥证书方式和普通公钥方式

EasyPay解决什么问题
=============

[](#easypay解决什么问题)

`EasyPay` 的目的是简化大家在对接主流第三方时需要频繁去阅读第三方文档，还经常遇到各种问题。`EasyPay` 将所有第三方的接口进行了合理的建模分类，对大家提供统一的接入入口，大家只需要关注自身业务并且支付系统设计上。

目前已经集成：支付宝、微信、招商绝大部分功能。 [贡献指南](#%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97)

如何使用
====

[](#如何使用)

安装
--

[](#安装)

当前 `EasyPay` 项目仅支持 `PHP version > 7.0` 的版本，并且仅支持通过 `composer` 进行安装。

**需要 `PHP` 安装以下扩展：**

```
- ext-curl
- ext-mbstring
- ext-bcmath
- package-Guzzle
```

**composer安装方式：**

直接在命令行下安装：

```
composer require "javareact/easypay:*"
```

通过项目配置文件方式安装：

```
"require": {
    "javareact/easypay": "*"
}
```

项目集成
----

[](#项目集成)

参数选项说明：

- Y: 必须
- N: 非必须

### 支付宝

[](#支付宝)

**配置文件模板**

```
$config = [
    'use_sandbox' => true, // 是否使用沙盒模式
    'app_id'    => '2016073100130857',
    'sign_type' => 'RSA2', // RSA  RSA2
    // 支付宝公钥字符串
    'ali_public_key' => '',
    // 自己生成的密钥字符串
    'rsa_private_key' => '',
    'limit_pay' => [
        //'balance',// 余额
        //'moneyFund',// 余额宝
        //'debitCardExpress',// 	借记卡快捷
        //'creditCard',//信用卡
        //'creditCardExpress',// 信用卡快捷
        //'creditCardCartoon',//信用卡卡通
        //'credit_group',// 信用支付类型（包含信用卡卡通、信用卡快捷、花呗、花呗分期）
    ], // 用户不可用指定渠道支付当有多个渠道时用“,”分隔

    // 与业务相关参数
    'notify_url' => 'https://test.cn/notify/ali',
    'return_url' => 'https://test.cn',
];
```

#### APP支付请求参数

[](#app支付请求参数)

> 对应channel： \\EasyPay\\Client::ALI\_CHANNEL\_APP

字段解释必须amount订单总金额，单位为元，精确到小数点后两位，取值范围\[0.01,100000000\]Ygoods\_type商品主类型 :0-虚拟类商品,1-实物类商品Ybody对一笔交易的具体描述信息。如果是多种商品，请将商品描述字符串累加传给body。Ysubject商品的标题/交易标题/订单标题/订单关键字等。Yproduct\_code销售产品码，商家和支付宝签约的产品码Ntrade\_no商户网站唯一订单号Npromo\_params优惠参数 注：仅与支付宝协商后可用Nreturn\_params公用回传参数，如果请求时传递了该参数，则返回给商户时会回传该参数。Nextend\_params业务扩展参数Nstore\_id商户门店编号Next\_user\_info外部指定买家Nbusiness\_params商户传入业务信息，具体值要和支付宝约定，应用于安全，营销等参数直传场景，格式为json格式Ntime\_expire该笔订单允许的最晚付款时间，逾期将关闭交易。时间戳N#### 条码支付请求参数

[](#条码支付请求参数)

> 对应channel： \\EasyPay\\Client::ALI\_CHANNEL\_BAR

字段解释必须trade\_no商户订单号,64个字符以内、可包含字母、数字、下划线；需保证在商户端不重复Yauth\_code支付授权码，2530开头的长度为1624位的数字，实际字符串长度以开发者获取的付款码长度为准Yamount订单总金额，单位为元Ysubject订单标题Ybody订单描述Yscene支付场景 条码支付，取值：bar\_code（默认）；声波支付，取值：wave\_codeNproduct\_code销售产品码Nbuyer\_id买家的支付宝用户 id，如果为空，会从传入的码值信息中获取买家 IDNseller\_id如果该值为空，则默认为商户签约账号对应的支付宝用户IDNsettle\_currency商户指定的结算币种，默认：CNYNdiscountable\_amount参与优惠计算的金额，单位为元Ngoods\_detail订单包含的商品列表信息，json格式，其它说明详见商品明细说明Noperator\_id商户操作员编号Nstore\_id商户门店编号Nterminal\_id商户机具终端编号Nextend\_params业务扩展参数Ntime\_expire该笔订单允许的最晚付款时间，逾期将关闭交易Nauth\_confirm\_mode预授权确认模式，授权转交易请求中传入，适用于预授权转交易业务使用，目前只支持PRE\_AUTH(预授权产品码)Nterminal\_params商户传入终端设备相关信息，具体值要和支付宝约定Npromo\_params优惠明细参数，通过此属性补充营销参数Nadvance\_EasyPay\_type支付模式类型,若值为ENJOY\_PAY\_V2表示当前交易允许走先享后付2.0垫资N#### 查询对账单请求参数

[](#查询对账单请求参数)

字段解释必须bill\_type账单类型，默认是 tradeNbill\_date账单时间：日账单格式为yyyy-MM-ddY#### 扫码支付请求参数

[](#扫码支付请求参数)

> 对应channel： \\EasyPay\\Client::ALI\_CHANNEL\_QR

字段解释必须trade\_no商户订单号,64个字符以内、可包含字母、数字、下划线；需保证在商户端不重复Yseller\_id如果该值为空，则默认为商户签约账号对应的支付宝用户IDNamount订单总金额，单位为元Ydiscountable\_amount参与优惠计算的金额，单位为元Nsubject订单标题Ygoods\_detail订单包含的商品列表信息，json格式，其它说明详见商品明细说明Nbody订单描述Yoperator\_id商户操作员编号Nstore\_id商户门店编号Nterminal\_id商户机具终端编号Nextend\_params业务扩展参数Ntime\_expire该笔订单允许的最晚付款时间，逾期将关闭交易Nsettle\_info描述结算信息，json格式，详见结算参数说明Nmerchant\_order\_no商户原始订单号，最大长度限制32位Nbusiness\_params商户传入业务信息，具体值要和支付宝约定，应用于安全，营销等参数直传场景，格式为json格式N#### 手机网站支付请求参数

[](#手机网站支付请求参数)

> 对应channel： \\EasyPay\\Client::ALI\_CHANNEL\_WAP

字段解释必须body对一笔交易的具体描述信息。如果是多种商品，请将商品描述字符串累加传给body。Ysubject商品的标题/交易标题/订单标题/订单关键字等。Ytrade\_no商户网站唯一订单号Ytime\_expire该笔订单允许的最晚付款时间，逾期将关闭交易，时间戳Namount订单总金额，单位为元，精确到小数点后两位，取值范围\[0.01,100000000\]Nauth\_token针对用户授权接口，获取用户相关数据时，用于标识用户授权关系注：若不属于支付宝业务经理提供签约服务的商户，暂不对外提供该功能，该参数使用无效Ngoods\_type商品主类型：0—虚拟类商品，1—实物类商品Yreturn\_params公用回传参数，如果请求时传递了该参数，则返回给商户时会回传该参数Nquit\_url添加该参数后在h5支付收银台会出现返回按钮，可用于用户付款中途退出并返回到该参数指定的商户网站地址。Npromo\_params优惠参数注：仅与支付宝协商后可用Nextend\_params业务扩展参数，详见下表的“业务扩展参数说明”Nstore\_id商户门店编号Nspecified\_channel指定渠道，目前仅支持传入pcredit若由于用户原因渠道不可用，用户可选择是否用其他渠道支付。Nbusiness\_params商户传入业务信息，具体值要和支付宝约定，应用于安全，营销等参数直传场景，格式为json格式Next\_user\_info外部指定买家N#### 电脑网站支付请求参数

[](#电脑网站支付请求参数)

> 对应channel： \\EasyPay\\Client::ALI\_CHANNEL\_WEB

字段解释必须trade\_no商户网站唯一订单号Yamount订单总金额，单位为元，精确到小数点后两位，取值范围\[0.01,100000000\]Nbody对一笔交易的具体描述信息。如果是多种商品，请将商品描述字符串累加传给body。Ysubject商品的标题/交易标题/订单标题/订单关键字等。Ytime\_expire该笔订单允许的最晚付款时间，逾期将关闭交易，时间戳Ngoods\_detailreturn\_params公用回传参数，如果请求时传递了该参数，则返回给商户时会回传该参数Nextend\_params业务扩展参数，详见下表的“业务扩展参数说明”Ngoods\_type商品主类型：0—虚拟类商品，1—实物类商品Ypromo\_params优惠参数注：仅与支付宝协商后可用Nroyalty\_info描述分账信息，json格式，详见分账参数说明Nsub\_merchant间连受理商户信息体，当前只对特殊银行机构特定场景下使用此字段Nstore\_id商户门店编号Nqr\_pay\_modePC扫码支付的方式，支持前置模式和，默认是2Nqrcode\_width商户自定义二维码宽度Nsettle\_info描述结算信息，json格式，详见结算参数说明Ninvoice\_info开票信息Nagreement\_sign\_params签约参数，支付后签约场景使用Nintegration\_type请求后页面的集成方式Nrequest\_from\_url请求来源地址。如果使用ALIAPP的集成方式，用户中途取消支付会返回该地址。Nbusiness\_params商户传入业务信息，具体值要和支付宝约定，应用于安全，营销等参数直传场景，格式为json格式Next\_user\_info外部指定买家N#### 交易查询请求参数

[](#交易查询请求参数)

字段解释必须trade\_no订单支付时传入的商户订单号,和支付宝交易号不能同时为空。trade\_no,transaction\_id如果同时存在优先取transaction\_idYtransaction\_id支付宝交易号，和商户订单号不能同时为空Yquery\_options查询选项，商户通过上送该字段来定制查询返回信息Norg\_pid银行间联模式下有用，其它场景请不要使用N#### 退款请求参数

[](#退款请求参数)

字段解释必须trade\_no订单支付时传入的商户订单号,和支付宝交易号不能同时为空。trade\_no,transaction\_id如果同时存在优先取transaction\_idYtransaction\_id支付宝交易号，和商户订单号不能同时为空Yrefund\_fee需要退款的金额，该金额不能大于订单金额,单位为元，支持两位小数Yrefund\_currency订单退款币种信息，默认 CNYNreason退款的原因说明Nrefund\_no标识一次退款请求，同一笔交易多次退款需要保证唯一，如需部分退款，则此参数必传。Yoperator\_id商户的操作员编号Nstore\_id商户的门店编号Nterminal\_id商户的终端编号Ngoods\_detail退款包含的商品列表信息，Json格式。其它说明详见：“商品明细说明”Nrefund\_royalty\_parameters退分账明细信息Norg\_pid银行间联模式下有用，其它场景请不要使用N#### 退款查询请求参数

[](#退款查询请求参数)

字段解释必须trade\_no订单支付时传入的商户订单号,和支付宝交易号不能同时为空。trade\_no,transaction\_id如果同时存在优先取transaction\_idYtransaction\_id支付宝交易号，和商户订单号不能同时为空Yrefund\_no请求退款接口时，传入的退款请求号，如果在退款请求时未传入，则该值为创建交易时的外部交易号Yorg\_pid银行间联模式下有用，其它场景请不要使用N#### 关闭交易请求参数

[](#关闭交易请求参数)

字段解释必须trade\_no订单支付时传入的商户订单号,和支付宝交易号不能同时为空Ytransaction\_id该交易在支付宝系统中的交易流水号。最短 16 位，最长 64 位。和transaction\_id不能同时为空，如果同时传了 transaction\_id和 trade\_no，则以 transaction\_id为准Yoperator\_id卖家端自定义的的操作员 IDN#### 取消交易请求参数

[](#取消交易请求参数)

字段解释必须trade\_no订单支付时传入的商户订单号,和支付宝交易号不能同时为空Ytransaction\_id该交易在支付宝系统中的交易流水号。最短 16 位，最长 64 位。和transaction\_id不能同时为空，如果同时传了 transaction\_id和 trade\_no，则以 transaction\_id为准Y> 这个接口与 关闭交易 测试了一下，效果是一样的。具体场景不太清楚，但是官方文档描述是在当面付的时候使用

#### 转账到支付宝请求参数

[](#转账到支付宝请求参数)

字段解释必须trans\_no商户转账唯一订单号Ypayee\_type收款方账户类型。默认：ALIPAY\_LOGONID [详见](https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer)Ypayee\_account收款方账户。与payee\_type配合使用Yamount转账金额，单位：元。Ypayer\_show\_name付款方姓名Npayee\_real\_name收款方真实姓名Nremark转账备注N#### 查询转账到支付宝请求参数

[](#查询转账到支付宝请求参数)

字段解释必须trans\_no商户转账唯一订单号Ytransaction\_id支付宝转账单据号：和商户转账唯一订单号不能同时为空。当和商户转账唯一订单号同时提供时，将用本参数进行查询，忽略商户转账唯一订单号。Y### 微信

[](#微信)

对于每一个微信支持的能力，并不是所有参数都支持了，有些参数绝大多数场景并不需要用到。如果确实需要请自行对源码进行修改。

**配置文件模板**

```
$config = [
    'use_sandbox' => false, // 是否使用 微信支付仿真测试系统

    'app_id'       => 'wxxxxxxxx',  // 公众账号ID
    'sub_appid'    => 'wxxxxxxxx',  // 公众子商户账号ID
    'mch_id'       => '123123123', // 商户id
    'sub_mch_id'   => '123123123', // 子商户id
    'md5_key'      => '23423423dsaddasdas', // md5 秘钥
    'app_cert_pem' => 'apiclient_cert.pem',
    'app_key_pem'  => 'apiclient_key.pem',
    'sign_type'    => 'MD5', // MD5  HMAC-SHA256
    'limit_pay'    => [
        //'no_credit',
    ], // 指定不能使用信用卡支付   不传入，则均可使用
    'fee_type' => 'CNY', // 货币类型  当前仅支持该字段

    'notify_url' => 'https://test.cn/v1/notify/wx',

    'redirect_url' => 'https://test.cn/', // 如果是h5支付，可以设置该值，返回到指定页面
];
```

#### 支付请求参数

[](#支付请求参数)

> 对应channel： \\EasyPay\\Client::WX\_CHANNEL\_APP、WX\_CHANNEL\_BAR、WX\_CHANNEL\_LITE、WX\_CHANNEL\_PUB、WX\_CHANNEL\_QR、WX\_CHANNEL\_WAP

字段解释必须subject商品简单描述，该字段须严格按照规范传递，具体请见[参数规定](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=4_2)Ybody单品优惠字段(暂未上线)Ytrade\_no商户系统内部的订单号,32个字符内、可包含字母, 其他说明见[商户订单号](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=4_2)Yamount订单总金额，单位为元Yclient\_ip必须传正确的用户端IP,支持ipv4、ipv6格式，获取方式详见[获取用户ip指引](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_5)Ydevice\_info终端设备号(门店号或收银设备ID)，注意：PC网页或公众号内支付请传"WEB"Nreturn\_param附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据Ntime\_expire订单失效时间，时间戳Ngoods\_tag商品标记，代金券或立减优惠功能的参数，说明详见[代金券或立减优惠](https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_1)Nscene\_info该字段用于上报支付的场景信息，具体见微信文档N使用时，自行使用上面的字段构建好一个数组，并传入到 `\EasyPay\Client` 实例对应的方法中。后面均是相同，不在重复。

#### 账单请求参数

[](#账单请求参数)

字段解释必须bill\_date对账单日期Ybill\_typeALL（默认值），返回当日所有订单信息（不含充值退款订单）SUCCESS，返回当日成功支付的订单（不含充值退款订单）REFUND，返回当日退款订单（不含充值退款订单） RECHARGE\_REFUND，返回当日充值退款订单N#### 关闭交易请求参数

[](#关闭交易请求参数-1)

字段解释必须trade\_no商户系统内部订单号，要求32个字符内，且在同一个商户号下唯一。Y#### 撤销交易请求参数

[](#撤销交易请求参数)

字段解释必须trade\_no商户系统内部的订单号,transaction\_id、trade\_no二选一，如果同时存在优先级：transaction\_id&gt; trade\_noYtransaction\_id微信的订单号，优先使用Y#### 退款请求参数

[](#退款请求参数-1)

字段解释必须transaction\_id微信生成的订单号，在支付通知中有返回Ytrade\_no商户系统内部订单号，要求32个字符内，且在同一个商户号下唯一。transaction\_id、trade\_no二选一，如果同时存在优先级：transaction\_id&gt; trade\_noYrefund\_no商户系统内部的退款单号，商户系统内部唯一 ，同一退款单号多次请求只退一笔。Ytotal\_fee订单总金额，单位为元Yrefund\_fee退款总金额，订单总金额，单位为元Yrefund\_desc若商户传入，会在下发给用户的退款消息中体现退款原因Nrefund\_account仅针对老资金流商户使用N#### 退款查询请求参数

[](#退款查询请求参数-1)

字段解释必须transaction\_id微信订单号查询的优先级是： refund\_id &gt; refund\_no &gt; transaction\_id &gt; trade\_noYtrade\_no商户系统内部订单号，要求32个字符内 ，且在同一个商户号下唯一。Yrefund\_no商户系统内部的退款单号，商户系统内部唯一，同一退款单号多次请求只退一笔。Yrefund\_id微信生成的退款单号，在申请退款接口有返回Yoffset偏移量，当部分退款次数超过10次时可使用，表示返回的查询结果从这个偏移量开始取记录N#### 资金账单请求参数

[](#资金账单请求参数)

字段解释必须bill\_date下载对账单的日期，格式：20140603Ybill\_type账单的资金来源账户：Basic 基本账户 Operation 运营账户 Fees 手续费账户Y#### 交易查询请求参数

[](#交易查询请求参数-1)

字段解释必须transaction\_id微信的订单号，建议优先使用Ytrade\_no商户系统内部订单号，要求32个字符内 ，且在同一个商户号下唯一Y#### 付款到零钱请求参数

[](#付款到零钱请求参数)

字段解释必须channel付款的渠道 bank:付款到银行；account:付款到账号Ydevice\_info微信支付分配的终端设备号Ntrans\_no商户订单号，需保持唯一性(只能是字母或者数字，不能包含有其它字符)Yopenid商户appid下，某用户的openidYcheck\_nameNO\_CHECK：不校验真实姓名;FORCE\_CHECK：强校验真实姓名Yre\_user\_name收款用户真实姓名。如果check\_name设置为FORCE\_CHECK，则必填用户真实姓名Yamount企业付款金额，单位为元Ydesc企业付款备注，必填。注意：备注中的敏感词会被转成字符\*Yclient\_ip该IP同在商户平台设置的IP白名单中的IP没有关联，该IP可传用户端或者服务端的IP。Y#### 付款到银行请求参数

[](#付款到银行请求参数)

字段解释必须channel付款的渠道 bank:付款到银行；account:付款到账号Ytrans\_no商户订单号，需保持唯一性(只能是字母或者数字，不能包含有其它字符)Yenc\_bank\_no收款方银行卡号（采用标准RSA算法，公钥由微信侧提供）,详见[获取RSA加密公钥API](https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_7)Yenc\_true\_name收款方用户名（采用标准RSA算法，公钥由微信侧提供）Ybank\_code银行卡所在开户行编号,详见[银行编号列表](https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_4)Yamount企业付款金额，单位为元Ydesc企业付款到银行卡付款说明,即订单备注N#### 付款到零钱/银行查询请求参数

[](#付款到零钱银行查询请求参数)

字段解释必须trans\_no商户订单号，需保持唯一（只允许数字\[09\]或字母\[AZ\]和\[a~z\]最短8位，最长32位）Y### 招商银行

[](#招商银行)

**配置文件模板**

```
$config = [
    'use_sandbox' => true, // 是否使用 招商测试系统

    'branch_no' => 'xxx',  // 商户分行号，4位数字
    'mch_id'    => 'xxxx', // 商户号，6位数字
    'mer_key'   => 'xxxxxx', // 秘钥16位，包含大小写字母 数字

    // 招商的公钥，建议每天凌晨2:15发起查询招行公钥请求更新公钥。
    'cmb_pub_key' => 'xxxxx',

    'op_pwd'    => 'xxxxx', // 操作员登录密码。
    'sign_type' => 'SHA-256', // 签名算法,固定为“SHA-256”
    'limit_pay' => 'A', // 允许支付的卡类型,默认对支付卡种不做限制，储蓄卡和信用卡均可支付   A:储蓄卡支付，即禁止信用卡支付

    'notify_url' => 'https://test.cn/notify/cmb', // 支付成功的回调

    'sign_notify_url' => 'https://test.cn/notify/cmb', // 成功签约结果通知地址
    'sign_return_url' => 'https://test.cn', // 成功签约结果通知地址

    'return_url' => 'https://test.cn', // 如果是h5支付，可以设置该值，返回到指定页面
];
```

#### 支付请求参数

[](#支付请求参数-1)

字段解释必须date订单的日期，时间戳Ytrade\_no订单号,6-32位的数字和字母组合，由商户生成Yamount格式：xxxx.xx 固定两位小数，最大11位整数Ytime\_expire过期时候的时间戳Yreturn\_param发送成功支付结果通知时，将原样返回商户Nbody显示在PC端扫码支付页面，pc支付才需要该参数Nclient\_ip商户取得的客户IP，如果有多个IP用逗号”,”分隔。Nsub\_mch\_id当前订单为商户的二级商户的订单时需要传送Nsub\_mch\_name当前订单为商户的二级商户的订单时需要传送Nsub\_mch\_tp\_code当前订单为商户的二级商户的订单时需要传送；必须为数字或字母Nsub\_mch\_tp\_name当前订单为商户的二级商户的订单时需要传送Nmode\_type默认不设限制，允许微信支付。Nagr\_no客户协议号Nmerchant\_serial\_no协议开通请求流水号，开通协议时必填。Nuser\_id用于标识商户用户的唯一IDNmobile手机号码Nlon经度Nlat纬度Nrisk\_level用户在商户系统内风险等级标识N#### 查询公钥请求参数

[](#查询公钥请求参数)

> 不需要参数，直接条用即可

#### 退款请求参数

[](#退款请求参数-2)

字段解释必须date商户订单日期，支付时的订单日期 格式：yyyyMMddYtrade\_no商户订单号，支付时的订单号Yrefund\_no退款流水号,商户生成，同一笔订单内，同一退款流水号只能退款一次。可用于防重复退款。Yrefund\_fee退款金额,格式xxxx.xx，单位元Yreason退款描述Noperator\_id商户结账系统的操作员号，选填，若填了则会对操作员号和密码进行校验，若不填则不校验。N#### 查询订单请求参数

[](#查询订单请求参数)

字段解释必须type查询类型，A：按银行订单流水号查询（默认） B：按商户订单日期和订单号查询Ntransaction\_id银行订单流水号,type=A时必填Ydate商户订单日期，格式：yyyyMMddYtrade\_notype=B时必填商户订单号Noperator\_id商户结账系统的操作员号N#### 已结账单请求参数

[](#已结账单请求参数)

字段解释必须mode查询模式， bank：按照银行日期查询，默认； mch：按照商户日期查询Ystart\_time开始日期，时间戳Yend\_time结束日期，时间戳Yoperator\_id操作员号,商户结账系统的操作员号Ynext\_key\_value续传键值,长度只能为0或40；首次查询填“空”；后续查询，按应答报文中返回的nextKeyValue值原样传入。N#### 退款查询请求参数

[](#退款查询请求参数-2)

字段解释必须type查询类型 A：按银行退款流水号查单笔（默认） B：按商户订单号+商户退款流水号查单笔 C: 按商户订单号查退款Ytrade\_no商户订单号Ydate商户订单日期，时间戳Yrefund\_no商户退款流水号长度不超过20位Ybank\_serial\_no银行退款流水号长度不超过20位Y#### 对账单查询请求参数

[](#对账单查询请求参数)

字段解释必须date商户订单日期，时间戳Ymessage\_key交易流水，合作方内部唯一流水Y支持的接口
-----

[](#支持的接口)

对应到第三方的具体接口

### 支付宝

[](#支付宝-1)

- [条码支付](https://docs.open.alipay.com/194/106039/)
- [扫码支付](https://docs.open.alipay.com/194/106078/)
- [APP支付](https://docs.open.alipay.com/204/105297/)
- [H5支付](https://docs.open.alipay.com/203/105285/)
- [电脑网站支付](https://docs.open.alipay.com/270/105899/)
- [退款](https://docs.open.alipay.com/api_1/alipay.trade.refund)
- [关闭交易](https://docs.open.alipay.com/api_1/alipay.trade.close)
- [撤销交易](https://docs.open.alipay.com/api_1/alipay.trade.cancel) 条码/扫码支付会用到
- [交易查询](https://docs.open.alipay.com/api_1/alipay.trade.query)
- [退款查询](https://docs.open.alipay.com/api_1/alipay.trade.fastpay.refund.query)
- [下载对账单](https://docs.open.alipay.com/api_15/alipay.data.dataservice.bill.downloadurl.query)
- [转账到支付宝](https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer)
- [单笔转账接口](https://opendocs.alipay.com/apis/api_28/alipay.fund.trans.uni.transfer)
- [支付宝转账查询](https://docs.open.alipay.com/api_28/alipay.fund.trans.order.query/)
- [交易创建](https://docs.open.alipay.com/api_1/alipay.trade.create) 条码/扫码支付会用到

### 微信

[](#微信-1)

支持 `普通商户与服务商两个版本`

- [付款码支付](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1)
- [JSAPI支付](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1)
- [Native支付](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1)
- [APP支付](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1)
- [H5支付](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1)
- [小程序支付](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1)
- [退款](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_4&index=4)
- [关闭交易](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_3&index=3)
- [撤销交易](https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_11&index=3)
- [交易查询](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_2&index=2)
- [退款查询](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_5&index=5)
- [下载对账单](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_6&index=6)
- [下载资金账单](https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_18&index=7)
- [转账到银行卡](https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_2) 该接口还有些问题待处理
- [转账到微信零钱](https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2)
- [银行转账查询](https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_3)
- [微信转账查询](https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_3)

### 招商

[](#招商)

- [APP支付](http://openhome.cmbchina.com/PayNew/pay/doc/cell/app/SDKPayAPI)
- [H5支付](http://openhome.cmbchina.com/PayNew/pay/doc/cell/H5/OneCardPayAPI)
- [PC扫码支付](http://openhome.cmbchina.com/PayNew/pay/doc/cell/pc/GeneratePayPageAPI)
- [二维码支付](http://openhome.cmbchina.com/PayNew/pay/doc/cell/QRcode/QRcodePayAPI)
- [退款](http://openhome.cmbchina.com/PayNew/pay/doc/cell/QRcode/RefundAPI)
- [交易查询](http://openhome.cmbchina.com/PayNew/pay/doc/cell/QRcode/QuerySingleOrderAPI)
- [退款查询](http://openhome.cmbchina.com/PayNew/pay/doc/cell/QRcode/QuerySettledRefund)
- [查询协议](http://openhome.cmbchina.com/PayNew/pay/doc/cell/app/QueryProtocolAPI)
- [取消协议](http://openhome.cmbchina.com/PayNew/pay/doc/cell/app/CancelProtocolAPI)
- [查询入账明细](http://openhome.cmbchina.com/PayNew/pay/doc/cell/app/RecordedDetailsAPI)
- [下载退款对账单](http://openhome.cmbchina.com/PayNew/pay/doc/cell/QRcode/RefundQueryAPI)
- [下载已结账单for商户](http://openhome.cmbchina.com/PayNew/pay/doc/cell/QRcode/QuerySettledOrderByMerchantDat)
- [下载已结账单for银行](http://openhome.cmbchina.com/PayNew/pay/doc/cell/QRcode/QuerySettledOrderByBankDate)
- [下载对账单](http://openhome.cmbchina.com/PayNew/pay/doc/cell/QRcode/DownloadRecordedDetails)
- [查询招行公钥](http://openhome.cmbchina.com/PayNew/pay/doc/cell/QRcode/QueryKeyAPI)

第三方文档
=====

[](#第三方文档)

- [支付宝](https://docs.open.alipay.com/api_1)
- [微信](https://pay.weixin.qq.com/wiki/doc/api/index.html)
- [招商银行](http://openhome.cmbchina.com/paynew/pay/Home)

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community5

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~6 days

Total

13

Last Release

2123d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0f0f5bc80192075897ba2b1b90875e85358dfe3cb8706ed8318c5f566515c6d5?d=identicon)[JavaReact](/maintainers/JavaReact)

---

Tags

alipayweixin

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/javareact-easypay/health.svg)

```
[![Health](https://phpackages.com/badges/javareact-easypay/health.svg)](https://phpackages.com/packages/javareact-easypay)
```

###  Alternatives

[riverslei/payment

支付宝支付、微信支付、招商一网通支付php SDK。方便快速接入，最完整的开源支付 php sdk

2.4k155.5k2](/packages/riverslei-payment)[fantasystudio/easypay

Wechat and Alipay payment SDK

383.4k](/packages/fantasystudio-easypay)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
