评论

#微信支付 V3 JSAPI 请求构成(请求头、请求体)说明

#微信支付 V3 JSAPI 请求构成(请求头、请求体)说明

写在前面:标红的地方是需要注意的,这里很容易搞混到底使用平台证书还是商户证书。

【服务商模式】

请求头

POST https://api.mch.weixin.qq.com/v3/pay/partner/transactions/jsapi HTTP/1.1

Accept: text/html, application/xhtml+xml, image/jxr, */*

Referer: https://api.mch.weixin.qq.com/v3/pay/partner/transactions/jsapi

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586

Content-Type: application/json

Authorization: WECHATPAY2-SHA256-RSA2048 mchid="服务商商户号ID",nonce_str="dxt55guj.rny",timestamp="1611040484",serial_no="服务商证书序列号",signature="使用服务商证书加密的字符串(格式:HTTP请求方法\nURL\n请求时间戳\n请求随机串\n请求报文主体\n)"

Host: api.mch.weixin.qq.com

Content-Length: 360

Connection: Keep-Alive


请求体:

{"sp_appid":"服务商服务号APPID","sp_mchid":"服务商商户号ID","sub_appid":"子商户对应appid","sub_mchid":"子商户商户号ID","payer":{"sub_openid":"子商户对应appid对应的openid"},"description":"描述","out_trade_no":"61213d2c3c48436f9de68b0455e5bde0","notify_url":"http://www.mirsh.cn","amount":{"total":1,"currency":"CNY"},"scene_info":{"payer_client_ip":"127.0.0.1"}}


【直连模式】

请求头

POST https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi HTTP/1.1

Accept: text/html, application/xhtml+xml, image/jxr, */*

Referer: https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586

Content-Type: application/json

Authorization: WECHATPAY2-SHA256-RSA2048 mchid="商户号ID",nonce_str="jlujyhrk.vxs",timestamp="1611041033",serial_no="商户号证书序列号",signature="使用商户证书加密的字符串(格式:HTTP请求方法\nURL\n请求时间戳\n请求随机串\n请求报文主体\n)"

Host: api.mch.weixin.qq.com

Content-Length: 292

Connection: Keep-Alive


请求体

{"appid":"商户号对应的appid","mchid":"商户号ID","payer":{"openid":"oXY6B4sjZO4svmWVuLktyDT9mlsU"},"description":"描述","out_trade_no":"fcf799e5632b46e38ce6f25a8b57aa3d","notify_url":"http://www.mirsh.cn","amount":{"total":1,"currency":"CNY"},"scene_info":{"payer_client_ip":"127.0.0.1"}}

最后一次编辑于  2021-01-20  
点赞 1
收藏
评论

