Payment:支付寶支付配置文件設置教程

項目GitHub地址:https://github.com/helei112g/payment

從2016年6月payment做出來,到這一版本(3.0),堅持了快一年啦。感謝這期間給我支持(打賞與協作)的人。

Payment 主要針對支付寶支付、微信支付的接口進行了聚合。開發者無需重複集成繁瑣的支付接口,使用 Payment 就能應對所有支付場景,快速接入支付功能。

Payment 針對不同支付服務商的接口,提供了統一的調用方式,並且內部將簽名、驗籤進行了集成,使用者只需要喂數據然後拿到結果進行自己的業務即可。完全屏蔽支付寶與微信內部繁雜的細節。只要按照我的文檔操作,10分鐘可完成支付流程。

當前 Payment 基本接入完支付寶與微信的資金相關接口。到當前爲止,Payment SDK 主要支持功能如下:

支持的支付寶相關接口清單:
- 即時到賬功能(主要用於pc上支付)
- 手機網站支付(WAP支付)
- 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 則使用支付寶的沙箱功能。
下面簡單介紹沙箱的使用方式。

首先登陸 螞蟻金服開放平臺 按照下圖找到自己的沙箱應用。

image

image

大家注意截圖,重要的配置信息均來自這裏。

partner 對應圖中的 商戶UID,如果是正式應用,可用在【我的應用】=》【應用】中找到對應的信息。
這部分信息較敏感,就不截圖了。

app_id 就是對應的創建的應用的id。圖中有很醒目的字標記。

sign_type 請求支付時,數據加密的方式,目前支持RSA2和RSA,推薦使用RSA2。你完全不用管簽名的實現,只需要這裏做一下配置就好。

接下來,密鑰的配置是重點,70% 的支付無法成功的原因,均是密鑰設置問題。
關於密鑰如何生成與配置,請看

支付寶官方密鑰生成與配置教程

ali_public_key 注意看這張圖的紅線部分,只要上傳自己應用的公鑰後,可用點這裏,查看支付寶公鑰,可獲取到支付寶的公鑰。

image

這裏一定要記得是 支付寶的公鑰,不是你自己本地生成的,而是在開發平臺中上傳自己的公鑰後,拿到的支付寶公鑰。

接下來就是這個配置該如何填寫了。這裏支持文件的方式,你可以將支付寶公鑰複製到一個單獨的文件,然後這個字段填寫對應文件的路徑。例如:

'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 在讓用戶使用支付寶支付過程中,可能想禁止用戶使用某些渠道,比如:不準使用 信用卡支付 不準使用 花唄支付。都可以在這裏進行配置。詳細的可取值,請看圖片

image

官方鏈接

notify_url 異步通知。當支付寶支付成功後,你想要在服務端收到支付寶支付成功的通知,就必須設置該選項。應該是:http/https 開頭的url。

這裏強烈建議以支付寶服務器的通知爲依據來判斷是否支付成功。關於異步通知的處理,在後面的文章將有專題講解。

return_url 當前主要是即時到賬、手機網站支付兩個接口會用到,在支付成功後,跳轉到哪一個鏈接。也必須是以 HTTP/HTTPS 開頭的url。可以理解爲同步通知,但請不要以它的結果爲準。爲了安全還是應該以異步爲準。

return_raw 之前的版本都沒有該參數,是3.0新加入的,它的主要目的是讓調用者控制自己拿到什麼樣的數據。如果設置爲true。SDK 則只會向支付寶發出請求,收到數據後進行驗籤,通過後,會以數組的形式將所有支付寶返回的數據返回給客戶端。

如果設置爲false ,則會拋棄支付寶的某些字段。並且會對某些字段名稱進行重新映射,這種方式帶來的好處是,可用確保支付寶、微信返回的數據是基本一致的,但是可能導致調用者損失部分信息。這裏大家根據實際情況進行衡量。

至此,支付寶的配置全部講解完畢。 去看看如何完成即時到賬

如果你有不清楚的或者願意交流的地方,請聯繫我:

郵箱[email protected]

如果你覺得這個項目有幫助到你,請打賞我,讓我有動力持續下去左邊微信,右邊支付寶

image

ps: 一般性的問題請大家可以先查資料,如果實在無法解決找我吧(不免費服務)。

發佈了113 篇原創文章 · 獲贊 153 · 訪問量 62萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章