跳到主要内容

支付寶 WAP / H5 支付

適用場景

  • 使用 手機瀏覽器(非 App)進行付款
  • 適用於商戶的 Mobile Web、WebApp、或引導用戶於瀏覽器開啟付款連結
  • 支援錢包包括:
    • 支付寶海外(801107
    • 支付寶香港(801512
    • 支付寶服務窗 H5(800107
備註

社交 App(如 WeChat、Facebook Messenger)常常無法跳轉至其他錢包 App,建議引導用戶在手機瀏覽器中開啟付款連結。


HTTP 請求

  • API 端點/trade/v1/payment
  • 請求方法POST
  • 支付編碼對應表
編碼錢包名稱描述
801107支付寶海外Web 或 WAP 跨境支付
801512支付寶香港香港用戶 WAP 支付
800107支付寶服務窗 H5JSAPI + 授權碼機制支付

請求參數

請求參數格式請參考公共支付請求參數,以下僅列出與支付寶 WAP / H5 相關的部分參數:

參數名稱是否必填描述
txamt交易金額(單位為分),建議大於 200
txcurrcd貨幣代碼,例如 HKD
pay_type請參考上述 PayType 表
out_trade_no商戶自訂訂單編號,需唯一
txdtm交易時間,格式:YYYY-MM-DD hh:mm:ss
return_url成功付款後跳轉用戶的頁面
notify_url非同步通知商戶後端付款結果的接收端點
goods_name商品名稱(僅部分錢包強制)
mchid商戶號,如由 QFPay 分配則為必填
openid視情況僅適用於 800107,即服務窗 H5 授權碼
limit_pay僅適用於中國大陸支付場景

請求範例

#coding=utf8
import urllib.request, urllib.parse, urllib.error, urllib.request, urllib.error, urllib.parse, hashlib
import requests
import datetime
import string

# 輸入用戶端憑證
environment = 'https://test-openapi-hk.qfapi.com'
app_code = 'D5589D2A1F2E42A9A60C37*********'
client_key = '0E32A59A8B454940A2FF39**********'


# 建立資料請求所需的參數值
current_time = datetime.datetime.now().replace(microsecond=0)

print(current_time)

# 產生簽名
def make_req_sign(data, key):
keys = list(data.keys())
keys.sort()
p = []
for k in keys:
v = data[k]
p.append('%s=%s'%(k,v))
unsign_str = ('&'.join(p) + key).encode("utf-8")
s = hashlib.md5(unsign_str).hexdigest()
return s.upper()


# 請求內容主體
txamt = '10' # 以分為單位,建議金額大於 200 以避免風控攔截
txcurrcd = 'HKD'
pay_type = '801107'
auth_code='283854702356157409'
out_trade_no = '01234567890123'
txdtm = current_time
goods_name = 'test1'
mchid = 'ZaMVg*****'
key = client_key


#data ={'txamt': txamt, 'txcurrcd': txcurrcd, 'pay_type': pay_type, 'out_trade_no': out_trade_no, 'txdtm': txdtm, 'goods_name': goods_name, 'mchid': mchid}
data ={'txamt': txamt, 'txcurrcd': txcurrcd, 'pay_type': pay_type, 'out_trade_no': out_trade_no, 'txdtm': txdtm, 'mchid': mchid}

r = requests.post(environment+"/trade/v1/payment",data=data,headers={'X-QF-APPCODE':app_code,'X-QF-SIGN':make_req_sign(data, key)})

print(r.json())

響應參數

回應格式請參考 公共支付響應參數

響應範例

{
"sysdtm": "2020-04-13 11:32:03",
"paydtm": "2020-04-13 11:32:03",
"txcurrcd": "HKD",
"respmsg": "",
"pay_type": "801107",
"cardcd": "",
"udid": "qiantai2",
"txdtm": "2020-04-13 11:32:03",
"txamt": "300",
"resperr": "success",
"out_trade_no": "BUFB3PT9ZDUWEUAE4ATD21JKNHVEIIPV",
"syssn": "20200413000200020087171988",
"respcd": "0000",
"pay_url": "https://globalmapi.alipay.com/gateway.do?total_fee=3.0&secondary_merchant_name=###merchant_name###&out_trade_no=20200413000200020087171988&secondary_merchant_industry=7011&service=create_forex_trade_wap&_input_charset=UTF-8&sign=f16ef36efbb55058d1c1d36fef89bcf8&currency=THB&timeout_rule=30m&notify_url=https%3A%2F%2Fo2-hk.qfapi.com%2Fonline-test%2Ftrade%2Falipay%2Fv1%2Fonline_notify&secondary_merchant_id=2565075&sign_type=MD5&partner=2088631377368888&product_code=NEW_WAP_OVERSEAS_SELLER&return_url=&subject=###merchant_name###",
"chnlsn": ""
}

流程圖

Alipay H5 process-flow

非同步通知說明

支付完成後,QFPay 將透過非同步通知(notify_url)發送交易結果。

注意

請勿僅依賴前端跳轉結果,應以後端通知為準,並驗證簽名。

安全注意事項

延伸參考