2.支付請求連接
function alipayapi() { $alipay_config = $this->alipayConfig (); $payment_type = "1"; //支付類型//必填,不能修改 //http://shop/index.php?m=&c=index&a=index# $notify_url = "http://notify_url"; //服務器異步通知頁面路徑//需http://格式的完整路徑,不能加?id=123這類自定義參數 $return_url = "http://return_url"; //頁面跳轉同步通知頁面路徑//需http://格式的完整路徑,不能加?id=123這類自定義參數,不能寫成http://localhost/ $oid = $_GET ['oid']; $out_trade_no = "lsd" . time () . "_" . $_GET ['oid']; //商戶網站訂單系統中唯一訂單號,必填 $funcLog = M ( "appdb.app_elife_order" )->where ( "id=$oid" )->find (); $mname = $funcLog ['item_name']; $subject = "購買功能({$mname})付費"; //訂單名稱,必填 if (! $funcLog) exit (); $total_fee = round ( $funcLog ['sale_amount'], 2 ); //付款金額,必填 $body = $_GET ['desc'] ? $_GET ['desc'] : ''; //訂單描述(暫無) $show_url = $_GET ['url'] ? $_GET ['url'] : ''; //商品展示地址(暫無)//需以http://開頭的完整路徑,例如:http://www.商戶網址.com/myorder.html $anti_phishing_key = ""; //防釣魚時間戳//若要使用請調用類文件submit中的query_timestamp函數 $exter_invoke_ip = ""; //客戶端的IP地址//非局域網的外網IP地址,如:221.0.0.1 //構造要請求的參數數組,無需改動 //dump($funcLog);die(); $parameter = array ("service" => "create_direct_pay_by_user", "partner" => trim ( $alipay_config ['partner'] ), "seller_email" => trim ( $alipay_config ['seller_email'] ), "payment_type" => $payment_type, "notify_url" => $notify_url, "return_url" => $return_url, "out_trade_no" => $out_trade_no, "subject" => $subject, "total_fee" => $total_fee, "body" => $body, "show_url" => $show_url, "anti_phishing_key" => $anti_phishing_key, "exter_invoke_ip" => $exter_invoke_ip, "_input_charset" => trim ( strtolower ( $alipay_config ['input_charset'] ) ) ); //建立請求 $alipaySubmit = new AlipaySubmit ( $alipay_config ); $html_text = $alipaySubmit->buildRequestForm ( $parameter, "post", "" ); echo $html_text; }3.異步通知
function notify_url() { $alipay_config = $this->alipayConfig (); $alipayNotify = new AlipayNotify ( $alipay_config ); $verify_result = $alipayNotify->verifyNotify (); $data = array (); $data ['oid'] = substr ( strstr ( $_POST ['out_trade_no'], "_" ), 1 ); $data ['trade_no'] = $_POST ['trade_no']; $data ['gmt_time'] = $_POST ['gmt_create']; $data ['total_fee'] = $_POST ['total_fee']; $data ['seller_email'] = $_POST ['seller_email']; $data ['buyer_email'] = $_POST ['buyer_email']; $data ['trade_status'] = $_POST ['trade_status']; $data ['type'] = 1; M ( 'appdb.app_elife_paylog' )->add ( $data ); if ($verify_result) { //驗證成功 $out_trade_no = $_POST ['out_trade_no']; //商戶訂單號 $trade_no = $_POST ['trade_no']; //支付寶交易號 $out_trade_no = substr ( strstr ( $out_trade_no, "_" ), 1 ); $trade_status = $_POST ['trade_status']; //交易狀態 $total_fee = $_POST ['total_fee']; //交易金額 $buyer_email = $_POST ['buyer_email']; //買家支付寶賬號 if ($_POST ['trade_status'] == 'TRADE_FINISHED') { //處理訂單邏輯操作 } else if ($_POST ['trade_status'] == 'TRADE_SUCCESS') { //處理訂單邏輯操作 } echo "success"; //請不要修改或刪除 } else { //驗證失敗 echo "fail"; //調試用,寫文本函數記錄程序運行情況是否正常 } }4.同步操作頁面
function return_url() { $alipay_config = $this->alipayConfig (); $alipayNotify = new AlipayNotify ( $alipay_config ); $verify_result = $alipayNotify->verifyReturn (); $code = 1; $out_trade_no = $_GET ['out_trade_no']; //商戶訂單號 $out_trade_no = substr ( strstr ( $out_trade_no, "_" ), 1 ); $trade_no = $_GET ['trade_no']; //支付寶交易號 $data = array (); $data ['oid'] = substr ( strstr ( $_GET ['out_trade_no'], "_" ), 1 ); $data ['trade_no'] = $_GET ['trade_no']; $data ['gmt_time'] = $_GET ['gmt_create']; $data ['total_fee'] = $_GET ['total_fee']; $data ['seller_email'] = $_GET ['seller_email']; $data ['buyer_email'] = $_GET ['buyer_email']; $data ['trade_status'] = $_GET ['trade_status']; $data ['type'] = 1; M ( 'appdb.app_elife_paylog' )->add ( $data ); if ($verify_result) { //驗證成功 $trade_status = $_GET ['trade_status']; //交易狀態 $total_fee = $_GET ['total_fee']; //交易金額 $buyer_email = $_GET ['buyer_email']; //買家支付寶賬號 logResult ( $out_trade_no . " 交易成功_2 " . $trade_no ); if ($_GET ['trade_status'] == 'TRADE_FINISHED' || $_GET ['trade_status'] == 'TRADE_SUCCESS') { $this->changeFuncOrderStatus ( $out_trade_no, 2, $trade_no, $total_fee ); } else { $code = 2; echo "trade_status=" . $_GET ['trade_status']; } } else { $code = 2; logResult ( $out_trade_no . " 交易失敗_2 " . $trade_no ); } $this->assign ( "code", $code ); $this->display (); }
新聞熱點
疑難解答