Migrated repository
Go to file
yansongda ce4e49713e
Merge pull request #51 from MengDianYun/master
新增微信普通红包、裂变红包
2017-12-23 12:49:01 +08:00
src Merge pull request #51 from MengDianYun/master 2017-12-23 12:49:01 +08:00
.gitignore 增加向支付宝帐户转账(提现)网关 2017-09-15 22:25:01 +08:00
composer.json i 2017-12-14 16:55:29 +08:00
ISSUE_TEMPLATE.md Create ISSUE_TEMPLATE.md 2017-09-29 04:00:31 -05:00
LICENSE i 2017-08-10 09:06:42 +08:00
phpunit.xml 增加单元测试 2017-08-21 21:54:26 +08:00
README.md Merge pull request #51 from MengDianYun/master 2017-12-23 12:49:01 +08:00

Pay

StyleCI Scrutinizer Code Quality Build Status Latest Stable Version Total Downloads Latest Unstable Version License

开发了多次支付宝与微信支付后,很自然产生一种反感,惰性又来了,想在网上找相关的轮子,可是一直没有找到一款自己觉得逞心如意的,要么使用起来太难理解,要么文件结构太杂乱,只有自己撸起袖子干了。

说明,请先熟悉 支付宝/微信支付 开发文档!!

欢迎 Star欢迎 PR

laravel 扩展包请 传送至这里

特点

  • 命名不那么乱七八糟
  • 隐藏开发者不需要关注的细节
  • 根据支付宝、微信最新 API 开发而成
  • 高度抽象的类免去各种拼json与xml的痛苦
  • 符合 PSR 标准,你可以各种方便的与你的框架集成
  • 文件结构清晰易理解,可以随心所欲添加本项目中没有的支付网关
  • 方法使用更优雅,不必再去研究那些奇怪的的方法名或者类名是做啥用的

运行环境

  • PHP 7.0+
  • composer

PHP 5.6+ 版本请下载 v1.x 版

安装

composer require yansongda/pay

PHP 5.6+ 版本请下载 v1.x 版

支持的支付环境

  • pay(array $config_biz)
    说明:支付接口

  • refund(array|string $config_biz, $refund_amount = null)
    说明:退款接口

  • close(array|string $config_biz)
    说明:关闭订单接口

  • find(string $out_trade_no)
    说明:查找订单接口

  • verify($data, $sign = null)
    说明:验证服务器返回消息是否合法

1、支付宝

driver gateway 描述
alipay web 电脑支付
alipay wap 手机网站支付
alipay app APP 支付
alipay pos 刷卡支付
alipay scan 扫码支付
alipay transfer 帐户转账

2、微信

driver gateway 描述
wechat mp 公众号支付
wechat miniapp 小程序支付
wechat wap H5 支付
wechat scan 扫码支付
wechat pos 刷卡支付
wechat app APP 支付
wechat transfer 企业付款

使用说明 - 支付宝

1. 支付订单

use Yansongda\Pay\Pay;

