微信支付

微信支付目前支持 6 种支付方法,对应的支付 method 如下:

method说明参数返回值
js公众号(JSAPI)支付array $orderCollection
appAPP支付array $orderCollection
h5手机网站(H5)支付array $orderCollection
scan扫码(Navicat)支付array $orderCollection
xcx小程序支付array $orderCollection
transfer付款至用户零钱(v2)array $orderCollection

支持 2 种连接模式(直连模式和服务商),根据配置的填写自行进行判断:

# 微信支付配置
$wechatConfig = [
    'xcxid'         => '', // 小程序 appid
    'appid'         => '', // 微信支付 appid
    'mchid'         => '', // 微信支付 mch_id 商户收款账号
    'key'           => '', // 微信支付 apiV3key(尽量包含大小写字母,否则验签不通过,服务商模式使用服务商key)
    'appsecret'     => '', // 公众帐号 secert (公众号支付获取 code 和 openid 使用)

    'sp_appid'      => '', // 服务商应用 ID
    'sp_mchid'      => '', // 服务商户号

    'notify_url'    => '', // 接收支付状态的连接  改成自己的回调地址
    'redirect_url'  => '', // 公众号支付,调起支付页面

    // 服务商模式下,使用服务商证书
    'serial_no'     => '', // 证书序列号(可不传,默认根据证书直接获取)
    'cert_client'   => './cert/apiclient_cert.pem', // 证书(退款,红包时使用)
    'cert_key'      => './cert/apiclient_key.pem', // 商户私钥(Api安全中下载)
    'public_key'    => './cert/public_key.pem', // 平台公钥(调动证书列表,自动生成,注意目录权限)
];

TIP

注意配置信息相关备注

除必传参数外,其他可选参数如下

method参数名类型描述
time_expire交易结束时间string[1,64]订单失效时间,传入类型(订单失效剩余秒数
2022-02-22 14:22:22
2022年02月22日 14:22:22
有效时间戳)
attach附加数据string[1,45]附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。
settle_info结算信息boolean是否指定分账,枚举值
true:是 false:否
示例值:true
payerIP地址string[1,45]用户的客户端IP,支持IPv4和IPv6两种格式的IP地址。

公众号支付

请求示例

$pay = new \fengkui\Pay\Wechat($wechatConfig);

$order = [
    'body'      => 'subject-测试', // 商品描述
    'order_sn'  => time(), // 商户订单号
    'total_amount' => 1, // 订单金额
    'code'      => 'codexxxxxxxx', // 用户登录凭证(code或openid两者必传其一)
    'openid'    => 'openidxxxxxxxx', // 用户唯一标识
];

$result = $pay->js($order);
// 返回 Collection 实例。包含了调用 JSAPI 的所有参数
// 如appId,timeStamp,nonceStr,package,signType,paySign等;

订单配置参数

所有订单配置中,客观参数及配置,扩展包已自动处理, 除必传参数外,可选参数 attachtime_expire ,如需传入其他参数,可根据自己需求任意修改扩展

所有订单配置参数和官方无异,参数请参考这里open in new window,查看「请求参数」一栏。

返回示例

直接跳转链接,无返回参数

手机网站支付

请求示例

$pay = new \fengkui\Pay\Wechat($wechatConfig);

$order = [
    'body'      => 'subject-测试', // 商品描述
    'order_sn'  => time(), // 商户订单号
    'total_amount' => 1, // 订单金额
    'type'      => 'wap', // 场景类型 ios, android, wap(默认)
];

$h5_url = $pay->h5($order);
// 返回 Collection 实例为 h5_url 手机网站支付地址
// $pay->h5($order, true); 开启调试,获取支付返回完整数据

订单配置参数

所有订单配置中,客观参数及配置,扩展包已自动处理, 除必传参数外,可选参数 attachtime_expire ,如需传入其他参数,可根据自己需求任意修改扩展

所有订单配置参数和官方无异,参数请参考这里open in new window,查看「请求参数」一栏。

返回示例

返回链接地址,让用户主动点击跳转

调用支付

手机网站支付的调用,请参考官方文档open in new window

APP 支付

请求示例

$pay = new \fengkui\Pay\Wechat($wechatConfig);

$order = [
    'body'      => 'subject-测试', // 商品描述
    'order_sn'  => time(), // 商户订单号
    'total_amount' => 1, // 订单金额
];

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

订单配置参数

所有订单配置中,客观参数及配置,扩展包已自动处理, 除必传参数外,可选参数 attachtime_expire ,如需传入其他参数,可根据自己需求任意修改扩展

