xwzj/wechat

this is wechat sdk

v1.03 2020-03-03 08:57 UTC

This package is auto-updated.

Last update: 2024-09-19 10:36:19 UTC


README

微信相关SDK

Installation

Use Composer to install the library.

composer require xwzj/wechat

小程序,公众号,H5支付,App支付,扫码支付模式二

<?php

//tp或其他框架可以直接在控制器中使用,无需引入自动加载类
require_once '../vendor/autoload.php';


use Wechat\Pay\WxPayUnifiedOrder;
use Wechat\Pay\WxPayException;

//实际使用时,可以根据需求捕获异常信息
try{
    //配置商户秘钥
    $config = ['partnerkey'=>'支付秘钥,用于签名验证'];
    $inputObj = new WxPayUnifiedOrder($config);
    //支付类型:JSAPI,NATIVE,APP,
    $inputObj->SetTrade_type('APP');

    //设置商品或支付单简要描述
    $inputObj->SetBody('摩推支付');

    //用户唯一标识
    $inputObj->SetOpenid('gvdbgdsnbggcc');

    //商户订单号
    $inputObj->SetOut_trade_no('gvdbgdsnbggcc');

    //支付回调url
    $inputObj->SetNotify_url('http://');

    //设置appid
    $inputObj->SetAppid('vfdsbfdsbfdsdf');

    //设置商户号
    $inputObj->SetMch_id('vcdsbgffsbfd');

    //设置支付价格,单位:分
    $inputObj->SetTotal_fee(5*100);

    //请求统一下单接口,获取预支付交易会话ID
    $wx_pay = $inputObj->unifiedOrder();

    if($wx_pay['return_code']!="SUCCESS" || $wx_pay['result_code'] !="SUCCESS")
    {
        $msg = empty($wx_pay['err_code_des'])?$wx_pay['return_msg']:$wx_pay['err_code_des'];
        throw new WxPayException($msg);
    }elseif ($wx_pay['trade_type']=='NATIVE'){
        //扫码支付不需要再次签名,可以直接获取url
        //code_url的值并非固定,使用时按照URL格式转成二维码即可
        return $wx_pay['code_url'];
    }
    $data = $inputObj->getPayInfo($wx_pay);
}catch (\Exception $e){
    echo $e->getMessage();
}

支付回调 (小程序,公众号,H5支付,App支付,扫码支付模式二)

<?php
//处理回调方式一
//tp或其他框架可以直接在控制器中使用,无需引入自动加载类
require_once '../vendor/autoload.php';

$config = ['partnerkey'=>'支付秘钥,用于签名验证','appid'=>'微信应用的唯一标识appid'];

$pay_notify = new \Wechat\Pay\WxPayNotify($config);

return $pay_notify->notify(function ($result){
    //处理支付通知
});
<?php
//处理回调方式二
class Notify extends \Wechat\Pay\WxPayNotify
{
    protected $partnerkey = '支付秘钥';
    public function NotifyProcess($data)
    {
        //处理支付通知
    }
}

申请退款

<?php

//tp或其他框架可以直接在控制器中使用,无需引入自动加载类
require_once '../vendor/autoload.php';

$inputObj = new \Wechat\Pay\WxPayRefund(['partnerkey'=>'支付秘钥,用于签名验证']);

//商户订单号,微信支付订单号两者至少要有一个
$inputObj->SetOut_trade_no('退款订单对应的订单号');

$inputObj->SetTransaction_id('微信支付订单号');

$inputObj->SetOut_refund_no('商户内部退款订单号');

$inputObj->SetTotal_fee('订单总金额');

$inputObj->SetRefund_fee('退款金额');

$inputObj->SetOp_user_id('设置操作员账号,可以直接使用商户号');

//请求退款
$data = $inputObj->refund();

扫码支付模式一

<?php

//tp或其他框架可以直接在控制器中使用,无需引入自动加载类
require_once '../vendor/autoload.php';

$inputObj = new \Wechat\Pay\WxPayBizPayUrl(['partnerkey'=>'支付秘钥,用于签名验证']);

$inputObj->SetAppid('应用的唯一标识');

$inputObj->SetMch_id('商户号');

$inputObj->SetProduct_id('商品ID');

//获取二维码内容
$qr_code_content = $inputObj->bizpayurl();

//生成二维码,可以使用QRCode生成二维码在保存在本地。前端使用二维码url访问即可

事件推送相关

<?php

//tp或其他框架可以直接在控制器中使用,无需引入自动加载类
require_once '../vendor/autoload.php';


echo \Wechat\Weapp\EventPush::getData('111111',function ($push_data,$send_obj){
    switch (strtolower($push_data['MsgType'])){
        case 'event':
            switch (strtolower($push_data['Event'])){
                case 'subscribe':
                    //关注关注事件,这里分为直接关注事件和扫描带参数二维码事件,还未关注时的事件推送
                    return $send_obj->text('欢迎关注公众号');
                    break;
                case 'unsubscribe':
                    //取消关注事件
                    break;
                case 'SCAN':
                    //扫描带参数二维码事件,用户已关注时的事件推送
                    break;
                case 'LOCATION':
                    //上报地理位置事件
                    break;
                case 'CLICK':
                    //自定义菜单事件
                    break;
            }
            break;
        case 'text':
            //文本消息
            break;
        case 'image':
            //图片消息
            break;
        case 'voice':
            //语音消息
            break;
        case 'video':
            //视频消息
            break;
        case 'shortvideo':
            //小视频消息
            break;
        case 'location':
            //地理位置消息
            break;
        case 'link':
            //链接消息
            break;
    }
});

小程序用户信息相关

//实例化用户信息类
$wxuser = new WxUser(['appid'=>'小程序唯一标识','appSecret'=>'小程序秘钥']);
//小程序授权获取用户信息
//code:  wx.login()返回的code码
return $wxuser->getWeAppAuthInfo($code);

//获取access_token
$wxuser->getAccessToken();

//发送模板消息

所有代码api都可以在examples目录中查看

目录结构

wechat  SDK根目录
├─curl           curl封装代码目录
│  ├─Request             请求类
│
├─examples                  示例代码目录
│  ├─BizPayUrl.php          扫码支付模式一示例代码
│  ├─PayNotify.php          微信支付回调通知示例代码
│  └─PayUnifiedOrder        微信支付示例代码
│  └─Refund                 退款示例代码
│  └─WxEventPush            微信事件推送
│
├─pay                        支付相关代码目录
│  ├─WxPayBizPayUrl.php     扫码支付模式一生成二维码参数
│  ├─WxPayCloseOrder.php    关闭订单输入对象
│  └─WxPayDataBase          基础数据类
│  └─WxPayDownloadBill      下载对账单输入对象
│  └─WxPayException         微信异常处理
│  └─WxPayMicroPay          提交被扫输入对象
│  └─WxPayNotify            支付回调通知
│  └─WxPayOrderQuery        订单查询
│  └─WxPayRefund            提交退款
│  └─WxPayRefundQuery       退款查询
│  └─WxPayReverse           撤销输入
│  └─WxPayShortUrl          短链转换
│  └─WxPayUnifiedOrder      统一下单输入对象
│
├─weapp                      公众号及小程序相关SDK
│  ├─EventPush.php          微信公众号事件推送类
│  ├─SendEventPushMsg.php   消息推送信息返回格式化类
│  └─WeAppData              数据基类
│  └─WeAppException         微信异常处理
│  └─WxTemplate             模板消息相关
│  └─WxUser                 微信用户相关
│