## 第一步 下载demo
请自行注册开发者账号。
1. 进入支付宝开放平台,文档中心》APP支付》下载SDK&Demo,放到tp框架的Vendor中
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200104155429202.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzcxNDMwMQ==,size_16,color_FFFFFF,t_70)
4.配置文件
在tp框架中配置接入支付宝需要的配置的参数
~~~php
//支付宝 支付配置
'ALI_CONFIG' => array(
'gatewayUrl' => 'https://openapi.alipay.com/gateway.do',//支付宝网关(固定)'
'appId' => 'appIDappIDappIDappIDappIDappIDappID',//APPID即创建应用后生成
//由开发者自己生成: 请填写开发者私钥去头去尾去回车,一行字符串
'rsaPrivateKey' => 'AfewqFEWfefedwfewfewfewfewfewfewfwefewfewfeefwef',
//支付宝公钥,由支付宝生成: 请填写支付宝公钥,一行字符串
'alipayrsaPublicKey' => 'ewqdwqfwqdfwqfwqfwqfqwfwqfwqfwqfwqfwqferagrGERW',
)
~~~
5. 控制器代码
调用alipay之前可根据自己的业务需求传入相应的参数,如我添加了一个订单,我把订单号传入do\_alipay的方法中去进行支付,在回调中修改订单状态。进而完成支付。
~~~php
//每日刮分支付宝报名
public function do_alipay($id){
if(IS_POST){
Vendor('Alipay.aop.AopClient'); //引入alipay文件
Vendor('Alipay.aop.request.AlipayTradeAppPayRequest');
$huiyuan = M("huiyuan")->where("id = $id")->find();
$out_trade_no = $huiyuan['order_sn'];//订单号
$body = '年费会员';//商品名
$subject = '教育';//商品介绍
$order_amount = $huiyuan['money'];//总价
$aliConfig = C('ALI_CONFIG'); //加载配置项
$aop = new \AopClient();
$aop->gatewayUrl = $aliConfig['gatewayUrl']; //赋值网关
$aop->appId = $aliConfig['appId']; //APPid
$aop->rsaPrivateKey = $aliConfig['rsaPrivateKey']; //私钥
$aop->alipayrsaPublicKey=$aliConfig['alipayrsaPublicKey']; //支付宝公钥
$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('http://xxx.xxx.cn/Api/Notify/huiyuan_ali');//这里是设置回调方法
$request->setReturnUrl($aliConfig['returnUrl']);
// pageExecute 是PC和手机网站 有页面输出
// Execute API调用 没页面输出
// SdkExecute APP服务端的
// $result = $aop->pageExecute($request);//pc端
$result = $aop->sdkExecute($request);
return $result;
}
}
~~~
7. 回调方法
回调方法 我在里获取了订单号 对订单号修改了状态
~~~php
public function huiyuan_ali(){
$order_sn = I("post.out_trade_no");
// var_dump($order_sn);die;
file_put_contents('./huiyuan.txt',$order_sn);
$huiyuan = M('huiyuan')->where("order_sn = $order_sn")->find();
if($huiyuan['status']=='1'){
// var_dump($e_time);die;
$arr = array(
'k_time' =>time(),
'e_time'=> strtotime("+1 year"),
'status' =>2, );
$res = M("huiyuan")->where("id = '$huiyuan[id]'")->save($arr);
$k_time = date('Y-m-d H:i:s');
$e_time = date('Y-m-d H:i:s',strtotime("+1 year"));
$row = array('user_id' => $huiyuan['user_id'],
'name'=>'会员购买',
// 'cont'=>'恭喜,'.$k_time.'会员购买成功,'.$e_time.'到期',
'cont'=>'恭喜你成功充值年费vip会员',
'add_time'=>time());
$res = M("new_log")->add($row);
}
echo "success";
}
~~~
9. 回调地址 可以为域名/模块名/控制器/方法
10. 码字不易,求点赞
11. 如果任何侵权行为请联系管理员删除