支付宝转账到支付宝账户- yansongda/pay实例
本文环境 PHP7.3,Laravel6.0 不懂的可以评论或联系我邮箱:owen@owenzhang.com 著作权归OwenZhang所有。商业转载请联系OwenZhang获得授权,非商业转载请注明出处。
yansongda/pay引入项目中
composer require yansongda/pay
开通功能
- 登录https://open.alipay.com/
- 转账到支付宝账户
转账到支付宝账户
/**
* @notes : 帐户转账
* https://opendocs.alipay.com/open/01zsdq?pathHash=9f308cb1
* @param int $alipayUserId 支付宝的会员ID
* @param string $orderNo 订单号
* @param float $payMoney 订单金额,单位为元,精确到小数点后两位
* @return array
* @author: OwenZhang
* @time : 2023/4/11 15:02
*/
public function transfer(int $alipayUserId, string $orderNo, float $payMoney)
{
$appEnv = env('APP_ENV', 'dev');
$redisKey = 'payConfig:' . $appEnv;
$redisData = Redis::get($redisKey);
$payKey = ($appEnv == 'dev') ? 'alipay-sh' : 'alipay';
if (!$redisData) {
$payConfig = self::payConfig($payKey);
$redis = Redis::set($redisKey, json_encode($payConfig, true), 1800);
} else {
$payConfig = json_decode($redisData, true);
}
// 使用公钥证书模式,请配置下面两个参数,同时修改ali_public_key为以.crt结尾的支付宝公钥证书路径,如(./cert/alipayCertPublicKey_RSA2.crt)
// $isdir = app_path() . "/extend/cert/alipay/";//证书位置;绝对路径
// $payConfig['app_cert_public_key'] = $isdir . 'appPublicCert.crt'; //应用公钥证书路径
// $payConfig['alipay_root_cert'] = $isdir . 'alipayRootCert.crt'; //支付宝根证书路径
// $payConfig['log'] = [
// 'file' => './logs/alipay.log',
// 'level' => 'info', // 建议生产环境等级调整为 info,开发环境为 debug
// 'type' => 'single', // optional, 可选 daily.
// 'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
// ];
// $payConfig['http'] = [
// 'timeout' => 5.0,
// 'connect_timeout' => 5.0,
// // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
// ];
if ($appEnv == 'dev') {
$payConfig['mode'] = 'dev'; // optional,设置此参数,将进入沙箱模式
$alipayUserId = 208823395231;
}
//订单信息
$data = [
'out_biz_no' => $orderNo,//商户订单号,内部订单号
'trans_amount' => $payMoney, //订单总金额,单位为元,精确到小数点后两位,
'biz_scene' => 'DIRECT_TRANSFER', //描述特定的业务场景,可传的参数如下:DIRECT_TRANSFER:单笔无密转账到支付宝,B2C现金红包PERSONAL_COLLECTION:C2C现金红包-领红包
'product_code' => 'TRANS_ACCOUNT_NO_PWD', //业务产品码,单笔无密转账到支付宝账户固定为:TRANS_ACCOUNT_NO_PWD;收发现金红包固定为:STD_RED_PACKET;
'remark' => 'owen提现-单笔转账',//业务备注
'order_title' => 'owen提现',//转账业务的标题,用于在支付宝用户的账单里显示
'payee_info' => [
'identity' => $alipayUserId,//参与方的唯一标识'208823395231'
'identity_type' => 'ALIPAY_USER_ID',//参与方的标识类型,目前支持如下类型:1、ALIPAY_USER_ID 支付宝的会员ID2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式3、ALIPAY_OPEN_ID:支付宝openid
],//收款方信息
];
try {
$result = Pay::alipay($payConfig)->transfer($data)->toArray();
//array(6) {
//["code"]=>
//string(5) "10000"
//["msg"]=>
//string(7) "Success"
//["order_id"]=>
//string(32) "2023042230018719111"//支付宝转账订单号
//["out_biz_no"]=>
//string(32) "vYjTkuCn6o32PdDkuwMfi9jFs"//商户订单号
//["pay_fund_order_id"]=>
//string(32) "202304201100230018886889"//支付宝支付资金流水号
//["status"]=>
//string(7) "SUCCESS"
//}
if (!empty($result['code'])) {
if (($result['code'] == 10000) && ($result['status'] == 'SUCCESS')) {
$data = [
'order_id' => $result['order_id'],
'pay_fund_order_id' => $result['pay_fund_order_id'],
];
return ['code' => 200, 'msg' => $result['msg'], 'data' => $data];
}
}
return ['code' => 400, 'msg' => $result['msg']];
} catch (\Exception $e) {
return ['code' => 400, 'msg' => $e->getMessage()];
}
}
Buy me a cup of coffee 🙂
觉得对你有帮助,就给我打赏吧,谢谢!
微信赞赏码链接,点击跳转: