# PHP快速接入支付宝.微信支付.QQ钱包支付 **Repository Path**: fancanjie/payment ## Basic Information - **Project Name**: PHP快速接入支付宝.微信支付.QQ钱包支付 - **Description**: 支付集成composer包,PHP开发,支持支付宝,微信支付,提供很多函数可直接使用,使用非常简单。 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.itgz8.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2021-12-01 - **Last Updated**: 2021-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 项目来历 * 支付宝/微信支付/QQ钱包调用一直是PHP开发者经常遇到的情况,各种接口,各种参数调用,SDK代码又太多,很多用不上,所以本项目应运而生,提供多种接口,难度很小,从启动支付到回调验签,都有函数一次性解决。代码量小,冗余低; * 本项目目前已支持支付宝/微信/QQ钱包的部分常用接口(扫码/网页/手机/公众号支付及回调验签),其他接口陆续更新中。 * ==若发现bug可提交issue或联系邮箱:zqu1016@qq.com。== * 本项目支付各种PHP框架内使用,不限框架,原生PHP使用也是可以的。 ### 本项目安装方式: * 可使用composer直接安装: > composer require iboxs/payment * 也可以直接下载源代码后将src文件夹内的代码拷贝出来使用。 ### 使用方法: * 使用相应接口前请确认已获得支付宝/微信支付相关接口授权; * 支付宝网页支付建议同时申请手机端/电脑网页支付两个接口。 #### 支付宝 * 已提供接口有: 接口 | 函数 | 备注 ---|---|--- AlipayWeb | 网页支付 | 不用区分手机电脑,会自动识别后调用不同接口 AlipayCode | 扫码支付(二维码) | 获得二维码,用户扫描二维码支付,非条码 AlipayRefund | 支付宝单笔退款 | 可部分退款或全部退款 *其他接口陆续更新中 ##### 参数 * 网页支付(AlipayWeb)与扫码支付(AlipayCode)中传入的$orderInfo为数组类型,含有参数为: ``` $orderInfo=array( 'order_name'=>"订单测试", //订单名称或标题 'amount'=>1, //订单金额(最低0.01) 'out_trade_no'=>"2021101247845" //商户订单号(同一个商户本订单号需唯一) ); ``` * 支付宝单笔退款(AlipayRefund)传入的$orderInfo参数需包含: ``` $orderInfo=array( 'tradeNo' =>'202114141414141410414', // 要退款的支付宝交易号,支付完成后支付宝回调时传入的交易号 'refund_amount'=>1, //退款金额(全额退款则为订单金额,部分退款则为退款金额,不允许大于订单金额) 'out_trade_no'=>"2021101247845" //要退款的商户订单号 ); ``` #### 微信 * 已提供接口有: 接口 | 函数 | 备注 ---|---|--- WxPayCode | Native支付 | 获取支付二维码后用户扫码支付(一般用于PC端) WxPayWap | 手机网页支付 | 在手机浏览器内调用本接口启动微信支付 WxJsPay | 微信公众号支付 | 微信内公众号网页调用微信启动支付 WxJsapiParams | 微信小程序/APP支付 | 获取预支付码,后可在小程序端调用支付接口启动支付 WxRefund | 微信支付退款 | 微信支付退款,可部分或全部退款,原路退回 WxTransfers | 微信支付到零钱 | 使用微信支付向用户转账,直接转账到用户零钱内 *其他接口陆续更新中 ##### 参数 * Native支付(WxPayCode)、手机网页支付(WxPayWap)、微信小程序/APP支付(WxJsapiParams)需传入的$orderInfo参数需包含: ``` $orderInfo=array( 'order_name'=>"订单测试", //订单名称或标题 'amount'=>1, //订单金额(最低0.01) 'out_trade_no'=>"2021101247845", //商户订单号(同一个商户本订单号需唯一), 'body'=>'' //微信小程序/APP支付需要(本参数可选) ); ``` * 微信公众号支付(WxJsPay)需传入的$orderInfo参数需包含: ``` $orderInfo=array( 'order_name'=>"订单测试", //订单名称或标题 'amount'=>1, //订单金额(最低0.01) 'out_trade_no'=>"2021101247845", //商户订单号(同一个商户本订单号需唯一), 'code'=>'' //微信会话code(通过微信内网页js获取,需使用其获得用户openid) ); ``` * 微信退款接口(WxRefund)需传入的$orderInfo参数需包含: ``` $orderInfo=array( 'trade_no'=>21010101010101, //微信支付流水号(微信支付回调获得的微信支付内的交易号) 'amount'=>1, //订单金额(最低0.01) 'out_trade_no'=>"2021101247845", //商户订单号(需退款的订单号), 'refund_amount'=>0.5, //退款金额 'refund_trade_no'=>54145414512541, //退款订单号(与订单号不同,退款的编号,可临时生成) 'desc'=>'用户退款' //退款说明 ); ``` * 微信转账到零钱接口(WxTransfers)中的$orderInfo参数需包含: ``` $orderInfo=array( 'amount'=>1, //转账金额(最低0.01) 'out_trade_no'=>"2021101247845", //商户订单号, 'real_name'=>"张三", //收款人真实姓名 'desc'=>'订单奖励' //转账说明 ); ``` ### 示例代码 * 可参考包内test文件夹; * 可以将配置程序写到一个文件内,具体可参考test文件夹内的示例程序 #### 支付宝示例代码: * 支付: ``` "", //支付宝公钥 'rsaPrivateKey' =>"", //商户私钥 'appid' => "2016192400584878", //应用APPID 'notify_url' => "http://auth.itgz8.com/return", //异步通知地址 'return_url' => "http://auth.itgz8.com/return", //同步通知地址 'charset' => "UTF-8", 'sign_type'=>"RSA2", 'gatewayUrl' =>"https://openapi.alipay.com/gateway.do" //应用网关,若为沙箱环境则为:"https://openapi.alipaydev.com/gateway.do" ]; //订单信息 $orderInfo=array( 'order_name'=>"订单测试", 'amount'=>1, 'out_trade_no'=>"2021101247845" ); $alipay=new Client($alipayconfig); //实例化,若需使用支付宝则传入支付宝配置数组 var_dump($alipay->AlipayWeb($orderInfo)); //调用网页支付接口启动支付,若为其他接口,则根据上方需示例的各个接口函数调用不同的函数,并传入指定格式的$orderInfo参数即可. ?> ``` * 回调 ``` php "", //支付宝公钥 'rsaPrivateKey' =>"", //商户私钥 'appid' => "2016192400584878", //应用APPID 'notify_url' => "http://auth.itgz8.com/notify", //异步通知地址 'return_url' => "http://auth.itgz8.com/return", //同步通知地址 'charset' => "UTF-8", 'sign_type'=>"RSA2", 'gatewayUrl' =>"https://openapi.alipay.com/gateway.do" //应用网关,若为沙箱环境则为:"https://openapi.alipaydev.com/gateway.do" ]; $result=Notify::alipayNotify($alipayconfig); //调用支付宝异步验签 //返回布尔型,真为验证通过,可以进行下一步,假为验证失败 if($result==true){ //进行订单操作(这里不用输出success,接口内已经输出了) } else{ echo 'fail'; } ``` #### 微信支付示例代码: * 支付: ``` php '1504922561', //商户号 'appid'=>'', //APPID(公众号支付必须) 'apiKey'=>'', //Key 'notify_url'=>'http://auth.itgz8.com/notify', //异步通知地址 'return_url'=>'http://auth.itgz8.com/return' //网站地址(手机网页支付接口必须,其他接口不需要) ]; $orderInfo=array( 'order_name'=>"订单测试", 'amount'=>1, 'out_trade_no'=>"2021101247845" ); $wxpay=new Client($wxpayconfig); var_dump($wxpay->WxPayCode($orderInfo)); ``` * 回调 ``` '1504922561', //商户号 'appid'=>'', //APPID(公众号支付必须) 'apiKey'=>'', //Key 'notify_url'=>'http://auth.itgz8.com/notify', //异步通知地址 'return_url'=>'http://auth.itgz8.com/return' //网站地址(手机网页支付接口必须,其他接口不需要) ]; $result=Notify::WxPayNotify($wxpayconfig); //调用微信回调验签 //返回布尔型,真为验证通过,可以进行下一步,假为验证失败 if($result==true){ //进行订单操作(这里不用输出任何数据,接口内已经输出了) } else{ echo 'fail'; } ``` #### QQ支付示例代码: * 支付: ``` php '1504922561', //商户号 'apiKey'=>'', //Key 'notify_url'=>'http://auth.itgz8.com/notify' //异步通知地址 ]; $orderInfo=array( 'order_name'=>"订单测试", //订单名称 'amount'=>1, //订单金额 'out_trade_no'=>"2021101247845" //订单号 ); $qqpay=new Client($qqpayconfig); var_dump($qqpay->QQPay($orderInfo)); ``` * 回调 ``` '1504922561', //商户号 'apiKey'=>'', //Key 'notify_url'=>'http://auth.itgz8.com/notify' //异步通知地址 ]; $result=Notify::QqPayNotify($qqpayconfig); //调用QQ回调验签 //返回布尔型,真为验证通过,可以进行下一步,假为验证失败 if($result==true){ //进行订单操作(这里不用输出任何数据,接口内已经输出了) } else{ echo 'fail'; } ```