作者: Wenwei Yang

Pay: Weixin pay

关于微信支付的调用方法。

Request

HTTP request

POST https://www.featapi.com/api/pay/order/pay/

Parameters

授权

此请求需要具有以下所有范围的授权:

Scopes
pay_trade_order

有关更多信息,请参阅认证和授权页面。

Request body

请求参数

Property nameValueDescriptionNotes
Required Properties
pay_methodinteger使用微信支付方法,必须为200。0为银联,100为支付宝,200为微信,目前仅支持这些方法。
end_typeinteger终端交易类型,0为Native二维码支付,100为移动端APP支付,200为JSAPI支付,300为H5支付。根据不同的支付方法有对应的终端交易类型。
Optional Properties
extra_paramsdict以字典的格式提交可选的额外参数。
详情请查看下文的`extra_params`说明。
范例:
{“wx_app_type”: “feat_ios_app”}

extra_params的参数:

Property nameValueDescriptionNotes
wx_app_typestring提交支付的终端向服务端声明正在使用的微信app类型。目前已对接的有”official_account”,”feat_ios_app”。不提交该值时,默认为”official_account”。比如使用”APP”支付时,就应当选择”feat_ios_app”。
如果对该值有任何疑问请及时联系后端工作人员或者运维工程师。
open_idstring微信用户标识,是对应微信app id下的唯一标识,如果同时提交”wx_app_type”参数时,要注意对应的微信app类型是否一致。在使用”JSAPI”支付时,这是必填参数。

Response

返回结果

1.当”wx_app_type”为”official_account”,end_type为0,这是”NATIVE”二维码支付。code_url是支付二维码的地址,使用二维码转换工具将该地址转换为二维码图片,即可提供用户扫描支付。以下是范例数据:

{
    "data": {
        "trade_type": "NATIVE",
        "code_url": "weixin://wxpay/bizpayurl?pr=123456",
        "prepay_id": "wx99999999999999999999999efbe47b00000"
    }
}

2.当”wx_app_type”为”feat_ios_app”,end_type为100,这是”APP”支付。以下是范例数据:

{
    "data": {
        "package": "Sign=WXPay",
        "timestamp": 1642748825,
        "prepayid": "wx99999999999999999999fa4d4bc0200000",
        "appid": "wxjifrogd7x8g09t5s",
        "partnerid": "1486158932",
        "noncestr": "e3dd9f348d8240ef81a0ada3ab1aae55",
        "sign": "D9SBS1VMZIPV6PJGHNQJRGPOWFBAPUOA"
    }
}

3.当”wx_app_type”为”official_account”,end_type为200,这是”JSAPI”支付。以下是范例数据:

{
    "appId": "wx4444aa5566666777",
    "timeStamp": 1653377557,
    "nonceStr": "70041f30d95a41cdb42d07e8e5056a09",
    "package": "prepay_id=wx2415323785101221eb9b6f10663d3b0000",
    "signType": "MD5",
    "paySign": "9147CA32DE4278800CDFF927203348E9"
}

Feat Oauth2 Token 异常列表

异常返回范例

{
    "error": "invalid_request"
    "error_description": "device_id is required"
}

其中“error”字段为异常错误的代码,“error_description”为异常错误的可读描述文本,对接时注意“error_description”字段不是一定返回的。

标准的错误代码

以下是Oauth2标准的错误代码:

invalid_request

状态代码:HTTP 400

该请求缺少必需的参数、包含不支持的参数值(授权类型除外)、重复参数、包含多个凭据、使用一种以上的机制来验证客户端,或者请求格式不正确。

注意:

  • 返回 “error_description”值为 “device_id is required”,这表示在grant_type为”password”时,请求必须带上”device_id”值。

invalid_client

状态代码:HTTP 401

客户端身份验证失败(例如,未知客户端、不包含客户端身份验证或不支持的身份验证方法)。 此时服务器返回 HTTP 401(未授权)状态代码。

invalid_grant

状态代码:HTTP 400

提交的客户端身份认证授权(例如,授权code、资源所有者身份凭据)或刷新令牌无效、已过期、已撤销、与授权请求中使用的重定向 URI 不匹配,或已派发给另一个客户端。

unauthorized_client

状态代码:HTTP 400

该客户端的身份验证无权使用该grant类型。

unsupported_grant_type

状态代码:HTTP 400

服务器不支持该grant类型。

invalid_scope

状态代码:HTTP 400

请求的scope无效或scope的格式错误或超出资源所有者授予的范围。

参考文档链接:https://datatracker.ietf.org/doc/html/rfc6749#section-5.2