All Projects → yansongda → Pay

yansongda / Pay

Licence: mit
可能是我用过的最优雅的 Alipay 和 WeChat 的支付 SDK 扩展包了

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to Pay

Pay
个人网站即时到账收款解决方案 / Personal website instant payment solution
Stars: ✭ 558 (-86.64%)
Mutual labels:  payment, alipay, pay, wechat
Teepay
Typecho 个人支付宝、微信收款插件
Stars: ✭ 90 (-97.84%)
Mutual labels:  alipay, pay, wechat, weixin
Laravel Pay
可能是我用过的最优雅的 Alipay 和 WeChat 的 laravel 支付扩展包了
Stars: ✭ 856 (-79.5%)
Mutual labels:  payment, alipay, pay, wechat
Gopay
golang支付:微信公众号,微信app,微信小程序,微信企业支付,支付宝网页版,支付宝app,支付宝企业支付
Stars: ✭ 313 (-92.5%)
Mutual labels:  payment, alipay, pay, wechat
Node Tenpay
微信支付 for nodejs
Stars: ✭ 947 (-77.32%)
Mutual labels:  payment, pay, wechat, weixin
Sdk3rd
第三方SDK集成库,授权/分享/支付
Stars: ✭ 249 (-94.04%)
Mutual labels:  payment, alipay, wechat, weixin
Ijpay
IJPay 让支付触手可及,封装了微信支付、QQ支付、支付宝支付、京东支付、银联支付、PayPal 支付等常用的支付方式以及各种常用的接口。不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。右上角点下小星星✨
Stars: ✭ 3,561 (-14.73%)
Mutual labels:  payment, alipay, pay, weixin
Sns auth
通用第三方登录SDK,支持微信,微信扫码,QQ,微博登录,支付宝登录,Facebook,Line,Twitter,Google
Stars: ✭ 520 (-87.55%)
Mutual labels:  alipay, wechat, weixin
Gopay
QQ、微信(WeChat)、支付宝(AliPay)的Go版本SDK。【微信支付V3已支持,推荐使用微信V3接口】
Stars: ✭ 1,034 (-75.24%)
Mutual labels:  alipay, pay, wechat
Wxapp Webpack Plugin
📦 微信小程序 webpack 插件
Stars: ✭ 185 (-95.57%)
Mutual labels:  alipay, wechat, weixin
Paylink
Paylink 是基于 .NET Core 、 ASP.NET Core 开发的支付SDK集,它极大简化了API调用及通知的处理流程。
Stars: ✭ 947 (-77.32%)
Mutual labels:  payment, alipay, weixin
Gopay
golang语言实现的支付模块,支持支付宝app,支付宝网页版,微信app,微信公众号支付
Stars: ✭ 151 (-96.38%)
Mutual labels:  payment, alipay, wechat
Weixin Pay
微信支付
Stars: ✭ 863 (-79.33%)
Mutual labels:  payment, wechat, weixin
Wechat kit
flutter版微信登录/分享/支付
Stars: ✭ 347 (-91.69%)
Mutual labels:  pay, wechat, weixin
Swiftscan
A barcode and qr code scanner( 二维码/条形码扫描、生成,仿微信、支付宝)
Stars: ✭ 293 (-92.98%)
Mutual labels:  alipay, wechat
Weixin Spider
微信公众号爬虫,公众号历史文章,文章评论,文章阅读及在看数据,可视化web页面,可部署于Windows服务器。基于Python3之flask/mysql/redis/mitmproxy/pywin32等实现,高效微信爬虫,微信公众号爬虫,历史文章,文章评论,数据更新。
Stars: ✭ 287 (-93.13%)
Mutual labels:  wechat, weixin
Ocbarrage
iOS 弹幕库 OCBarrage, 同时渲染5000条弹幕也不卡, 轻量, 可拓展, 高度自定义动画, 超高性能, 简单易上手; A barrage render-engine with high performance for iOS. At the same time, rendering 5000 barrages is also very smooth, lightweight, scalable, highly custom animation, ultra high performance, simple and easy to use!
Stars: ✭ 294 (-92.96%)
Mutual labels:  wechat, weixin
Wepy Mall
微信小程序--基于wepy 商城(微店)微信小程序 欢迎学习交流
Stars: ✭ 3,224 (-22.8%)
Mutual labels:  wechat, weixin
Weapp Demo Breadtrip
基于面包旅行 API 制作的微信小程序示例
Stars: ✭ 282 (-93.25%)
Mutual labels:  wechat, weixin
Omnipay Wechatpay
(微信支付)WeChatPay driver for the Omnipay PHP payment processing library
Stars: ✭ 300 (-92.82%)
Mutual labels:  payment, wechat