$config = [
    'app_id' => '2016082000295641',
    'notify_url' => 'http://yansongda.cn/alipay_notify.php',
    'return_url' => 'http://yansongda.cn/return.php',
    'ali_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuWJKrQ6SWvS6niI+4vEVZiYfjkCfLQfoFI2nCp9ZLDS42QtiL4Ccyx8scgc3nhVwmVRte8f57TFvGhvJD0upT4O5O/lRxmTjechXAorirVdAODpOu0mFfQV9y/T9o9hHnU+VmO5spoVb3umqpq6D/Pt8p25Yk852/w01VTIczrXC4QlrbOEe3sr1E9auoC7rgYjjCO6lZUIDjX/oBmNXZxhRDrYx4Yf5X7y8FRBFvygIE2FgxV4Yw+SL3QAa2m5MLcbusJpxOml9YVQfP8iSurx41PvvXUMo49JG3BDVernaCYXQCoUJv9fJwbnfZd7J5YByC+5KM4sblJTq7bXZWQIDAQAB',
    //'ali_public_key' => '/data/www/aliPublicKey.pem',
    'private_key' => 'MIIEpAIBAAKCAQEAs6+F2leOgOrvj9jTeDhb5q46GewOjqLBlGSs/bVL4Z3fMr3p+Q1Tux/6uogeVi/eHd84xvQdfpZ87A1SfoWnEGH5z15yorccxSOwWUI+q8gz51IWqjgZxhWKe31BxNZ+prnQpyeMBtE25fXp5nQZ/pftgePyUUvUZRcAUisswntobDQKbwx28VCXw5XB2A+lvYEvxmMv/QexYjwKK4M54j435TuC3UctZbnuynSPpOmCu45ZhEYXd4YMsGMdZE5/077ZU1aU7wx/gk07PiHImEOCDkzqsFo0Buc/knGcdOiUDvm2hn2y1XvwjyFOThsqCsQYi4JmwZdRa8kvOf57nwIDAQABAoIBAQCw5QCqln4VTrTvcW+msB1ReX57nJgsNfDLbV2dG8mLYQemBa9833DqDK6iynTLNq69y88ylose33o2TVtEccGp8Dqluv6yUAED14G6LexS43KtrXPgugAtsXE253ZDGUNwUggnN1i0MW2RcMqHdQ9ORDWvJUCeZj/AEafgPN8AyiLrZeL07jJz/uaRfAuNqkImCVIarKUX3HBCjl9TpuoMjcMhz/MsOmQ0agtCatO1eoH1sqv5Odvxb1i59c8Hvq/mGEXyRuoiDo05SE6IyXYXr84/Nf2xvVNHNQA6kTckj8shSi+HGM4mO1Y4Pbb7XcnxNkT0Inn6oJMSiy56P+CpAoGBAO1O+5FE1ZuVGuLb48cY+0lHCD+nhSBd66B5FrxgPYCkFOQWR7pWyfNDBlmO3SSooQ8TQXA25blrkDxzOAEGX57EPiipXr/hy5e+WNoukpy09rsO1TMsvC+v0FXLvZ+TIAkqfnYBgaT56ku7yZ8aFGMwdCPL7WJYAwUIcZX8wZ3dAoGBAMHWplAqhe4bfkGOEEpfs6VvEQxCqYMYVyR65K0rI1LiDZn6Ij8fdVtwMjGKFSZZTspmsqnbbuCE/VTyDzF4NpAxdm3cBtZACv1Lpu2Om+aTzhK2PI6WTDVTKAJBYegXaahBCqVbSxieR62IWtmOMjggTtAKWZ1P5LQcRwdkaB2rAoGAWnAPT318Kp7YcDx8whOzMGnxqtCc24jvk2iSUZgb2Dqv+3zCOTF6JUsV0Guxu5bISoZ8GdfSFKf5gBAo97sGFeuUBMsHYPkcLehM1FmLZk1Q+ljcx3P1A/ds3kWXLolTXCrlpvNMBSN5NwOKAyhdPK/qkvnUrfX8sJ5XK2H4J8ECgYAGIZ0HIiE0Y+g9eJnpUFelXvsCEUW9YNK4065SD/BBGedmPHRC3OLgbo8X5A9BNEf6vP7fwpIiRfKhcjqqzOuk6fueA/yvYD04v+Da2MzzoS8+hkcqF3T3pta4I4tORRdRfCUzD80zTSZlRc/h286Y2eTETd+By1onnFFe2X01mwKBgQDaxo4PBcLL2OyVT5DoXiIdTCJ8KNZL9+kV1aiBuOWxnRgkDjPngslzNa1bK+klGgJNYDbQqohKNn1HeFX3mYNfCUpuSnD2Yag53Dd/1DLO+NxzwvTu4D6DCUnMMMBVaF42ig31Bs0jI3JQZVqeeFzSET8fkoFopJf3G6UXlrIEAQ==',
    //'private_key' => '/data/www/privateKey.pem',
];

$order = [
    'out_trade_no' => time(),
    'total_amount' => '0.01',
    'subject'      => '测试订单-test subject',
];

