目录

1. 接口功能

华为支付服务器支付成功后调用此接口将支付结果通知给开发者服务器。

2. 调用场景

如果开发者在开发者联盟申请支付服务时提前配置回调地址或直接在支付接口中传入回调地址,用户使用华为支付付款成功后,华为支付服务器将调用此回调地址将支付结果发送给开发者服务器。如果支付接口中的回调地址和开发者联盟基于应用配置的回调地址同时存在,会优先使用通过开发者联盟在应用上设置的回调地址。
若开发者服务器返回结果为非成功响应(返回的result值为0之外的值),将对同一笔订单的通知进行周期性重发。

重发机制:共48小时,前3次每20秒尝试一次,4-20次每200秒尝试一次,之后每3小时尝试一次。

说明:
为保证可靠性,系统具备补偿机制,所以可能出现重发的通知比预期的多。

3. 接口约束

不允许开发者服务器设置IP允许清单用于限制华为侧的出口IP地址。IP允许清单本身并不能提高安全性且会给业务发展带来约束,在消息层面已有更安全的RSA签名机制条件下,没有存在价值。开发者不遵守该约定而导致的后果将由开发者自行承担。

4. 接口原型

承载协议
HTTPS POST
接口方向
华为支付服务器->开发者服务器
接口URL

URL由开发者在申请支付服务时配置或在支付接口中传入。

说明:
华为支付服务器会优先使用申请支付服务时配置的回调地址。
数据格式
请求消息:Content-Type:   application/x-www-form-urlencoded
响应消息:Content-Type:   application/json
说明:
本接口采用的是application/x-www-form-urlencoded格式,会在http层进行编码,接收端代码框架需要支持自动解码。

5. 请求参数

说明:
华为支付服务器对extReserved、sysReserved和sign字段进行了urlencode,开发者服务器在接收http解码后的消息后需要对这三个字段进行urldecode来获取原始信息。如果代码框架中的get方法会隐含进行urldecode,请勿再重复urldecode。
参数名称必选(M)/可选(O)类型是否参与验签参数说明
result
M
string(3)
是
支付结果。
● 0:支付成功。
● 1:退款成功(暂未启用)。
userName
M
string
是
商户ID,即华为开发者联盟给开发者分配的“支付ID”。
productName
M
string
是
商品名称。
payType
M
int
是
支付类型。取值范围如下:
● 0:华为钱包
● 3:信用卡
● 4:支付宝
● 6:短代
● 13:PayPal
● 16:借记卡
● 17:微信
● 19:礼品卡
● 20:现金余额
● 21:华为充值卡
● 22:CyberSource
● 24:WP
● 31:HuaWeiWallet(华为Pay)
● 32:花呗
● 34:Adyen
● 200:MPESA
● 100-199:CUSTPAY1-100(支付定制支付方式)
amount
M
string(10)
是
商品支付金额,金额会保留2位小数,例如:20.00。
currency
O
string
是
用于支付该商品的币种,必须符合ISO 4217标准,例如USD、CNY、MYR。
如果支付时未传该参数或参数值为CNY,华为支付服务器回调时不传该参数。
orderId
M
string(50)
是
华为支付平台订单号。
notifyTime
M
string(15)
是
时间戳,即自1970年1月1日0时起的毫秒数。
通知时间为华为支付服务器调用接口的时间。
requestId
M
string(50)
是
商户侧订单号。
由开发者应用在支付时自行生成,用来唯一标识一次支付请求,订单号生成后开发者需自行维护支付订单号。
bankId
O
string(50)
是
支付通道信息,通常为银行编码。该参数应用服务器可不关注。
如下情况华为支付服务器会传入该参数:
● 支付过程中,有具体的支付通道信息。
● 应用在调用支付接口时urlVer参数配置项为“2”。
orderTime
O
string
是
下单时间,即用户点击购买后华为支付服务器收到应用订单请求的时间,格式为yyyy-MM-dd hh:mm:ss。
仅在应用调用支付接口时urlVer传入2时有效。
tradeTime
O
string
是
完成交易时间,格式为yyyy-MM-dd   hh:mm:ss。
仅在应用调用支付接口时urlVer传入2时有效。
accessMode
O
string
是
接入方式:
● 0: 移动支付
● 1: PC-Web
● 2: Mobile-Web
● 3: TV
仅在应用调用支付接口时urlVer传入2时有效。
spending
O
string
是
本参数无意义,仅为向前兼容保留。
如果请求中携带了该参数且值不为null或"",需参与验签。
extReserved
O
string
是
商户侧保留信息,华为支付服务器将传入支付时应用传入的extReserved信息。

如果支付时未传入此参数,则华为支付服务器也不会传入该参数。

说明:
华为支付服务器在传入该参数时会对该参数进行urlencode,在获取该参数后开发者服务器需进行urldecode才能获取原始信息。
sysReserved
O
string
是

第三方支付商家侧保留信息。

说明:
HUAWEI VR 2即插即用的分体式可以实现手机与PC的快速连接。
timeOffset
O
long
是
orderTime与tradeTime所在时区与零时区的时间差,单位ms,应用可根据此参数的值计算用户支付地的时区。参数默认值为28800000,表示+8区。-28800000则表示-8时区。
时区换算方法:timeOffset/3600/1000。
signType
O
string
否

签名类型。

●  如果请求中携带该字段,取值默认为RSA256,表示华为支付服务器使用了SHA256WithRSA算法进行签名。

●  如果请求中未携带该字段,表示华为支付服务器使用了SHA1WithRSA算法进行签名。

sign
M
string
否
用于开发者服务器对支付结果通知消息进行验签的签名字符串,由华为支付服务器生成。

开发者服务器需要参考对响应消息验签的方法对华为支付服务器发送的参数进行验签,验签通过后才能进行后续处理。验签使用的算法根据signType取值确定。

说明:
华为支付服务器在传入该参数时会对该参数进行urlencode,在获取该参数后开发者服务器需进行urldecode才能获取原始信息。
警告:
以上“是否参与验签”列标识为“是”的参数,只有请求消息中携带且值不为null或""时才需要参与验签。

6. 返回参数

参数名称必选(M)/可选(O)类型参数含义
result
M
int
操作结果。取值范围如下:
● 0:成功。对于重复的订单,也要求返回0。
● 1:验签失败。
● 2:超时。
● 3:业务信息错误,比如订单不存在。
● 94:系统错误。
● 95:IO错误。
● 96:错误的url。
● 97:错误的响应。
● 98:参数错误。

● 99:其他错误。

警告:
请开发者服务器在收到通知消息后,在完成最小必要处理后,立即返回响应消息,避免超时。返回结果请严格按照以上定义的返回码返回。

7. 调用示例

类型样例
请求消息样例
  1. POST {第三方应用服务器url} HTTP/1.1
  2.  Content Type : application/x-www-form-urlencoded ;  
  3.  charset=UTF-8
  4.  result=0&userName=890049000000000436&productName=轩辕剑&payType=0&amount=20.00&orderId=123456789&notifyTime=12345678&requestId=123456&BankId=QQCARD-NET&sign=XXX
返回消息样例
  1. HTTP/1.1 200 Created
  2.  Content Type : application/json ; charset=UTF-8
  3.  {
  4.  "result":0
  5.  }