| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php
- /**
- * 支付宝企业付款服务
- * Class TransferService
- * Author SHUI
- * @package wxpay
- */
- define('AOP_SDK_DIR', __DIR__);
- require_once AOP_SDK_DIR . '/AopSdk.php';
- require_once AOP_SDK_DIR . '/AlipayConfig.php';
- require_once AOP_SDK_DIR . '/aop/AopClient.php';
- require_once AOP_SDK_DIR . '/aop/SignData.php';
- require_once AOP_SDK_DIR . '/aop/request/AlipayFundTransToaccountTransferRequest.php';
- require_once AOP_SDK_DIR . '/aop/request/AlipayFundTransOrderQueryRequest.php';
- class TransferService {
- /**
- * 商户付款
- *
- * @access public
- *
- * @param string $userid 支付宝用户ID
- * @param float $amount 付款金额
- * @param string $orderid 订单号
- *
- * @return array
- */
- public function transfer($userid, $amount, $orderid) {
- $aop = new \AopClient;
- $aop->gatewayUrl = AlipayConfig::GATEWAY;
- $aop->appId = AlipayConfig::APPID;
- $aop->rsaPrivateKey = AlipayConfig::APPPRIVATEKEY;
- $aop->alipayrsaPublicKey = AlipayConfig::ALIPAYPUBLICKEY;
- $aop->apiVersion = '1.0';
- $aop->signType = 'RSA2';
- $aop->postCharset = 'UTF-8';
- $aop->format = 'json';
- $param = [
- 'out_biz_no' => $orderid,
- 'payee_type' => 'ALIPAY_USERID',
- 'payee_account' => $userid,
- 'amount' => $amount,
- 'remark' => '提现转账'
- ];
- $request = new \AlipayFundTransToaccountTransferRequest;
- $request->setBizContent(json_encode($param));
- $result = $aop->execute($request);
- $responseNode = str_replace('.', '_', $request->getApiMethodName()) . '_response';
- $resultCode = $result->$responseNode->code;
- if(! empty($resultCode) && $resultCode == 10000){
- return ['flag' => 0, 'msg' => '付款成功', 'orderid' => $orderid];
- } else if ($resultCode == 20000 || ($resultCode == 40004 && $result->$responseNode->sub_code == 'SYSTEM_ERROR')){
- $res = $this->query($orderid);
- if (0 == $res['flag']) {
- return ['flag' => 0, 'msg' => '付款成功', 'orderid' => $orderid];
- } else {
- return ['flag' => 1, 'msg' => '付款失败:' . $res['msg']];
- }
- }
- return ['flag' => -1, 'msg' => '付款失败:' . $result->$responseNode->sub_msg];
- }
- /**
- * 订单状态查询
- * @param $orderid
- * @return array
- */
- protected function query($orderid) {
- $aop = new \AopClient ();
- $aop->gatewayUrl = AlipayConfig::GATEWAY;
- $aop->appId = AlipayConfig::APPID;
- $aop->rsaPrivateKey = AlipayConfig::APPPRIVATEKEY;
- $aop->alipayrsaPublicKey = AlipayConfig::ALIPAYPUBLICKEY;
- $aop->apiVersion = '1.0';
- $aop->signType = 'RSA2';
- $aop->postCharset = 'UTF-8';
- $aop->format = 'json';
- $request = new \AlipayFundTransOrderQueryRequest ();
- $param = [
- 'out_biz_no' => $orderid
- ];
- $request->setBizContent(json_encode($param));
- $result = $aop->execute ( $request);
- $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
- $resultCode = $result->$responseNode->code;
- if(! empty($resultCode) && $resultCode == 10000){
- return ['flag' => 0, 'msg' => '付款成功'];
- }
- return ['flag' => 1, 'msg' => $result->$responseNode->sub_msg];
- }
- }
|