php之支付宝转账或发红包到指定账户(提现功能)

转账到支付宝账户产品介绍

转账到支付宝账户是为了满足支付宝商户向其他支付宝账户进行单笔转账的需求,针对具备开发能力的商户,提供通过 API 接口完成单笔转账的功能。商家只需输入另一个正确的支付宝账号,即可将单笔资金从本人的支付宝账户转账至另一个支付宝账户。 该产品适用行业较广,可用于商户间的货款结算,转账汇款,商户给个人用户发放佣金等。目前仅支持账户余额渠道付款。

小程序文档 - 支付宝文档中心

快速接入:小程序文档 - 支付宝文档中心

  1. 支付宝开发者中心申请 单笔转账到账户
    2. 上传应用公钥证书
    3. 下载支付宝SDK
    4. 查看支付宝alipay.fund.trans.uni.transfer接口
    5. 支付宝转账

图片.png

添加功能里面添加 单笔转账到账户

  • 点击应用信息

设置接口加密方式

图片.png

需要生成 RSA私钥公钥和证书 支付宝密钥生成器下载

图片.png

这里需要注意 一下  先点击CSR文件获取

图片.png

点击获取 点击CSR文件 之后 应用私钥和公钥会进行变更
返回支付宝加签内容管理 上传CSR

图片.png

并且保存刚刚生成的应用私钥SDK包下载地址

文档接口  文档接口里面有非证书的请求 AopClient 如果需要强制性使用证书 使用AopCertClient

代码  先下载证书

图片.png

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

require_once '../AopCertClient.php';

require_once '../request/AlipayFundTransUniTransferRequest.php';

/**

 * 证书类型AopCertClient功能方法使用测试,特别注意支付宝根证书预计2037年会过期,请在适当时间下载更新支付更证书

 * 1、execute 证书模式调用示例

 * 2、sdkExecute 证书模式调用示例

 * 3、pageExecute 证书模式调用示例

 */

//1、execute 使用

$aop new AopCertClient ();

$appCertPath "应用证书路径(要确保证书文件可读),例如:/home/admin/cert/appCertPublicKey.crt";

$alipayCertPath "支付宝公钥证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt";

$rootCertPath "支付宝根证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayRootCert.crt";

$aop->gatewayUrl = '支付宝 - 网上支付 安全快速!';

$aop->appId = '你的appid';

$aop->rsaPrivateKey = '你的应用私钥';

$aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);//调用getPublicKey从支付宝公钥证书中提取公钥

$aop->apiVersion = '1.0';

$aop->signType = 'RSA2';

$aop->postCharset='utf-8';

$aop->format='json';

$aop->isCheckAlipayPublicCert = true;//是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内

$aop->appCertSN = $aop->getCertSN($appCertPath);//调用getCertSN获取证书序列号

$aop->alipayRootCertSN = $aop->getRootCertSN($rootCertPath);//调用getRootCertSN获取支付宝根证书序列号

$request new AlipayFundTransUniTransferRequest();

$arrData = [

    'out_biz_no' => 'Test'.time().rand(10000,99999), // 商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一。

    // 单笔无密转账到支付宝账户固定

    // TRANS_ACCOUNT_NO_PWD 产品取值范围[0.1,100000000]

    // STD_RED_PACKET [0.01,100000000]

    'trans_amount' => 0.1, // 订单总金额,单位为元,精确到小数点后两位,

    'product_code' => 'TRANS_ACCOUNT_NO_PWD',

    'biz_scene' => 'DIRECT_TRANSFER'// B2C现金红包、单笔无密转账到支付宝/银行卡

    'order_title' => '测试提现'// 转账业务的标题,用于在支付宝用户的账单里显示

    'payee_info' => [

        'identity' => 'xxxxx',// 参与方的唯一标识

        'identity_type' => 'ALIPAY_LOGON_ID'// 支付宝登录号,支持邮箱和手机号格式

        'name' => 'xxxxx'// 参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填。

    ],

    'remark' => '测试提现'

];

$request->setBizContent(json_encode($arrData,JSON_UNESCAPED_UNICODE));

$result $aop->execute($request);

$responseNode str_replace(".""_"$request->getApiMethodName()) . "_response";

$resultCode $result->$responseNode->code;

if(!empty($resultCode)&&$resultCode == 10000){

    echo "成功";

else {

    echo "失败";

}

print_r($result);

图片.png

路过的坑:

获取根证书的SN时遇到了坑

环境:PHP 5.5.9

函数获取不到证书的signatureTypeLN的下标,换成PHP7.3顺利通过
最终直接升级版本了,没测试下面的方案
PHP OpenSSL Extension 'openssl_x509_parse()'内存破坏漏洞
php获取证书序列号时openssl_x509_parse内存泄漏的替代的方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值