Logo

scrutinizer Linter Status Tester Status Stable Version Total Downloads License

前言

v3 版与 v2 版在底层有很大的不同,基础架构做了重新的设计,更易扩展,使用起来更方便。

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

欢迎 Star,欢迎 PR!

hyperf 扩展包请 传送至这里

laravel 扩展包请 传送至这里

yii 扩展包请 传送至这里

特点

  • 多租户支持
  • Swoole 支持
  • 灵活的插件机制
  • 丰富的事件系统
  • 命名不那么乱七八糟
  • 隐藏开发者不需要关注的细节
  • 根据支付宝、微信最新 API 开发而成
  • 高度抽象的类,免去各种拼json与xml的痛苦
  • 文件结构清晰易理解,可以随心所欲添加本项目中没有的支付网关
  • 方法使用更优雅,不必再去研究那些奇怪的的方法名或者类名是做啥用的
  • 内置自动获取微信公共证书方法,再也不用再费劲去考虑第一次获取证书的的问题了
  • 符合 PSR2、PSR3、PSR4、PSR7、PSR11、PSR14 等各项标准,你可以各种方便的与你的框架集成

运行环境

  • PHP 7.3+
  • composer

详细文档

https://pay.yansongda.cn

支持的支付方法

yansongda/pay 100% 兼容 支付宝/微信 所有功能(包括服务商功能),只需通过「插件机制」引入即可。

同时,SDK 直接支持内置了以下插件,详情请查阅文档。

支付宝

  • 电脑支付
  • 手机网站支付
  • APP 支付
  • 刷卡支付
  • 扫码支付
  • 账户转账
  • 小程序支付
  • ...

微信

  • 公众号支付
  • 小程序支付
  • H5 支付
  • 扫码支付
  • APP 支付
  • ...
  • 刷卡支付,微信v3版暂不支持,计划后续内置支持v2版,或直接使用 Pay v2 版本
  • 企业付款,微信v3版暂不支持,计划后续内置支持v2版,或直接使用 Pay v2 版本
  • 普通红包,微信v3版暂不支持,计划后续内置支持v2版,或直接使用 Pay v2 版本
  • 分裂红包,微信v3版暂不支持,计划后续内置支持v2版,或直接使用 Pay v2 版本

安装

composer require yansongda/pay:~3.0.0 -vvv

深情一撇

支付宝

<?php

namespace App\Http\Controllers;

use Yansongda\Pay\Pay;

class AlipayController
{
    protected $config = [
        'alipay' => [
            'default' => [
                'app_id' => '2016082000295641',
                // 应用私钥 
                'app_secret_cert' => 'MIIEpAIBAAKCAQEAs6fsdafasfasfsafsafasfasfas',
                // 应用公钥证书路径
                'app_public_cert_path' => '/User/yansongda/cert/app_public.crt',
                // 支付宝公钥证书路径
                'alipay_public_cert_path' => '/User/yansongda/cert/alipay_root.crt',
                // 支付宝根证书路径
                'alipay_root_cert_path' => '/User/yansongda/cert/alipay_root.crt',
                'notify_url' => 'https://yansongda.cn/notify.html',
                'return_url' => 'https://yansongda.cn/return.html',
                'mode' => Pay::MODE_SANDBOX, // optional,设置此参数,将进入沙箱模式
            ],       
        ],   
        'logger' => [ // optional
            'enable' => false,
            'file' => './logs/alipay.log',
            'level' => 'info', // 建议生产环境等级调整为 info,开发环境为 debug
            'type' => 'single', // optional, 可选 daily.
            'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
        ],
        'http' => [ // optional
            'timeout' => 5.0,
            'connect_timeout' => 5.0,
            // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
        ],
    ];

