關鍵字:支付寶 當面付 條碼支付 掃碼支付 二維碼支付 訂單查詢 退款
作者:方倍工作室
本文介紹支付寶中當面付下屬的條碼支付、掃碼支付、訂單查詢、退款申請的內建開發過程。
本文分為以下五個部分:
條碼支付和掃碼支付介紹
申請應用
密鑰生成及配置
API及SDK內建
條碼支付、掃碼支付、訂單查詢、退款申請
注: 支付寶支付開發有一定的門檻,如果您願意為知識付費來節省您寶貴的時間,請直接見底部說明。
條碼支付是支付寶給到線下傳統行業的一種收款方式。商家使用掃碼槍等條碼識别裝置掃描使用者支付寶錢包上的條碼/二維碼,完成收款。使用者僅需出示付款碼,所有收款操作由商家端完成。其使用場景如下:
業務流程:
使用步驟:
使用者登陸支付寶錢包,點選首頁“付款”,進入付款碼界面;
收銀員在商家收銀系統操作生成訂單,使用者确認支付金額;
使用者出示錢包的“付款碼”,收銀員用掃碼裝置來掃描使用者手機上的條碼/二維碼後,商家收銀系統送出支付;
付款成功後商家收銀系統會拿到支付成功或者失敗的結果。
掃碼支付,指使用者打開支付寶錢包中的“掃一掃”功能,掃描商家展示在某收銀場景下的二維碼并進行支付的模式。該模式适用于線下實體店支付、面對面支付等場景。
其使用場景如下:
使用者登陸支付寶錢包,點選首頁“付款-掃碼付”,進入掃一掃界面;
收銀員在商家收銀系統操作生成支付寶訂單,使用者确認支付金額,并生成二維碼;
使用者使用錢包的“掃碼付”,掃收銀員提供的二維碼,确認支付;
使用者付款後商家收銀系統會拿到支付成功或者失敗的結果。
企業在申請企業支付寶之後,進行功能申請并簽約,然後在螞蟻金服開放平台中申請應用如下(詳細過程就略了)
然後在功能清單中,申請當面付這一功能,申請成功後如下。
這樣,我們就有了當面付的權限了。
在支付寶當面付的接口中,使用了非對稱加密算法,商戶自己的公鑰和私鑰需要自己使用OpenSSL手動生成。對這些概念比較陌生的話,請先自行先了解一下密碼學的相關知識。OpenSSL也可以從方倍工作室部落格中找到。
下載下傳支付寶官方提供的密鑰生成工具OpenSSL,然後執行以下指令就可以生成公鑰和私鑰。
其中
是用于生成RSA私鑰,執行後在程式目錄中生成一個檔案rsa_private_key.pem,其内容如下
指令
是用于生成RSA公鑰,執行後在程式目錄中生成一個檔案rsa_public_key.pem,其内容如下
生成的這個RSA公鑰,需要填寫到應用中去,填寫位址如下所示。私鑰不需要填到配置中,到時候配置到代碼中。
特别注意,密鑰要去掉注釋部分,且轉換成一行字元,否則回車換行也成為密鑰的一部分,将導緻無法正常加解密。
同時,可以點選 “檢視支付寶公鑰”,将支付寶的公鑰複制儲存下來,後面的程式中将需要用到。
公共參數
請求位址:
環境
HTTPS請求位址
正式環境
https://openapi.alipay.com/gateway.do
公共請求參數:
參數
類型
是否必填
最大長度
描述
app_id
String
是
32
支付寶配置設定給開發者的應用ID
method
128
接口名稱
format
否
40
僅支援JSON
charset
10
請求使用的編碼格式,如utf-8,gbk,gb2312等
sign_type
商戶生成簽名字元串所使用的簽名算法類型,目前支援RSA
sign
256
timestamp
19
發送請求的時間,格式"yyyy-MM-dd HH:mm:ss"
version
3
調用的接口版本,固定為:1.0
notify_url
支付寶伺服器主動通知商戶伺服器裡指定的頁面http/https路徑。
app_auth_token
biz_content
-
請求參數的集合,最大長度不限,除公共參數外所有請求參數都必須放在這個參數中傳遞,具體參照各産品快速接入文檔
請求參數
out_trade_no
必須
64
商戶訂單号,64個字元以内、可包含字母、數字、下劃線;需保證在商戶端不重複
scene
支付場景 條碼支付,取值:bar_code 聲波支付,取值:wave_code
auth_code
支付授權碼
seller_id
可選
28
如果該值為空,則預設為商戶簽約賬号對應的支付寶使用者ID
total_amount
Price
11
訂單總金額,機關為元,
discountable_amount
參與優惠計算的金額,機關為元
undiscountable_amount
不參與優惠計算的金額,機關為元
subject
訂單标題
body
訂單描述
goods_detail
GoodsDetail []
訂單包含的商品清單資訊,Json格式,其它說明詳見商品明細說明
operator_id
商戶操作員編号
store_id
商戶門店編号
terminal_id
商戶機具終端編号
alipay_store_id
支付寶的店鋪編号
extend_params
ExtendParams
業務擴充參數
timeout_express
6
該筆訂單允許的最晚付款時間,逾期将關閉交易。
royalty_info
RoyaltyInfo
描述分賬資訊,Json格式,其它說明詳見分賬說明
sub_merchant
SubMerchant
二級商戶資訊,目前隻對特殊銀行機構特定場景下使用此字段
公共響應參數
code
msg
sub_code
sub_msg
響應參數
trade_no
必填
支付寶交易号
商戶訂單号
buyer_logon_id
100
買家支付寶賬号
交易金額
receipt_amount
實收金額
buyer_pay_amount
選填
買家付款的金額
point_amount
使用積分寶付款的金額
invoice_amount
交易中可給使用者開具發票的金額
gmt_payment
Date
交易支付時間
fund_bill_list
TradeFundBill []
交易支付使用的資金管道
card_balance
支付寶卡餘額
store_name
512
發生支付交易的商戶門店名稱
buyer_user_id
買家在支付寶的使用者id
discount_goods_detail
本次交易支付所使用的單品券優惠的商品優惠資訊
系統中配置如下
其中支付寶公鑰就是在前面中複制儲存的,直接複制到程式中即可,而商戶私鑰是之前OpenSSL中生成的私鑰。APPID是該服務的id号。
而這個異步通知将會接收掃碼支付結果的通知。
條碼支付的參數配置如下
程式監測,最終送出的url如下
發送的json資料如下:
接收到的資料如下
掃碼支付的參數配置如下
生成的送出請求URL如下
傳回的資料如下:
其中的https://qr.alipay.com/bax00885xbhszseo9l7p404d 就是二維碼連結位址,使用接口将其成二維碼後如下所示。
當支付寶使用者掃碼的時候,接口通知将收到如下資料
當使用者輸入密碼付款成功之後,将收到如下資料
訂單查詢的參數配置如下
最終送出的url如下
訂單退款的參數配置如下
我們提供支付寶接口配置SDK Demo一條龍服務,費用300元(含PHP源碼提供、密鑰生成、配置調試,直到demo跑通為止),需要加QQ 1354386063
有掃碼支付定制開發服務,3000元起步,需要加QQ 1354386063