企业付款

EasyWeChat 4.0.7+

该模块需要用到双向证书,请参考:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3

企业付款到用户零钱

  1. $app->transfer->toBalance([
  2. 'partner_trade_no' => '1233455', // 商户订单号,需保持唯一性(只能是字母或者数字,不能包含有符号)
  3. 'openid' => 'oxTWIuGaIt6gTKsQRLau2M0yL16E',
  4. 'check_name' => 'FORCE_CHECK', // NO_CHECK:不校验真实姓名, FORCE_CHECK:强校验真实姓名
  5. 're_user_name' => '王小帅', // 如果 check_name 设置为FORCE_CHECK,则必填用户真实姓名
  6. 'amount' => 10000, // 企业付款金额,单位为分
  7. 'desc' => '理赔', // 企业付款操作说明信息。必填
  8. ]);

查询付款到零钱的订单

  1. $partnerTradeNo = 1233455;
  2. $app->transfer->queryBalanceOrder($partnerTradeNo);

企业付款到银行卡

企业付款到银行卡需要对银行卡号与姓名进行 RSA 加密,所以这里需要先下载 RSA 公钥到本地(服务器),我们提供了一个命令行工具:EasyWeChat/console,请使用 composer 安装完成。

  1. $ composer require easywechat/console -vvv

然后,在项目根目录执行以下命令下载公钥:

  1. $ ./vendor/bin/easywechat payment:rsa_public_key \
  2. > --mch_id=14339221228 \
  3. > --api_key=36YTbDmLgyQ52noqdxgwGiYy \
  4. > --cert_path=/Users/overtrue/www/demo/apiclient_cert.pem \
  5. > --key_path=/Users/overtrue/www/demo/apiclient_key.pem

将会在当前目录生成一个 ./public-14339221228.pem 文件,你可以将它移动到敏感目录,然后在支付配置文件中加如以下选项:

  1. use EasyWeChat\Factory;
  2. $config = [
  3. // 必要配置
  4. 'app_id' => 'xxxx',
  5. 'mch_id' => 'your-mch-id',
  6. 'key' => 'key-for-signature', // API 密钥
  7. // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
  8. 'cert_path' => '/path/to/your/cert.pem', // XXX: 绝对路径!!!!
  9. 'key_path' => '/path/to/your/key', // XXX: 绝对路径!!!!
  10. // 将上面得到的公钥存放路径填写在这里
  11. 'rsa_public_key_path' => '/path/to/your/rsa/publick/key/public-14339221228.pem', // <<<------------------------
  12. 'notify_url' => '默认的订单回调地址', // 你也可以在下单时单独设置来想覆盖它
  13. ];
  14. $app = Factory::payment($config);
  1. $result = $app->transfer->toBankCard([
  2. 'partner_trade_no' => '1229222022',
  3. 'enc_bank_no' => '6214830901234564', // 银行卡号
  4. 'enc_true_name' => '安正超', // 银行卡对应的用户真实姓名
  5. 'bank_code' => '1001', // 银行编号
  6. 'amount' => 100, // 单位:分
  7. 'desc' => '测试',
  8. ]);

查询付款到银行卡的订单

  1. $partnerTradeNo = 1233455;
  2. $app->transfer->queryBankCardOrder($partnerTradeNo);