這個功能與支付寶的批量付款到支付寶帳號功能類似。但是當前支付寶這個介面已經停止稽核了。
當前很多提問平臺就用到了這兩個平臺。比如[來問醫生],你提的問題如果被人看了。醫生得0.5元,你得0.5元。然後累積夠1元后,[來問醫生]就會通過微信的企業付款功能給你的微信餘額增加1元。
程式碼呼叫
use PaymentTransferContext;
use PaymentCommonPayException;
use PaymentConfig;
// 生成轉款單號 便於測試
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` => `http://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 | 微信支付成功時間 | 企業付款成功時間 | 否 |