欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

11. PHP接入微信企业付款功能

程序员文章站 2022-04-24 13:28:05
payment 项目2.0版本 这个功能与支付宝的批量付款到支付宝帐号功能类似。但是当前支付宝这个接口已经停止审核了。 当前很多提问平台就用到了这两个平台。比如[来问医生],你...

payment 项目2.0版本

这个功能与支付宝的批量付款到支付宝帐号功能类似。但是当前支付宝这个接口已经停止审核了。

当前很多提问平台就用到了这两个平台。比如[来问医生],你提的问题如果被人看了。医生得0.5元,你得0.5元。然后累积够1元后,[来问医生]就会通过微信的企业付款功能给你的微信余额增加1元。

代码调用

use Payment\TransferContext;
use Payment\Common\PayException;
use Payment\Config;


//  生成转款单号 便于测试
function createPayid()
{
    return date('Ymdhis', time()).substr(floor(microtime()*1000),0,1).rand(0,9);
}

$wxconfig = [
    'app_id'    => 'wxa244db59a34996fc',  // 公众账号ID
    'mch_id'    => '1331302101',// 商户id
    'md5_key'   => 'adslkfjiKQJLAIQLJ393201482333333',// md5 秘钥

    'notify_url'    => 'https://test.helei.com/pay-notify.html',
    'time_expire'   => '14',

    // 涉及资金流动时 退款  转款,需要提供该文件
    'cert_path' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'wx' . DIRECTORY_SEPARATOR . 'apiclient_cert.pem',
    'key_path'  => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'wx' . DIRECTORY_SEPARATOR . 'apiclient_key.pem',
];

// 转款数据
$transData = [
    'trans_no' => createPayid(),
    'trans_data'   => [
        [
            'serial_no' => createPayid(),
            'user_account' => 'otijfvr2oMz3tXnaQdKKbQeeBmhM',// 微信转款时,为用户所关注公众号的openid
            'user_name' => '愚不可及',
            'trans_fee' => '1',
            'desc'  => '测试批量转款',
        ]
    ],
];

$refund = new TransferContext();
try {
    // 微信的企业付款, 仅支持单笔
    $type = Config::WEIXIN;
    $refund->initTransfer(Config::WEIXIN, $wxconfig);

    $ret = $refund->transfer($transData);
} catch (PayException $e) {
    echo $e->errorMessage();exit;
}

var_dump($ret);

请求参数

参数 参数名 参数说明 是否必须
trans_no 商户订单号 商户订单号,需保持唯一性
trans_data 转账数据 转账数据详细信息,具体内容如下

trans_data数据

参数 参数名 参数说明 是否必须
serial_no 流水号 对于微信该参数不需要,但请保留,后期可能支持批量退款需要
user_account 用户openid 商户appid下,某用户的openid
user_name 收款用户姓名 收款用户真实姓名。
trans_fee 金额 企业付款金额,单位为元
desc 企业付款描述信息 企业付款操作说明信息。

返回数据

参数 参数名 参数说明 是否必须
is_success 是否成功 失败会返回错误原因。T:成功 F:失败
error 错误原因 为T时有返回
response 成功时数据 成功时返回的具体数据

response数据

参数 参数名 参数说明 是否必须
trans_no 商户订单号 商户订单号,需保持唯一性
trans_id 微信订单号 企业付款成功,返回的微信订单号
payment_time 微信支付成功时间 企业付款成功时间