javareact/easypay

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

2.1.3 2020-07-24 01:55 UTC

This package is auto-updated.

Last update: 2024-12-29 05:38:52 UTC


README

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

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

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

目录

重要通知

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

官方公告: https://opendocs.alipay.com/open/00ou7f?click_from=LETTER&_bdType=adchcdadbegcgbdiifbb&messageId=b2c0926f99ef0c90887eab9c044e12cb

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

EasyPay解决什么问题

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

目前已经集成:支付宝、微信、招商绝大部分功能。 贡献指南

如何使用

安装

当前 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支付请求参数

对应channel: \EasyPay\Client::ALI_CHANNEL_APP

条码支付请求参数

对应channel: \EasyPay\Client::ALI_CHANNEL_BAR

查询对账单请求参数

扫码支付请求参数

对应channel: \EasyPay\Client::ALI_CHANNEL_QR

手机网站支付请求参数

对应channel: \EasyPay\Client::ALI_CHANNEL_WAP

电脑网站支付请求参数

对应channel: \EasyPay\Client::ALI_CHANNEL_WEB

交易查询请求参数

退款请求参数

退款查询请求参数

关闭交易请求参数

取消交易请求参数

这个接口与 关闭交易 测试了一下,效果是一样的。具体场景不太清楚,但是官方文档描述是在当面付的时候使用

转账到支付宝请求参数

查询转账到支付宝请求参数

微信

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

配置文件模板

$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

使用时,自行使用上面的字段构建好一个数组,并传入到 \EasyPay\Client 实例对应的方法中。后面均是相同,不在重复。

账单请求参数

关闭交易请求参数

撤销交易请求参数

退款请求参数

退款查询请求参数

资金账单请求参数

交易查询请求参数

付款到零钱请求参数

付款到银行请求参数

付款到零钱/银行查询请求参数

招商银行

配置文件模板

$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支付,可以设置该值,返回到指定页面
];

支付请求参数

查询公钥请求参数

不需要参数,直接条用即可

退款请求参数

查询订单请求参数

已结账单请求参数

退款查询请求参数

对账单查询请求参数

支持的接口

对应到第三方的具体接口

支付宝

微信

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

招商

第三方文档