## 第一步 下載demo
請自行注冊開發者賬號。
1. 進入支付寶開放平臺,文檔中心》APP支付》下載SDK&Demo,放到tp框架的Vendor中

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. 如果任何侵權行為請聯系管理員刪除