了解支付宝支付之前先要了解电子商务,电子商务就是,把在先下购物,放到互联网上,人们可以通过网页或者手机直接的看到商品。
电子商务的模式分为很多,
- B2B(企业对企业,例如阿里巴巴)
- B2C (企业对个人例如京东)
- C2C(个人对个人淘宝等)
- O2O(线上与线下例如,滴滴打车,顺风滴滴等)
而电子支付也是应电子商务的存在。用来解决在上线购买的支付问题。
支付宝流程
1.注册支付宝账号(ps|个人或企业)
2.接入电脑支付产品(ps企业支付宝账号需要进行签约)
3.创建应用(ps在开放平台)
4.配置秘钥
5.开发调试
看不懂的点击进入B站视频教程
tp框架接入支付宝支付
你好!有很多人在接入支付宝支付时无从下下手,那么在本篇文件,带你详细的了解并实现支付宝支付,废话不多说,咱们开始
第一步 下载demo
请自行注册开发者账号。
- 进入支付宝开放平台,文档中心》APP支付》下载SDK&Demo,放到tp框架的Vendor中
4.配置文件
在tp框架中配置接入支付宝需要的配置的参数
//支付宝 支付配置
'ALI_CONFIG' => array(
'gatewayUrl' => 'https://openapi.alipay.com/gateway.do',//支付宝网关(固定)'
'appId' => 'appIDappIDappIDappIDappIDappIDappID',//APPID即创建应用后生成
//由开发者自己生成: 请填写开发者私钥去头去尾去回车,一行字符串
'rsaPrivateKey' => 'AfewqFEWfefedwfewfewfewfewfewfewfwefewfewfeefwef',
//支付宝公钥,由支付宝生成: 请填写支付宝公钥,一行字符串
'alipayrsaPublicKey' => 'ewqdwqfwqdfwqfwqfwqfqwfwqfwqfwqfwqfwqferagrGERW',
)
- 控制器代码
调用alipay之前可根据自己的业务需求传入相应的参数,如我添加了一个订单,我把订单号传入do_alipay的方法中去进行支付,在回调中修改订单状态。进而完成支付。
公钥证书支付
//支付宝支付
/*
* @param $order_no 订单号
* @param $title 标题
* @param $price 价格
* @param $notify 回调地址
*/
public function alipay($order_no,$title,$price,$notify)
{
//加载支付文件
require_once root_path() .'/vendor/Alipay/aop/AopCertClient.php';
require_once root_path() .'/vendor/Alipay/aop/AopCertification.php';
require_once root_path() .'/vendor/Alipay/aop/request/AlipayTradeQueryRequest.php';
require_once root_path() .'/vendor/Alipay/aop/request/AlipayTradeWapPayRequest.php';
require_once root_path() .'/vendor/Alipay/aop/request/AlipayTradeAppPayRequest.php';
$appCertPath = "alipay/appCertPublicKey.crt";//应用证书路径(要确保证书文件可读),例如:/home/admin/cert/appCertPublicKey.crt
$alipayCertPath = "alipay/alipayCertPublicKey_RSA2.crt";//支付宝公钥证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt
$rootCertPath = "alipay/alipayRootCert.crt";//支付宝根证书路径(要确
$out_trade_no = $order_no;//订单号
$body = $title;//商品名
$subject = $title;//商品介绍
$order_amount = $price;//总价
$aliConfig = Config('app.ALI_CONFIG'); //加载配置项
$aop = new \AopCertClient();
$aop->gatewayUrl = $aliConfig['gatewayUrl']; //赋值网关
$aop->appId = $aliConfig['appId']; //APPid
$aop->rsaPrivateKey = $aliConfig['rsaPrivateKey']; //私钥
// $aop->alipayrsaPublicKey= $aliConfig['alipayrsaPublicKey']; //支付宝公钥
//调用getPublicKey从支付宝公钥证书中提取公钥
$aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);
//是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内
$aop->isCheckAlipayPublicCert = true;
//调用getCertSN获取证书序列号
$aop->appCertSN = $aop->getCertSN($appCertPath);
//调用getRootCertSN获取支付宝根证书序列号
$aop->alipayRootCertSN = '687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6'; //固定值2028年之前不变
$aop->apiVersion = '1.0';
$aop->postCharset='UTF-8';
$aop->format='json';
$aop->signType='RSA2';
$request = new \AlipayTradeAppPayRequest();
$bizContent = "{"."\"body\":\"$body\","."\"subject\":\"$subject\","."\"out_trade_no\":\"$out_trade_no\","."\"timeout_express\":\"90m\","."\"total_amount\":\"$order_amount\","."\"product_code\":\"QUICK_MSECURITY_PAY\""."}";
$request->setBizContent($bizContent);
$request->setNotifyUrl($notify);//这里是设置回调方法
//$request->setReturnUrl($aliConfig['returnUrl']);
// pageExecute 是PC和手机网站 有页面输出
// Execute API调用 没页面输出
// SdkExecute APP服务端的
// $result = $aop->pageExecute($request);//pc端
$result = $aop->sdkExecute($request);
return $result;
}
- 回调方法 回调验签公钥证书验签
回调方法 我在里获取了订单号 对订单号修改了状态
//支付异步回调地址
public function notify_alipay()
{
$param = $this->request->param();
//支付宝证书验签
require_once root_path() .'/vendor/Alipay/aop/AopCertClient.php';
$aop = new \AopCertClient();
//证书路径
$alipayCertPath = "alipay/alipayCertPublicKey_RSA2.crt";
//支付宝公钥赋值
$aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);
//编码格式
$aop->postCharset="UTF-8";
//签名方式
$sign_type="RSA2";
//验签代码
$flag = $aop->rsaCheckV1($param, null, $sign_type);
if ($flag == true){
echo 'success';
}else{
echo 'error';
}
}
- 回调地址 可以为域名/模块名/控制器/方法
- 码字不易,求点赞
- 如果任何侵权行为请联系管理员删除