php tp3.2支付宝回调,浅谈TP3.2.3支付宝APP支付

今天来介绍一下支付宝的APP支付吧,首先要去蚂蚁金服注册个账号,这个不用多说了。然后再创建一个应用,这个也不用说了。不过有一点,须将应用上线后才可以签约APP支付,不然你会发现等了半年发现签约还没下来~~~

一系列的流程下来后,你会得到一个APPID

首先说一下环境配置问题吧

07d078f218498d099e8c4a257f4660ac.png

第一个配置支付宝网关是固定的:https://openapi.alipay.com/gateway.do

第二个配置和第三个配置原则上是可以一样的:可以填上你的支付完成回调地址

再说下接口加签方式,这个环节是必不可少的。

支付宝为我们提供了一个生成秘钥的工具,我们可以下载他来生成,然后复制到蚂蚁金服开发者平台上。

打开工具,我们选择非JAVA适用的 和密钥长度为2048的,这时会自动给我们生成一串商户应用私钥和商户应用公钥(记住他们的名字,哈哈)

59b5cb0b9486fa8869fa62bddfe9b263.png 

这个时候就把你刚刚生成的商户应用公钥(名字别搞错了)放到蚂蚁金服开发者平台上面

77f782a6e05748fc012e7022db90aec6.png 

2c297cb31046b6b21dddc2982a1a1e3f.png 

这个时候蚂蚁金服会帮你生成一个支付宝公钥,记住这个名字,配置要用到。

接下来就可以开始走我们的支付流程了,哦,忘记了API的下载地址了~

这个是服务端SDK下载地址,选择PHP就OK了,https://docs.open.alipay.com/54/103419/

下面就开始我们的代码~~~~~~~~~

首先说一下配置

return [

'ALI_CONFIG' => array(

'gatewayUrl' => 'https://openapi.alipay.com/gateway.do',//支付宝网关(固定)'

'appId' => '',//APPID即创建应用后生成

'seller_id' => '这个是可以在蚂蚁金服开发者中心的右上角查看账户信息中获得,在角色身份那一栏,PID就是',

//由开发者自己生成: 请填写开发者私钥

'rsaPrivateKey' => '这个是你使用工具自己生成的商户私钥',

//支付宝公钥,由支付宝生成: 请填写支付宝公钥,一行字符串

'alipayrsaPublicKey' => '记住这里是支付宝公钥不是应用公钥',

'notifyUrl' => '这里要跟你在蚂蚁金服配置的回调地址一样', // 支付成功通知地址

),

];

public function app_pay($order_id){

//导入支付宝类

Vendor('Alipay.aop.AopClient');

Vendor('Alipay.aop.request.AlipayTradeAppPayRequest');

$aop = new \AopClient();

$aliConfig = C('ALI_CONFIG');

//配置基本参数

//网关

$aop->gatewayUrl = $aliConfig['gatewayUrl'];

//appid

$aop->appId = $aliConfig['appId'];

//开发者私钥

$aop->rsaPrivateKey = $aliConfig['rsaPrivateKey'];

//支付宝公钥

$aop->alipayrsaPublicKey=$aliConfig['alipayrsaPublicKey'];

$aop->apiVersion = '1.0';固定参数

$aop->postCharset='utf-8';固定参数

$aop->format='json';固定参数

$aop->signType='RSA2';固定参数

//商户订单编号

$out_trade_no = $order_id;商家自己生成的订单id

//描述

$body = 'test';

//标题

$subject = 'test';

//查询订单价格,支付宝的价格和微信的有所不同,如果是1元的话就是1.00,10元的话就是10.00

$order_amount = number_format($money, 2);

$request = new \AlipayTradeAppPayRequest();

$bizContent = "{" .

" \"body\":\"$body.\"," .

" \"subject\":\"$subject\"," .

" \"out_trade_no\":\"$out_trade_no\"," .

" \"timeout_express\":\"30m\"," .

" \"total_amount\":$order_amount," .

" \"product_code\":\"QUICK_WAP_WAY\"" .

" }";

//异步回调地址

$request->setNotifyUrl($aliConfig['notifyUrl']);

发送数据内容到支付宝

$request->setBizContent($bizContent);

$response = $aop->sdkExecute($request);

if($response){

return $response;返回这一大串给前端就完成的支付宝APP支付的调用

}

}

接下来就说下回调(其实如下代码都是固定,只是修改订单状态的那一栏大家会有所不同,毕竟不同人有不同的习惯)

public function alinotify(){

//导入支付宝类

Vendor('Alipay.aop.AopClient');

$aop = new \AopClient;

$aop->alipayrsaPublicKey = C('ALI_CONFIG')['alipayrsaPublicKey'];

$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");

if($flag){

//商户订单号

$out_trade_no = $_POST['out_trade_no'];

//支付宝交易号

$trade_no = $_POST['trade_no'];

//交易状态

$trade_status = $_POST['trade_status'];

//订单的实际金额

$total_amount = $_POST['total_amount'];

//appid

$appid = $_POST['app_id'];

$seller_id = $_POST['seller_id'];

//验证app_id是否为商户本身

if($appid != C('ALI_CONFIG')['appId']){

exit('fail');

}

//判断交易通知状态是否为TRADE_SUCCESS或TRADE_FINISH

if($trade_status!='TRADE_FINISH' && $trade_status !='TRADE_SUCCESS'){

exit('fail');

}

//验证订单的准确性

if(!empty($out_trade_no)){

//在这里可以通过返回的商家订单号查询出该订单的信息

$res = xxx;

if(!$res){

exit('fail');

}

//判断total_amount是否确实为该订单的实际金额

if($total_amount != $res){

exit('fail');

}

//判断seller_id是否与商户的id相同

if($seller_id != C('ALI_CONFIG')['seller_id']){

exit('fail');

}

}

//全部验证成功后修改订单状态

doAliPay方法用于进行修改订单状态的逻辑,可以放手发挥了

$data = $this->doAliPay($out_trade_no,$trade_no);

if($data){

//处理业务逻辑

echo 'success';

} else {

echo 'fail';

}

} else {

echo 'fail';

}

}

就是这么简单的过程~送给各位学习TP的小伙伴

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值