5 个评论

  • 老白 石崖茶.银藤茶🍵
    老白 石崖茶.银藤茶🍵
    2022-05-30

    文档里都给这样的示例,官方的东西还要到处查怎么用

    2022-05-30
    赞同 2
    回复
  • 吴敌
    吴敌
    2021-04-27

    为什么文档里,从没提到,需要加“请求头”呀

    https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_1.shtml

    写的不清不楚的,得让我们自己猜,自己去查。


    2021-04-27
    赞同 2
    回复 6
    • peng
      peng
      2021-04-28
      建议从指引文档看起.
      2021-04-28
      回复
    • 路遥
      路遥
      2023-01-12
      我真的很服,微信,写的文档什么玩意,乱七八糟
      2023-01-12
      回复
    • 路遥
      路遥
      2023-01-12
      不光jsapi没写,是基本都没写
      2023-01-12
      回复
    • 宋昌平
      宋昌平
      2023-03-10回复路遥
      微信文档就是坨屎
      2023-03-10
      回复
    • 不死鸟1988
      不死鸟1988
      2023-07-14回复宋昌平
      你这句话在侮辱屎
      2023-07-14
      回复
    查看更多(1)
  • 冯先生
    冯先生
    2021-07-17

    大佬,有个问题折腾了好几天,就是401,未经授权。

    哪位大佬遇到过!!!急!!!

    几点需要确定的:

    1.服务器是否需要安装P12证书,代码里用不用增加证书

    2.商户平台注册的支付接口,然后绑定公众号的APPID,这里申请统一支付接口用的公众号的APPID有问题么。

    悬红解答,解决问题,50元微信红包奉上。。。

    2021-07-17
    赞同
    回复 1
    • peng
      peng
      2021-07-18
      1.服务器不需要按照,代码中直接引用证书路径的方式请求,这一个需要在IIS应用程序池开启加载用户配置文件;
       

      2.看你的写法你应该是调用v3版本接口,这个要说明下你调用哪个接口,是否模式调用(直连|服务商),然后看一下authorizationString内容与请求参数内容。
      2021-07-18
      1
      回复
  • 默默积极(王洋)
    默默积极(王洋)
    2021-05-20
    完全按照你的对的, 我加上请求头Authorization
    就报错 400 不加Authorization就成功请求,奇怪的一比。
    

    请求体 body数据:{"amount": {"total": 1,"currency": "CNY"},"mchid": "1608128xxx3","description": "商家","notify_url": "http://xxxxxx.com/order/notifyWxPay","payer": {"openid": "oxxxt1Z4qWQxCbvAnAytg3XG0Gkw"},"out_trade_no": "20210520000003483","appid": "wx80c6046666675022"}

    请求头设置

    HttpPost httpPost = new HttpPost(url);
    httpPost.setHeader("Authorization","WECHATPAY2-SHA256-RSA2048" + " " + token);
    System.out.println("WECHATPAY2-SHA256-RSA2048 "+token);
    StringEntity entity = new StringEntity(reqdata,"UTF-8");
    entity.setContentType("application/json");
    httpPost.setEntity(entity);
    httpPost.setHeader("Accept", "text/html, application/xhtml+xml, image/jxr, */*");
    


    请求头的Authorization
    WECHATPAY2-SHA256-RSA2048 mchid="1608128xxx",nonce_str="0000041514",timestamp="1621440004",serial_no="6207B9E166618239AC04AD7F35BB3DF84EDA03A0",signature="Z4NSq1M54u9NyMnPKQolN7uTeJI46Xnm4Qo77kSUwjNdhZfBTYeV2ZKWY2lxWBVR59twjmzhdUVLEZgAnOx7fBAHxFfY+fV+YCI/bwvfjqzjw4ARHqFXWsoJIG1tX1uDrgQuLOmPkdtELx9VBDIXgC26Lz61CuYDEW6jJJ1UuMPZWzCw4SX3k3WZ3D7lXL8fMvXDYROmoLmYlvkeGtXllN7uy1kV4HRdmpB4T6FQAQyEAR/blZwtFD0DPWknTY9rYHuCL9wN2tGcPheZsnlZqW10ScCi8kPyKJBUnKN466DaJ/zeHy2mwNKzXtZSEwcMvz/hYGyeyfgBHM9qkSHTug=="
    
    
    


    2021-05-20
    赞同
    回复 4
    • Pluto
      Pluto
      2021-07-09
      我也是这样,跟着文档的就头疼的一批。
      2021-07-09
      1
      回复
    • 郑青云
      郑青云
      2021-11-15
      我也遇到了,大佬们怎么搞定的?
      2021-11-15
      回复
    • Icey🍀
      Icey🍀
      2022-01-06回复郑青云
      遇到了同样的问题,大佬们怎么解决的呢
      2022-01-06
      回复
    • 1
      1
      2023-09-07回复Icey🍀
      怎么解决了吗  我他妈服了这b文档
      2023-09-07
      回复
  • 青寒
    青寒
    2021-02-28

    赞!

    2021-02-28
    赞同
    回复
登录 后发表内容