終於把3.0版本作好了。從今天開始好好寫文檔,讓你們作支付作的開心點。php
項目GitHub地址:https://github.com/helei112g/...git
從2016年6月payment作出來,到這一版本(3.0),堅持了快一年啦。感謝這期間給我支持(打賞與協做)的人。github
Payment
主要針對支付寶支付、微信支付的接口進行了聚合。開發者無需重複集成繁瑣的支付接口,使用 Payment
就能應對全部支付場景,快速接入支付功能。小程序
Payment
針對不一樣支付服務商的接口,提供了統一的調用方式,而且內部將簽名、驗籤進行了集成,使用者只須要喂數據而後拿到結果進行本身的業務便可。徹底屏蔽支付寶與微信內部繁雜的細節。只要按照個人文檔操做,10分鐘可完成支付流程。數組
當前 Payment
基本接入完支付寶與微信的資金相關接口。到當前爲止,Payment SDK
主要支持功能以下:安全
支持的支付寶相關接口清單:服務器
即時到帳功能(主要用於pc上支付)微信
手機網站支付(WAP支付)app
APP支付(移動支付)異步
當面付(掃碼支付與條碼支付)
交易查詢(支付訂單查詢接口)
退款接口(完成支付的訂單,可經過該接口完成退款)
退款查詢接口(退款接口須要經過該接口進行查詢狀態)
單筆轉帳到支付寶帳戶接口(只能轉到用戶支付寶賬號)
轉帳訂單查詢接口(查詢轉帳訂單狀態)
ps: 支付寶接口從 payment 3.0 開始,僅支持支付寶新版本接口。
支持的微信支付相關接口清單:
手機網站支付(H5支付,特殊商家可用)
APP支付(移動支付)
公衆號支付
刷卡支付(相似支付寶的條碼支付)
小程序支付
交易查詢(支付訂單查詢)
申請退款接口
查詢退款接口
企業付款給我的接口
查詢企業付款接口
微信最糟糕的就是,不一樣支付接口,須要申請不一樣的商戶號。這裏簡單總結一下:
APP支付 必須到 微信開放平臺申請一個應用,而後去申請開通支付功能,申請的商戶賬號沒法用於 公衆號支付與小程序支付。
公衆號支付 必須首先有一個認證的服務號,而後到公衆號後臺進行申請開通支付功能。又會得到一個商戶號
小程序支付 微信分配的小程序ID,因此恭喜你,你又有了一個商戶號
至於其餘支付,目前檢測好像可用共享。也就只剩下一個刷卡支付了。
本文主要講解支付寶的配置文件,配置清單以下:
return [ 'use_sandbox' => true, 'partner' => '2088102169252684', 'app_id' => '2016073100130857', 'sign_type' => 'RSA2', 'ali_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAU3GYXkAaumdWQt7IDAQAB', 'rsa_private_key' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'rsa_private_key.pem', 'limit_pay' => [ //'balance', //'moneyFund', // ... ... ], 'notify_url' => 'https://helei112g.github.io/', 'return_url' => 'https://helei112g.github.io/', 'return_raw' => false, ];
在支付中最麻煩的就是配置密鑰。這裏逐一爲你們說明每個配置的含義、以及如何進行設置。
其中 是否必須 列表中若是標記爲 是
,則該項必須設置,不然sdk將沒法獲得結果。
參數 | 類型 | 是否必須 | 說明 |
---|---|---|---|
use_sandbox | boolean | 否 | 是否開啓沙箱模式 |
partner | string | 是 | 商戶UID,以2088開頭 |
app_id | string | 是 | 支付寶分配給開發者的應用ID |
sign_type | string | 是 | 簽名方式 |
ali_public_key | string | 是 | 支付寶公鑰 |
rsa_private_key | string | 是 | 用戶應用私鑰 |
limit_pay | string | 否 | 限制的支付方式 |
notify_url | string | 是 | 支付寶異步通知的服務器地址 |
return_url | string | 否 | 支付報支付成功返回地址 |
return_raw | boolean | 否 | 是否返回支付寶原始數據 |
接下來對每個參數詳細說明,不一樣的設置帶來的不一樣效果。
use_sandbox
支付寶新版本提供了沙箱模式。若是該選項設置爲 true
則使用支付寶的沙箱功能。
下面簡單介紹沙箱的使用方式。
首先登錄 螞蟻金服開放平臺 按照下圖找到本身的沙箱應用。
你們注意截圖,重要的配置信息均來自這裏。
partner
對應圖中的 商戶UID,若是是正式應用,可用在【個人應用】=》【應用】中找到對應的信息。
這部分信息較敏感,就不截圖了。
app_id
就是對應的建立的應用的id。圖中有很醒目的字標記。
sign_type
請求支付時,數據加密的方式,目前支持RSA2和RSA,推薦使用RSA2。你徹底不用管簽名的實現,只須要這裏作一下配置就好。
接下來,密鑰的配置是重點,70% 的支付沒法成功的緣由,均是密鑰設置問題。
關於密鑰如何生成與配置,請看
ali_public_key
注意看這張圖的紅線部分,只要上傳本身應用的公鑰後,可用點這裏,查看支付寶公鑰,可獲取到支付寶的公鑰。
這裏必定要記得是 支付寶的公鑰,不是你本身本地生成的,而是在開發平臺中上傳本身的公鑰後,拿到的支付寶公鑰。
接下來就是這個配置該如何填寫了。這裏支持文件的方式,你能夠將支付寶公鑰複製到一個單獨的文件,而後這個字段填寫對應文件的路徑。例如:
'ali_public_key' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'alipay_public_key_rsa.pem'
你也可用直接將支付寶公鑰的值,填入這裏,例如:
'ali_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOO1BU3GYXkAaumdWQt7f+khoFoSw+x8yqQIDAQAB',
這裏爲了文章排版美觀,有刪減部分支付寶公鑰內容
不管那種方式,強烈建議在填入時,去掉:
-----BEGIN PUBLIC KEY-----
以及 -----END PUBLIC KEY----- 只保留中間部分的內容。
rsa_private_key
商戶私鑰的設置,按照上面發的教程)進行操做,而後把獲取到的值,複製出來。跟支付寶公鑰同樣,也能夠單獨放在一個文件裏,而後引用他的路徑,或者直接將它的值,設置在這個字段上。
請記得只保留密鑰內容部分。
這裏請必定分清楚 私鑰,是商戶本身生成的。 公鑰,是支付寶開發平臺看到的
limit_pay
在讓用戶使用支付寶支付過程當中,可能想禁止用戶使用某些渠道,好比:不許使用 信用卡支付 不許使用 花唄支付。均可以在這裏進行配置。詳細的可取值,請看圖片
notify_url
異步通知。當支付寶支付成功後,你想要在服務端收到支付寶支付成功的通知,就必須設置該選項。應該是:http/https 開頭的url。
這裏強烈建議以支付寶服務器的通知爲依據來判斷是否支付成功。關於異步通知的處理,在後面的文章將有專題講解。
return_url
當前主要是即時到帳、手機網站支付兩個接口會用到,在支付成功後,跳轉到哪個連接。也必須是以 HTTP/HTTPS 開頭的url。能夠理解爲同步通知,但請不要以它的結果爲準。爲了安全仍是應該以異步爲準。
return_raw
以前的版本都沒有該參數,是3.0新加入的,它的主要目的是讓調用者控制本身拿到什麼樣的數據。若是設置爲true。SDK 則只會向支付寶發出請求,收到數據後進行驗籤,經過後,會以數組的形式將全部支付寶返回的數據返回給客戶端。
若是設置爲false ,則會拋棄支付寶的某些字段。而且會對某些字段名稱進行從新映射,這種方式帶來的好處是,可用確保支付寶、微信返回的數據是基本一致的,可是可能致使調用者損失部分信息。這裏你們根據實際狀況進行衡量。
至此,支付寶的配置所有講解完畢。 去看看如何完成即時到帳吧
若是你有不清楚的或者願意交流的地方,請聯繫我:
郵箱:dayugog@gmail.com
若是你以爲這個項目有幫助到你,請打賞我,讓我有動力持續下去[左邊微信,右邊支付寶]():
ps: 通常性的問題請你們能夠先查資料,若是實在沒法解決找我吧(難免費服務)。