Skip to content
赞助

微信支付

微信支付目前直接内置支持以下快捷方式支付方法,对应的支付 method 如下:

method说明参数返回值
mp公众号支付array $orderCollection
h5H5 支付array $orderCollection
appAPP 支付array $orderCollection
mini小程序支付array $orderCollection
pos刷卡支付array $orderCollection
scan扫码支付array $orderCollection
transfer转账array $orderCollection

TIP

默认情况下,除 APP支付、小程序支付 外所使用的 appid 均是微信公众号的 appid,即配置文件中的 mp_app_id 参数

如果想使用其他类型的 appid,则只需要在调用参数中增加 _type 参数即可,例如,如果想使用小程序的 appid,则:['_type' => 'mini']

公众号支付

例子

php
Pay::config($config);

$order = [
    'out_trade_no' => time().'',
    'description' => 'subject-测试',
    'amount' => [
        'total' => 1,
    ],
    'payer' => [
        'openid' => 'onkVf1FjWS5SBxxxxxxxx',
    ],
];

$result = Pay::wechat()->mp($order);
// 返回 Collection 实例。包含了调用 JSAPI 的所有参数,如appId,timeStamp,nonceStr,package,signType,paySign 等;
// 可直接通过 $result->appId, $result->timeStamp 获取相关值。
// 后续调用不在本文档讨论范围内,请自行参考官方文档。

调起微信支付 timeStamp 参数问题

微信支付微信 两个文档所需要的参数不一致,微信支付中是 timeStamp, 微信调起的参数是 timestamp,需要自行处理。

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,appidsign 等参数,大家只需传入订单类主观参数即可。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

H5 支付

例子

php
Pay::config($config);

$order = [
    'out_trade_no' => time().'',
    'description' => 'subject-测试',
    'amount' => [
        'total' => 1,
    ],
    'scene_info' => [
        'payer_client_ip' => '1.2.4.8',
        'h5_info' => [
            'type' => 'Wap',
        ]
    ],
];

return Pay::wechat()->h5($order);
// $result->h5_url;

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,trade_typeappidsign 等参数,大家只需传入订单类主观参数即可。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

调用支付

后续调起支付不再本文档讨论范围内,请参考官方文档

其它

使用小程序的 app_id 关联 h5 支付

默认情况下,H5 支付所使用的 appid 是微信公众号的 appid,即配置文件中的 mp_app_id 参数,如果想使用关联的小程序的 appid,则只需要在调用参数中增加 ['_type' => 'mini'] 即可,例如:

php
$order = [
    '_type' => 'mini', // 注意这一行
    'out_trade_no' => time().'',
    'description' => 'subject-测试',
    'amount' => [
        'total' => 1,
    ],
    'scene_info' => [
        'payer_client_ip' => '1.2.4.8',
        'h5_info' => [
            'type' => 'Wap',
        ]
    ],
];

APP 支付

例子

php
Pay::config($config);

$order = [
    'out_trade_no' => time().'',
    'description' => 'subject-测试',
    'amount' => [
        'total' => 1,
    ],
];

// 将返回 Collection 实例,供后续 APP 调用,调用方式不在本文档讨论范围内,请参考官方文档。
return Pay::wechat()->app($order);

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,trade_typeappidsign 等参数,大家只需传入订单类主观参数即可。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

调用支付

后续调起支付不再本文档讨论范围内,请参考官方文档

小程序支付

例子

php
Pay::config($config);

$order = [
    'out_trade_no' => time().'',
    'description' => 'subject-测试',
    'amount' => [
        'total' => 1,
        'currency' => 'CNY',
    ],
    'payer' => [
        'openid' => '123fsdf234',
    ]
];

$result = Pay::wechat()->mini($order);
// 返回 Collection 实例。包含了调用 JSAPI 的所有参数,如appId,timeStamp,nonceStr,package,signType,paySign 等;
// 可直接通过 $result->appId, $result->timeStamp 获取相关值。
// 后续调用不在本文档讨论范围内,请自行参考官方文档。

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,trade_typeappidsign 等参数,大家只需传入订单类主观参数即可。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

调用支付

后续调起支付不再本文档讨论范围内,请参考官方文档

刷卡支付(付款码,被扫码)

例子

php
Pay::config($config);

$order = [
    'description' => '测试 - yansongda - 1',
    'out_trade_no' => time().'',
    'payer' => [
        'auth_code' => 'xxxxxxxxxxx'
    ],
    'amount' => [
        'total' => 1,
    ],
    'scene_info' => [
        'id' => '5678'
    ],
];

$result = Pay::wechat()->pos($order);

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,appidsign 等参数,大家只需传入订单类主观参数即可。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「输入参数」一节。

扫码支付

例子

php
Pay::config($config);

$order = [
    'out_trade_no' => time().'',
    'description' => 'subject-测试',
    'amount' => [
        'total' => 1,
    ],
];

$result = Pay::wechat()->scan($order);
// 二维码内容: $qr = $result->code_url;

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,trade_typeappidsign 等参数,大家只需传入订单类主观参数即可。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。

调用支付

后续调起支付不再本文档讨论范围内,请参考官方文档

账户转账

例子

php
Pay::config($config);

$order = [
    '_action' => 'mch_transfer', // 微信官方老版本下线后,此部分可省略
    'out_bill_no' => time().'',
    'transfer_scene_id' => '1001',
    'openid' => 'MYE42l80oelYMDE34nYD456Xoy',
    // 'user_name' => '闫嵩达'  // 明文传参即可,sdk 会自动加密
    'transfer_amount' => 1,
    'transfer_remark' => 'test',
    'transfer_scene_report_infos' => [
      ['info_type' => '活动名称', 'info_content' => '新会员有礼'],
      ['info_type' => '奖励说明', 'info_content' => '注册会员抽奖一等奖'],
    ],
];

// 以下为老版本调用方式,微信官方将于 2025年 3 月 31日 下线,建议使用新版本调用方式
$order = [
    'out_batch_no' => time().'',
    'batch_name' => 'subject-测试',
    'batch_remark' => 'test',
    'total_amount' => 1,
    'total_num' => 1,
    'transfer_detail_list' => [
        [
            'out_detail_no' => time().'-1',
            'transfer_amount' => 1,
            'transfer_remark' => 'test',
            'openid' => 'MYE42l80oelYMDE34nYD456Xoy',
            // 'user_name' => '闫嵩达'  // 明文传参即可,sdk 会自动加密
        ],
    ],
];

$result = Pay::wechat()->transfer($order);

订单配置参数

所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,appidsign 等参数,大家只需传入订单类主观参数即可。

所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考以下链接,查看「请求参数」一节:

Released under the MIT License.