摘要:第一次做支付寶的支付,踩了點小坑,還算順利。第一步當然是在支付寶開放平臺申請公鑰私鑰等,支付寶關官方文檔都有詳細介紹,這里就省略。就是那個支付寶二維碼的頁面。支付寶支付成功后會執行這兩個方法,系統會把你支付的信息用方式異步傳給你的方法。
這兩天在公司做一個小型WEB項目,需要有支付功能。第一次做支付寶的支付,踩了點小坑,還算順利。激動的我趕緊記下實現的流程。
第一步當然是在支付寶開放平臺申請公鑰私鑰APPID等,支付寶關官方文檔都有詳細介紹,這里就省略。
申請完了下面開始開發者的實現流程。首先是下載支付寶的官方DEMO,網址是https://docs.open.alipay.com/... 這里建議下載官方的DEMO而不是SDK,因為對新手來說DEMO里有封裝好的函數可以直接拿來改改就用,比較友好。以后技術提升了,再拿SDK玩玩。
因為我是個PHPer,當然選擇PHP版。下載好之后默認名字是alipay.trade.page.pay-PHP-UTF-8,建議改名字為alipay即可。
因為我是用TP5開發,所以放到項目根目錄下的外部資源包vendor目錄中。
放進去之后,找到alipay目錄下pagepay目錄下的pagepay.php文件,這便是阿里官方提供的支付方法樣例,
我學著網上一位學長的寫法改了一下放到TP5的方法中,見下圖:
走到這里如果順利,便會出現支付寶的二維碼頁面。我這里因為客戶重新申請權限所以沒法截圖了。就是那個支付寶二維碼的頁面。掃碼支付,便會跳轉到支付成功頁面,最后會跳到你自定義的同步跳轉地址。
價格由前臺表單傳值即可,這里強調有三個必填項:訂單號、訂單名稱、付款金額,這三個缺哪一個都會報錯。我剛開始腦袋發暈,把訂單名稱去掉了,結果報錯了...
這里寫完之后,便去config.php配置各項參數,config.php在alipay的根目錄下,配置這一項至關重要。如果錯了,商家可是收不到款的噢...
這里是傻瓜填法,應用ID、私鑰、異步地址、同步地址、公鑰。這6項必須填正確。因為我是用的TP5,所以通知地址那里我改成了TP5的寫法,模塊/控制器/方法.
支付寶網關那里不要更改,如果是沙箱環境,需要改成"https://openapi.alipaydev.com/gateway.do" 多了個"dev",因為我是真實環境,所以就不用更改。
這里再說一下異步和同步地址,新人肯定不知道是有什么用,大佬略過即可。支付寶支付成功后會執行這兩個方法,系統會把你支付的信息用POST方式異步傳給你的方法。因為是異步,所以頁面是沒有變化的,所謂"打槍的不要,悄悄地進村..."在異步這個方法里可以寫你自己的業務邏輯。比如接收值,存入數據庫之類。這里有個大坑,坑了我兩天,即在異步方法里是沒法用session取值的,我原本想用session取用戶登錄id存入數據庫中,后來問了師傅才知道,異步是服務器和服務器之間的交互,所以沒有cookieId,沒有cookieId當然沒有session值。對這里不懂的童鞋可以復習下session基礎知識,慚愧,我居然把這么基礎的東西忘了...由此可知,同步方法是可以取session的,因為是服務器和客戶端的交互。如果對此沒概念,可以在異步方法接收參數后轉成JSON格式,然后用file_put_contents()函數寫到記事本里看一下。
例:{
"gmt_create":"xxxxxxxx",//訂單創建時間 "charset":"UTF-8", "gmt_payment":"xxxxxxxx", //付款時間 "notify_time":"xxxxx", //異步回調時間 "subject":"XXXXX", //訂單名稱 "sign":"xxxxxxxxxxxxxxxxxxx", "buyer_id":"xxxxxxxx", "invoice_amount":"xxxxx", "version":"1.0", "notify_id":"xxxxxxxxx", "fund_bill_list":"[{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]", "notify_type":"trade_status_sync", "out_trade_no":"xxxxxxxx", //訂單號 "total_amount":"0.01", "trade_status":"TRADE_SUCCESS", //success代表支付成功,商家會收到錢 "trade_no":"xxxxxx", //支付寶流水號 "auth_app_id":"xxxxxxxx", "receipt_amount":"0.01", "point_amount":"0.00", "app_id":"xxxxxxxxx", "buyer_pay_amount":"0.01", "sign_type":"RSA2", "seller_id":"xxxxxxxxxxxxx"
}
重要的我都加了注釋了,其他不明白的參數可以去官方文檔查詢。
同步方法,顧名思義,就是頁面同步跳轉的地址,即能讓客戶看見的頁面。這里自定義即可,比如提示用戶支付成功之類文字。
下面是異步和同步方法的示例寫法:
/**
異步同步示例
*/
class Alipay extends Controller {
/** * 異步方法 * @return [void] */ public function notify(){ $post = input(); if($post["trade_status"] == "TRADE_SUCCESS"){ //操作數據庫 修改狀態 echo "SUCCESS";//返回給支付寶成功 ,不返回這個 字符 ,支付寶定時 回調這個方法 時間 5 10 30/m 1小時 成功為止 } //寫在文本里看一下參數 $data = json_encode($post); file_put_contents("alipaytext.txt",$data); } /** * 同步方法 * @return [type] [description] */ public function returnfy(){ //同步跳轉地址 return $this->fetch(); }
}
這里面重要的是需要在異步方法里判斷trade_status字段,如果等于"TRADE_SUCCESS"即支付成功,后面必須echo返回一個"SUCCESS",否則支付寶會認為你沒有付款成功,而在24小時內定時回調這個方法。實際業務邏輯根據你的需求來比如存入訂單表等等,當然不會這么簡單,最好加一些驗證。為了安全。下面是前臺代碼示例:
{include file="public/header"}
{include file="public/right"}
{include file="public/tail"}
最后補上一句:日志文件一定要開啟寫權限,否則無法自動寫入。即在alipay文件夾下右鍵log.txt屬性設置。出了問題可以在日志里查看。
走到這里,流程就基本介紹完了。歡迎各位大佬拍磚指導。做完支付,會感覺自己又上了一個臺階!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30191.html
摘要:因公司業務需要需要給客戶接入支付寶支付自己以前只做過網頁版支付寶支付。添加功能完后我的應用列表就會顯示添加的應用,即支付寶支付。最后別忘了在異步方法返回一個,否則支付寶會以為沒支付成功,小時內每個幾分鐘就調一次異步接口。 因公司業務需要,需要給客戶接入支付寶支付,自己以前只做過網頁版支付寶支付。折騰了3天,踩了很多坑,終于搞定了,現在記錄一下,分享給大家.一、首先必須通知客戶先申請支付...
摘要:因公司業務需要需要給客戶接入支付寶支付自己以前只做過網頁版支付寶支付。添加功能完后我的應用列表就會顯示添加的應用,即支付寶支付。最后別忘了在異步方法返回一個,否則支付寶會以為沒支付成功,小時內每個幾分鐘就調一次異步接口。 因公司業務需要,需要給客戶接入支付寶支付,自己以前只做過網頁版支付寶支付。折騰了3天,踩了很多坑,終于搞定了,現在記錄一下,分享給大家.一、首先必須通知客戶先申請支付...
摘要:支持的付款方式主打銀聯信用卡等,付款可以及時到賬。支持的付款方式主要是微信支付寶和京東支付。支持微信支付寶掃碼支付。 最近在開發自己的網站,想要接入一個第三方的支付平臺,但是處在創業初期,還沒能成立公司,所以沒有企業資質,想接入一款安全且性價比高的收款產品。以本人選擇困難癥再加點小糾結的個性,對現有的一些第三方支付接口做了一個對比,希望能給有相同需要的和正在尋求相關解決方案的朋友提供一...
摘要:支持的付款方式主打銀聯信用卡等,付款可以及時到賬。支持的付款方式主要是微信支付寶和京東支付。支持微信支付寶掃碼支付。 最近在開發自己的網站,想要接入一個第三方的支付平臺,但是處在創業初期,還沒能成立公司,所以沒有企業資質,想接入一款安全且性價比高的收款產品。以本人選擇困難癥再加點小糾結的個性,對現有的一些第三方支付接口做了一個對比,希望能給有相同需要的和正在尋求相關解決方案的朋友提供一...
摘要:網上的很多支付寶支付接入教程都頗為復雜,且需要配置和引入較多的文件,本人通過整理后給出一個單文件版的,希望可以給各位想接入支付寶支付的帶來些許幫助和借鑒意義。一個文件搞定支付寶系列一個文件搞定微信支付系列環境依賴以上,且需要開啟服務服務。 網上的很多PHP支付寶支付接入教程都頗為復雜,且需要配置和引入較多的文件,本人通過整理后給出一個單文件版的,希望可以給各位想接入支付寶支付的帶來些許...
閱讀 3129·2021-11-08 13:18
閱讀 2276·2019-08-30 15:55
閱讀 3601·2019-08-30 15:44
閱讀 3063·2019-08-30 13:07
閱讀 2774·2019-08-29 17:20
閱讀 1942·2019-08-29 13:03
閱讀 3403·2019-08-26 10:32
閱讀 3218·2019-08-26 10:15