    public function web()
    {
        $result = Pay::alipay($this->config)->web([
            'out_trade_no' => ''.time(),
            'total_amount' => '0.01',
            'subject' => 'yansongda 测试 - 1',
        ]);
        
        return $result;
    }

    public function returnCallback()
    {
        $data = Pay::alipay($this->config)->callback(); // 是的,验签就这么简单!

        // 订单号:$data->out_trade_no
        // 支付宝交易号:$data->trade_no
        // 订单总金额:$data->total_amount
    }

    public function notifyCallback()
    {
        $alipay = Pay::alipay($this->config);
    
        try{
            $data = $alipay->callback(); // 是的,验签就这么简单!

            // 请自行对 trade_status 进行判断及其它逻辑进行判断,在支付宝的业务通知中,只有交易通知状态为 TRADE_SUCCESS 或 TRADE_FINISHED 时,支付宝才会认定为买家付款成功。
            // 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号;
            // 2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);
            // 3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email);
            // 4、验证app_id是否为该商户本身。
            // 5、其它业务逻辑情况
        } catch (\Exception $e) {
            // $e->getMessage();
        }

        return $alipay->success();
    }
}

微信

<?php

namespace App\Http\Controllers;

use Yansongda\Pay\Pay;

class WechatController
{
    protected $config = [
        'wechat' => [
            'default' => [
                // 公众号 的 app_id
                'mp_app_id' => '2016082000295641',
                // 小程序 的 app_id
                'mini_app_id' => '',
                // app 的 app_id
                'app_id' => '',
                // 商户号 
                'mch_id' => '',
                // 合单 app_id
                'combine_app_id' => '',
                // 合单商户号 
                'combine_mch_id' => '',
                // 商户秘钥
                'mch_secret_key' => '',
                // 商户私钥
                'mch_secret_cert' => '',
                // 商户公钥证书路径
                'mch_public_cert_path' => '',
                // 微信公钥证书路径, optional
                'wechat_public_cert_path' => [
                    '' => '',
                ],
                'mode' => Pay::MODE_SANDBOX,
            ]
        ],
        'logger' => [ // optional
            'enable' => false,
            'file' => './logs/wechat.log',
            'level' => 'info', // 建议生产环境等级调整为 info,开发环境为 debug
            'type' => 'single', // optional, 可选 daily.
            'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
        ],
        'http' => [ // optional
            'timeout' => 5.0,
            'connect_timeout' => 5.0,
            // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
        ],
    ];

    public function index()
    {
        $order = [
            'out_trade_no' => time(),
            'total_fee' => '1', // **单位:分**
            'body' => 'test body - 测试',
            'openid' => 'onkVf1FjWS5SBIixxxxxxx',
        ];

        $pay = Pay::wechat($this->config)->mp($order);

        // $pay->appId
        // $pay->timeStamp
        // $pay->nonceStr
        // $pay->package
        // $pay->signType
    }

    public function notifyCallback()
    {
        $pay = Pay::wechat($this->config);

        try{
            $data = $pay->callback(); // 是的,验签就这么简单!
        } catch (\Exception $e) {
            // $e->getMessage();
        }
        
        return $pay->success();
    }
}

代码贡献

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

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

赏一杯咖啡吧

pay

LICENSE

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].