return Pay::alipay($config)->gateway('web')->pay($order);

所有参数均为官方标准参数,无任何差别。点击这里 查看官方文档。

各支付网关说明

  • web 返回 Symfony\Component\HttpFoundation\Response 实例,在各个框架集成中时可直接 return。

  • wap 返回 Symfony\Component\HttpFoundation\Response 实例,在各个框架集成中时可直接 return。

  • app 返回 String可供 APP 直接调用支付。

  • pos 返回 Symfony\Component\HttpFoundation\Request 实例。

  • scan

  • transfer

2. 验证回调数据

3. 退款

4. 关闭订单

5. 查询订单

使用说明 - 微信

1. 支付订单

2. 验证回调数据

3. 退款

4. 关闭订单

5. 查询订单

13、微信 - 发放裂变红包

最小配置参数

<?php
 $config = [
            'wechat' => [
                'app_id'=>'wxaxxxxxxxx',
                'mch_id' => '1442222202',
                'key' => 'ddddddddddddddd',
                'cert_client' => 'D:\php\xxx\application\wxpay\cert\apiclient_cert.pem',
                'cert_key' => 'D:\php\xxx\application\wxpay\cert\apiclient_key.pem',
            ],
        ];

        $config_biz = [
            'wxappid'=>'wxaxxxxxxxx',
            'mch_billno' => 'hb'.time(),
            'send_name'=>'萌点云科技',//商户名称
            're_openid'=>'ogg5JwsssssssssssCdXeD_S54',//用户openid
            'total_amount' =>333, // 付款金额,单位分
            'wishing'=>'提前祝你狗年大吉',//红包祝福语
            'client_ip'=>'192.168.0.1',//调用接口的机器Ip地址
            'total_num'=>'3',//红包发放总人数
            'act_name'=>'提前拜年',//活动名称
            'remark'=>'提前祝你狗年大吉,苟富贵勿相忘!', //备注
            'amt_type'=>'ALL_RAND',//ALL_RAND—全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额
        ];

        $pay = new Pay($config);
        try
        {
            $res=   $pay->driver('wechat')->gateway('groupredpack')->pay($config_biz);

        }catch (Exception $e){

        }

所有配置参数

具体请看 官方文档

返回值

  • pay()
    类型array
    说明:返回用于 支付结果 的数组。具体请 参考这里

14、微信 - 发放普通红包

最小配置参数

<?php
 $config = [
            'wechat' => [
                'app_id'=>'wxaxxxxxxxx',
                'mch_id' => '1442222202',
                'key' => 'ddddddddddddddd',
                'cert_client' => 'D:\php\xxx\application\wxpay\cert\apiclient_cert.pem',
                'cert_key' => 'D:\php\xxx\application\wxpay\cert\apiclient_key.pem',
            ],
        ];

        $config_biz = [
            'wxappid'=>'wxaxxxxxxxx',
            'mch_billno' => 'hb'.time(),
            'send_name'=>'萌点云科技',//商户名称
            're_openid'=>'ogg5JwsssssssssssCdXeD_S54',//用户openid
            'total_amount' =>100, // 付款金额,单位分
            'wishing'=>'提前祝你狗年大吉',//红包祝福语
            'client_ip'=>'192.168.0.1',//调用接口的机器Ip地址
            'total_num'=>'1',//红包发放总人数
            'act_name'=>'提前拜年',//活动名称
            'remark'=>'提前祝你狗年大吉,苟富贵勿相忘!', //备注
        ];

        $pay = new Pay($config);
        try
        {
            $res=   $pay->driver('wechat')->gateway('redpack')->pay($config_biz);

        }catch (Exception $e){

        }

所有配置参数

具体请看 官方文档

返回值

  • pay()
    类型array
    说明:返回用于 支付结果 的数组。具体请 参考这里

代码贡献

由于测试及使用环境的限制,本项目中只开发了「支付宝」和「微信支付」的相关支付网关。

如果您有其它支付网关的需求,或者发现本项目中需要改进的代码,欢迎 Fork 并提交 PR

LICENSE

MIT