Pay
Home
其他文档
冯奎博客
GitHub
Home
其他文档
冯奎博客
GitHub
  • 简介
    • 简介
    • 赞助与支持
    • 支持功能
    • 快速上手
  • 微信
    • 支付
    • 退款
    • 查询
    • 关闭
    • 接收回调
    • 分账
  • 支付宝
    • 支付
    • 退款
    • 查询
    • 关闭
    • 接收回调
    • 分账
    • 会员
  • 银联
    • 支付
    • 退款
    • 查询
    • 接收回调
  • 百度
    • 支付
    • 退款
    • 查询
    • 关闭
    • 接收回调
    • 确认回调
  • 字节跳动
    • 支付
    • 退款
    • 结算及分账
    • 接收回调
    • 确认回调

微信支付

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

method说明参数返回值
js公众号(JSAPI)支付array $orderCollection
appAPP支付array $orderCollection
h5手机网站(H5)支付array $orderCollection
scan扫码(Navicat)支付array $orderCollection
xcx小程序支付array $orderCollection
transfer商家转账(v3)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'     => '', // 商户API证书序列号(可不传,默认根据证书直接获取)
    'cert_client'   => './cert/apiclient_cert.pem', // 证书(退款,红包时使用)
    'cert_key'      => './cert/apiclient_key.pem', // 商户API证书私钥(Api安全中下载)

    'public_key_id' => '', // 平台证书序列号或支付公钥ID
    // (支付公钥ID请带:PUB_KEY_ID_ 前缀,默认根据证书直接获取,不带前缀)
    'public_key'    => './cert/public_key.pem', // 平台证书或支付公钥(Api安全中下载)
    // (微信支付新申请的,已不支持平台证书,老版调用证书列表,自动生成平台证书,注意目录权限)
];

提示

注意配置信息相关备注

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

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等;

订单配置参数

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

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

返回示例

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

手机网站支付

请求示例

$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); 开启调试,获取支付返回完整数据

订单配置参数

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

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

返回示例

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

调用支付

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

APP 支付

请求示例

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

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

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

订单配置参数

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

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

返回示例

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

调用支付

APP支付的调用,请参考官方文档

扫码支付

请求示例

$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); 开启调试,获取支付返回完整数据

订单配置参数

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

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

返回示例

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

调用支付

扫码支付的调用,请参考官方文档

小程序

请求示例

$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 等

订单配置参数

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

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

返回示例

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

调用支付

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

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

商家转账(仅支持直连商户)(2025年1月15日最新版)

请求示例

// 如果使用服务商模式支付,可在初始化是修改配置,使用直连商户秘钥证书,对接商家转账
$pay = new \fengkui\Pay\Wechat($wechatConfig);

$order = [
    'order_sn'  => time(), // 商户订单号
    'openid'    => 'openidxxxxxxxx', // 用户在直连商户应用下的用户标示(单用户转账时使用)
    'amount'    => 1, // 转账金额(分)
    'remark'    => '新会员有礼', // 转账备注(微信用户会收到该备注)
    'scene_id'  => '1000', // 转账场景ID
    'scene_info'    => [ // 转账场景报备信息
        [
            'info_type' => '活动名称', // 信息类型
            'info_content' => '新会员有礼' // 
        ]
    ],
    
];

$order['name'] = 'xxxxxx'; // (选填)收款方真实姓名
$order['body'] = 'xxxxxx'; // (选填)用户收款时感知到的收款原因将根据转账场景自动展示默认内容
$order['notify_url'] = 'xxxxxx'; // (选填)不携带参数的https,异步接收微信支付结果通知的回调地址

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

// $pay->notify(); // 验签并获取转账回调相关参数

转账参数配置

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

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

回调通过返回示例

{
    "id": "EV-2018022511223320873",
    "create_time": "2015-05-20T13:29:35+08:00",
    "resource_type": "encrypt-resource",
    "event_type": "MCHTRANSFER.BILL.FINISHED",
    "summary": "商家转账单据终态通知",
    "resource": {
        "original_type": "mch_payment",
        "algorithm": "AEAD_AES_256_GCM",
        "ciphertext":"zTBf6DDPzZSoIBkoLFkC+ho97QrqnT6UU/ADM0tJP07ITaFPek4vofQjmclLUof78NqrPcJs5OIBl+gnKKJ4xCxcDmDnZZHvev5o1pk4gwtJIFIDxbq3piDr4Wq6cZpvGPPQTYC8YoVRTdVeeN+EcuklRrmaFzv8wCTSdI9wFJ9bsxtLedhq4gpkKqN5fbSguQg9JFsX3OJeT7KPfRd6SD1gu4Lpw5gwxthfOHcYsjM/eY5gaew8zzpN6mMUEJ1HqkNuQgOguHBxFnqFPiMz+Iadw7X38Yz+IgfUkOhN1iuvMhGYKbwKJ7rTiBVvGGpF6Wse1zFKgSiTLH2RnUAMkkHmxqk+JhbQKZpSWr6O8BfhHO1OKg7hpcHZtOJKNMjIF62WYDVf36w1h8h5fg==",
        "associated_data": "mch_payment",
        "nonce": "fdasflkja484w"
    }
}
Last Updated:
Contributors: kuifeng
Prev
简介
Next
支付宝