当前位置: 首页 > news >正文

php 支付宝官方 Alipay Easy SDK

使用 Alipay Easy SDK。

打造最好用的支付宝开放平台服务端SDK,Alipay Easy SDK让您享受极简编程体验,快速访问支付宝开放平台开放的各项核心能力

要求:

  • PHP版本 >= 7.0
  • 安装PHP cURL扩展
  • 安装PHP OpenSSL扩展
  • 安装PHP fileinfo扩展

使用Composer安装EasyAlipay:

composer require alipaysdk/easysdk
require 'vendor/autoload.php';
use Alipay\EasySDK\Kernel\Factory;
use Alipay\EasySDK\Kernel\Util\ResponseChecker;
use Alipay\EasySDK\Kernel\Config;//1. 设置参数(全局只需设置一次)
Factory::setOptions(getOptions());try {//2. 发起API调用(以支付能力下的统一收单交易创建接口为例)$result = Factory::payment()->common()->create("iPhone6 16G", "20200326235526001", "88.88", "2088002656718920");$responseChecker = new ResponseChecker();//3. 处理响应或异常if ($responseChecker->success($result)) {echo "调用成功". PHP_EOL;} else {echo "调用失败,原因:". $result->msg.",".$result->subMsg.PHP_EOL;}
} catch (Exception $e) {echo "调用失败,". $e->getMessage(). PHP_EOL;;
}function getOptions()
{$options = new Config();$options->protocol = 'https';$options->gatewayHost = 'openapi.alipay.com';$options->signType = 'RSA2';$options->appId = '<-- 请填写您的AppId,例如:2019022663440152 -->';// 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中$options->merchantPrivateKey = '<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->';$options->alipayCertPath = '<-- 请填写您的支付宝公钥证书文件路径,例如:/foo/alipayCertPublicKey_RSA2.crt -->';$options->alipayRootCertPath = '<-- 请填写您的支付宝根证书文件路径,例如:/foo/alipayRootCert.crt" -->';$options->merchantCertPath = '<-- 请填写您的应用公钥证书文件路径,例如:/foo/appCertPublicKey_2019051064521003.crt -->';//注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可// $options->alipayPublicKey = '<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->';//可设置异步通知接收服务地址(可选)$options->notifyUrl = "<-- 请填写您的支付类接口异步通知接收服务地址,例如:https://www.test.com/callback -->";return $options;
}

也可以单独配置文件

<?php$config = ['protocol' => 'https','gatewayHost' => 'openapi.alipay.com','signType' => 'RSA2','appId' => '<-- 请填写您的AppId,例如:2019022663440152 -->','merchantPrivateKey' => '<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->','alipayCertPath' => '<-- 请填写您的支付宝公钥证书文件路径,例如:/foo/alipayCertPublicKey_RSA2.crt -->','alipayRootCertPath' => '<-- 请填写您的支付宝根证书文件路径,例如:/foo/alipayRootCert.crt" -->','merchantCertPath' => '<-- 请填写您的应用公钥证书文件路径,例如:/foo/appCertPublicKey_2019051064521003.crt -->',// 'alipayPublicKey' => '<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->','notifyUrl' => "<-- 请填写您的支付类接口异步通知接收服务地址,例如:https://www.test.com/callback -->",
];return $config;

这个版本唯一的缺点就是,有很多没有代码示例,需要自己理解使用。

示例代码一:提供了现成的方法调用

alipay.system.oauth.token(换取授权访问令牌)

// 初始化
Factory::setOptions(getOptions());
// 获取access token
try {$result = Factory::base()->oauth()->getToken($authCode);$responseChecker = new ResponseChecker();if ($responseChecker->success($result)) {$resultArr = json_decode($result->httpBody, true);print_r($resultArr);} else {echo "调用失败,原因:". $result->msg.",".$result->subMsg.PHP_EOL;} catch (Exception $e) {echo "调用失败,". $e->getMessage(). PHP_EOL;}
}

示例代码二:没有提供了现成的方法调用,则需要使用Factory::util()->generic()->execute()方法去调用

alipay.user.info.share(支付宝会员授权信息查询接口)

$result = Factory::util()->generic()->execute('alipay.user.info.share',['auth_token' => ''],[]
);

第一个参数:OpenAPI的名称,例如:alipay.user.info.share

第二个参数:没有包装在`biz_content`下的请求参数数组。

第三个参数:包装在`biz_content`下的请求参数数组。