所有订单配置参数和官方无异,参数请参考这里open in new window,查看「请求参数」一栏。

返回示例

{
    'appId': '', // 微信开放平台审核通过的移动应用appid
    'timeStamp': '',
    'nonceStr': '', // 随机32位字符串
    'prepayid': 'wx261153585405162d4d02642eabe7000000', // 预支付交易会话标识
    'paySign': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 秘钥
    'partnerid': 'mchid', // 商户号
    'package': 'Sign=WXPay',
}

调用支付

APP支付的调用,请参考官方文档open in new window

扫码支付

请求示例

$pay = new \fengkui\Pay\Wechat($wechatConfig);

$order = [
    'body'      => 'subject-测试', // 商品描述
    'order_sn'  => time(), // 商户订单号
    'total_amount' => 1, // 订单金额
];

$code_url = $pay->scan($order);
// 返回 Collection 实例为 code_url 扫码支付地址
// $pay->scan($order, true); 开启调试,获取支付返回完整数据

订单配置参数

所有订单配置中,客观参数及配置,扩展包已自动处理, 除必传参数外,可选参数 attachtime_expire ,如需传入其他参数,可根据自己需求任意修改扩展

所有订单配置参数和官方无异,参数请参考这里open in new window,查看「请求参数」一栏。

返回示例

返回链接地址,使用相关扩展生成二维码,扫码跳转

调用支付

扫码支付的调用,请参考官方文档open in new window

小程序

请求示例

$pay = new \fengkui\Pay\Wechat($wechatConfig);

$order = [
    'body'      => 'subject-测试', // 商品描述
    'order_sn'  => time(), // 商户订单号
    'total_amount' => 1, // 订单金额
    'openid'    => 'openidxxxxxxxx', // 用户唯一标识
];

$result = $pay->xcx($order);
// 返回 Collection 实例。包含了调用 JSAPI 的所有参数
// 如 appId,timeStamp,nonceStr,package,signType,paySign 等

订单配置参数

所有订单配置中,客观参数及配置,扩展包已自动处理
除必传参数外,可选参数 attachtime_expire ,如需传入其他参数,可根据自己需求任意修改扩展

所有订单配置参数和官方无异,参数请参考这里open in new window,查看「请求参数」一栏。

返回示例

{
    'appId': '', // 小程序appid
    'timeStamp': '',
    'nonceStr': '', // 随机32位字符串
    'package': 'prepay_id=wx261153585405162d4d02642eabe7000000', // 预支付交易会话标识
    'paySign': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 秘钥
    'signType': 'RSA', // 加密方式
}

调用支付

小程序支付的调用,请参考官方文档open in new window 调用 wx.requestPayment(OBJECT)open in new window

wx.requestPayment({
    timeStamp: '',
    nonceStr: '',
    package: '',
    signType: 'RSA', // MD5或RSA(根据返回使用)
    paySign: '',
    success (res) { },
    fail (res) { }
})

账户转账(仅支持直连商户)

请求示例

$pay = new \fengkui\Pay\Wechat($wechatConfig);

$order = [
    'body'      => 'subject-测试', // 商品描述
    'order_sn'  => time(), // 商户订单号
    'amount'    => 1, // 提现总金额
    'openid'    => 'openidxxxxxxxx', // 用户在直连商户应用下的用户标示(单用户提现时使用)
];

$result = $pay->transfer($order);

多用户提现是添加一下参数

$order['list'] = [ // 提现用户列表(多个用户提现时使用)
    [
        'amount'    => 1, // 单用户提现金额
        'openid'    => 'openidxxxxxxxx111',
        'name'      => '用户1', // 用户在直连商户应用下的用户标示(不必填)
        'remark'    => '备注', // 单条转账备注(微信用户会收到该备注)(不必填)
    ],
    [
        'amount'    => 2,
        'openid'    => 'openidxxxxxxxx222',
    ],
];

提现参数配置

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

所有订单配置参数和官方无异,参数请参考这里open in new window,查看「请求参数」一栏。

返回示例

{
    "appid": "wxf636efh567hg4356",
    "out_batch_no": "plfk2020042013",
    "batch_name": "2019年1月深圳分部报销单",
    "batch_remark": "2019年1月深圳分部报销单",
    "total_amount": 4000000,
    "total_num": 200,
    "transfer_detail_list": [
        {
            "out_detail_no": "x23zy545Bd5436",
            "transfer_amount": 200000,
            "transfer_remark": "2020年4月报销",
            "openid": "o-MYE42l80oelYMDE34nYD456Xoy",
            "user_name": "757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45"
        }
    ]
}
Last Updated:
Contributors: kuifeng