下載官方demo 放入extend下
<?php
namespace app\index\controller;
use think\Loader;
Loader::import('alipay.wappay.service.AlipayTradeService',EXTEND_PATH,'.php');
Loader::import('alipay.wappay.buildermodel.AlipayTradeWapPayContentBuilder',EXTEND_PATH,'.php');
Loader::import('alipay.config.php');
use think\Controller;
class Alipay extends Controller
{
public function index(){
return $this->fetch();
}
public function pay(){
$config = array (
//應用ID,您的APPID。
'app_id' => "your app_id",
//商戶私鑰,您的原始格式RSA私鑰
'merchant_private_key' => "121321313",
//異步通知地址
'notify_url' => "324234",
//同步跳轉
'return_url' => "23423423",
//編碼格式
'charset' => "UTF-8",
//簽名方式
'sign_type'=>"RSA2",
//支付寶網關
'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
//支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。
'alipay_public_key' => "23423423423",
);
$price = $this->request->post('price');
//商戶訂單號,商戶網站訂單系統中唯一訂單號,必填
$out_trade_no = rand(100000,99999999);
//訂單名稱,必填
$subject = '測試';
//付款金額,必填
$total_amount = $price;
//商品描述,可空
$body = '商品描述測試';
//超時時間
$timeout_express="1m";
//傳入參數
$payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setOutTradeNo($out_trade_no);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setTimeExpress($timeout_express);
$payResponse = new \AlipayTradeService($config);
$result = $payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
return ;
}
}
以上填入對應的參數 即可發起支付
接下來就是支付完成後回調的部分
/**
* 用於支付寶回調
*/
public function notify_url(){
$arr=$_POST;
$alipaySevice = new \AlipayTradeService($config);//這裏引入的配置 如果懶得引入 就自己寫一下demo中的配置
$alipaySevice->writeLog(var_export($_POST,true));
$result = $alipaySevice->check($arr);
if($result) {//驗證成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//請在這裏加上商戶的業務邏輯程序代
//——請根據您的業務邏輯來編寫程序(以下代碼僅作參考)——
//獲取支付寶的通知返回參數,可參考技術文檔中服務器異步通知參數列表
//商戶訂單號
$out_trade_no = $_POST['out_trade_no'];
//支付寶交易號
$trade_no = $_POST['trade_no'];
//交易狀態
$trade_status = $_POST['trade_status'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序
//請務必判斷請求時的total_amount與通知時獲取的total_fee爲一致的
//如果有做過處理,不執行商戶的業務程序
//注意:
//退款日期超過可退款期限後(如三個月可退款),支付寶系統發送該交易狀態通知
} elseif ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序
//請務必判斷請求時的total_amount與通知時獲取的total_fee爲一致的
//如果有做過處理,不執行商戶的業務程序
//注意:
//付款完成後,支付寶系統發送該交易狀態通知
}
//——請根據您的業務邏輯來編寫程序(以上代碼僅作參考)——
echo "success"; //請不要修改或刪除
}else {
//驗證失敗
echo "fail"; //請不要修改或刪除
}
}
就是這麼簡單,你學會了嗎