返回结果说明:

Alipay\EasySDK\Util\Generic\Models\AlipayOpenApiGenericResponse Object
([_name:protected] => Array([httpBody] => http_body[code] => code[msg] => msg[subCode] => sub_code[subMsg] => sub_msg)[_required:protected] => Array()[httpBody] => {"alipay_user_info_share_response":{"code":"10000","msg":"Success","age":"64","avatar":"https:\/\/tfs.alipayobjects.com\/images\/partner\/https:\/\/mdn.alipayobjects.com\/sandboxsys\/afts\/img\/AibKQZxFsLUAAAAAAAAAAAAADgSLAQBr\/original","cert_no":"561901196007233740","cert_type":"0","city":"资阳市","country_code":"CN","deliver_addresses":[{"address_code":"512000","default_deliver_address":"F","deliver_city":"资阳市","deliver_province":"四川省"}],"display_name":"pafmms5825@sandbox.com","email":"pafmms5825@sandbox.com","firm_agent_person_cert_type":"10","firm_legal_person_cert_type":"10","firm_type":"CO","inst_or_corp":"N","is_adult":"T","is_blocked":"F","is_certified":"T","is_student_certified":"F","license_no":"561901196007233740","member_grade":"unknown","mobile":"10900000001","nick_name":"沙箱账号","province":"四川省","user_name":"pafmms5825@sandbox.com","user_status":"T","user_type":"1","open_id":"01348t5fKqEymiasr00b6695ly2-8Ry6a0hfAKxT16WLVEc"},"sign":"g4UFAc6T1f/z5nfGUV9ahVH4TQetaCywFy+YXTDVijxMZzPKy/2QET6P2IsGZEe/YvaG6vDH9C03bVp/jmTDBoiA4T8nUxPBiX13zyMT4IXSxXAUMjpNIuJ4GkAFzSmwVdQh4+oyfM3lYkFOYBQHBu/Mf+rm6zxbDUm2PP/rivtFa2ZJ4Cqjp/mCg1hDbWfhryDCYztkyKQxJ8nU/q+u11cVt30ft+mEqGnof5vqMnSGkFry53TSdcoUoDy6SxLBM1o7h6rhBoRo2w6Ak7e1ss14qUx3zxx67biJhnu3SM3CfCEvPHV4b72M832lZlPrXOD9sr9fS2K3C7Yc2GHSqw=="}[code] => 10000[msg] => Success[subCode] =>[subMsg] =>
)

返回结果参数说明:

httpBody:网关返回的HTTP响应,是一个JSON格式的字符串,开发者可按需从中解析出响应参数。

code:网关返回码。

msg:网关返回码描述。

subCode:业务返回码,参见具体的API接口文档。

subMsg:业务返回码描述,参见具体的API接口文档。

相关文章:

  • es的range失效
  • 【Docker】在Ubuntu平台上的安装部署
  • 无线监控系统分类全解析:搭配视频融合平台EasyCVR开启高效监控
  • 23种设计模式-结构型模式之组合模式(Java版本)
  • 黑马商城-微服务笔记
  • 云原生时代的双轮驱动
  • Unity 将Excel表格中的数据导入到Mysql数据表中
  • 4.23刷题记录(栈与队列专题)
  • 将输入帧上下文打包到下一个帧的预测模型中用于视频生成
  • RocketMQ 核心架构速览
  • Elasticsearch复习笔记
  • 数据集 | 苹果目标检测数据集
  • 车载功能测试-车载域控/BCM控制器测试用例开发流程【用例导出方法+优先级划分原则】
  • 如何避免AI编造虚假文献
  • CSS-跟随图片变化的背景色
  • 从GPT-5到Claude 3:大模型竞赛的下一站是什么?
  • 【ROS2】机器人操作系统安装到Ubuntu简介
  • 基于STM32、HAL库的MCP42010T数字电位器驱动程序设计
  • WebGL简介
  • rust编程学习(三):8大容器类型
  • 养胃不是顿顿喝粥,这份“胃的使用说明书”请收好
  • 国家卫健委:坚决反对美国白宫网站翻炒新冠病毒“实验室泄漏”
  • 灰鹦鹉爆粗口三年未改?云南野生动物园:在持续引导
  • IMF将今年全球经济增长预期由3.3%下调至2.8%
  • 4月语言学联合书单|法庭审判话语的态度表达及人际功能研究
  • 广电总局加快布局超高清视听产业链,多项成果亮相