第三方推送微信支付成功的订单数据.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html;charset=UTF-8">
  5. <style type="text/css">
  6. /* CSS stylesheet is based on killwing's flavored markdown style: https://gist.github.com/2937864 */ body{ margin: 0 auto; font: 13px/1.231 Helvetica, Arial, sans-serif; color: #444444; line-height: 1; max-width: 960px; padding: 5px; } h1, h2, h3, h4 { color: #111111; font-weight: 400; } h1, h2, h3, h4, h5, p { margin-bottom: 16px; padding: 0; } h1 { font-size: 28px; } h2 { font-size: 22px; margin: 20px 0 6px; } h3 { font-size: 21px; } h4 { font-size: 18px; } h5 { font-size: 16px; } a { color: #0099ff; margin: 0; padding: 0; vertical-align: baseline; } a:link,a:visited{ text-decoration:none; } a:hover{ text-decoration:underline; } ul, ol { padding: 0; margin: 0; } li { line-height: 24px; margin-left: 44px; } li ul, li ul { margin-left: 24px; } ul, ol { font-size: 14px; line-height: 20px; max-width: 540px; } p { font-size: 14px; line-height: 20px; max-width: 540px; margin-top: 3px; } pre { padding: 0px 4px; max-width: 800px; white-space: pre-wrap; font-family: Consolas, Monaco, Andale Mono, monospace; line-height: 1.5; font-size: 13px; border: 1px solid #ddd; background-color: #f7f7f7; border-radius: 3px; } code { font-family: Consolas, Monaco, Andale Mono, monospace; line-height: 1.5; font-size: 13px; border: 1px solid #ddd; background-color: #f7f7f7; border-radius: 3px; } pre code { border: 0px; } aside { display: block; float: right; width: 390px; } blockquote { border-left:.5em solid #40AA53; padding: 0 2em; margin-left:0; max-width: 476px; } blockquote cite { font-size:14px; line-height:20px; color:#bfbfbf; } blockquote cite:before { content: '\2014 \00A0'; } blockquote p { color: #666; max-width: 460px; } hr { height: 1px; border: none; border-top: 1px dashed #0066CC } button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; } button, input { line-height: normal; *overflow: visible; } button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } input[type=checkbox], input[type=radio] { cursor: pointer; } /* override default chrome & firefox settings */ input:not([type="image"]), textarea { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } input[type="search"] { -webkit-appearance: textfield; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } label, input, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: normal; margin-bottom: 18px; } input[type=checkbox], input[type=radio] { cursor: pointer; margin-bottom: 0; } input[type=text], input[type=password], textarea, select { display: inline-block; width: 210px; padding: 4px; font-size: 13px; font-weight: normal; line-height: 18px; height: 18px; color: #808080; border: 1px solid #ccc; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } select, input[type=file] { height: 27px; line-height: 27px; } textarea { height: auto; } /* grey out placeholders */ :-moz-placeholder { color: #bfbfbf; } ::-webkit-input-placeholder { color: #bfbfbf; } input[type=text], input[type=password], select, textarea { -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; -moz-transition: border linear 0.2s, box-shadow linear 0.2s; transition: border linear 0.2s, box-shadow linear 0.2s; -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); } input[type=text]:focus, input[type=password]:focus, textarea:focus { outline: none; border-color: rgba(82, 168, 236, 0.8); -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); } /* buttons */ button { display: inline-block; padding: 4px 14px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; line-height: 18px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); background-color: #0064cd; background-repeat: repeat-x; background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); background-image: -moz-linear-gradient(top, #049cdb, #0064cd); background-image: -ms-linear-gradient(top, #049cdb, #0064cd); background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); background-image: -o-linear-gradient(top, #049cdb, #0064cd); background-image: linear-gradient(top, #049cdb, #0064cd); color: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); border: 1px solid #004b9a; border-bottom-color: #003f81; -webkit-transition: 0.1s linear all; -moz-transition: 0.1s linear all; transition: 0.1s linear all; border-color: #0064cd #0064cd #003f81; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); } button:hover { color: #fff; background-position: 0 -15px; text-decoration: none; } button:active { -webkit-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } button::-moz-focus-inner { padding: 0; border: 0; } /* table */ table { border-spacing: 0; border: 1px solid #ccc; } td, th{ border: 1px solid #ccc; padding: 5px; } /* code syntax highlight. Documentation: http://www.mdcharm.com/documentation/code_syntax_highlighting.html#custom_your_own */ pre .literal, pre .comment, pre .template_comment, pre .diff .header, pre .javadoc { color: #008000; } pre .keyword, pre .css .rule .keyword, pre .winutils, pre .javascript .title, pre .nginx .title, pre .subst, pre .request, pre .status { color: #0000FF; font-weight: bold } pre .number, pre .hexcolor, pre .python .decorator, pre .ruby .constant { color: #0000FF; } pre .string, pre .tag .value, pre .phpdoc, pre .tex .formula { color: #D14 } pre .title, pre .id { color: #900; font-weight: bold } pre .javascript .title, pre .lisp .title, pre .clojure .title, pre .subst { font-weight: normal } pre .class .title, pre .haskell .type, pre .vhdl .literal, pre .tex .command { color: #458; font-weight: bold } pre .tag, pre .tag .title, pre .rules .property, pre .django .tag .keyword { color: #000080; font-weight: normal } pre .attribute, pre .variable, pre .lisp .body { color: #008080 } pre .regexp { color: #009926 } pre .class { color: #458; font-weight: bold } pre .symbol, pre .ruby .symbol .string, pre .lisp .keyword, pre .tex .special, pre .prompt { color: #990073 } pre .built_in, pre .lisp .title, pre .clojure .built_in { color: #0086b3 } pre .preprocessor, pre .pi, pre .doctype, pre .shebang, pre .cdata { color: #999; font-weight: bold } pre .deletion { background: #fdd } pre .addition { background: #dfd } pre .diff .change { background: #0086b3 } pre .chunk { color: #aaa } pre .markdown .header { color: #800; font-weight: bold; } pre .markdown .blockquote { color: #888; } pre .markdown .link_label { color: #88F; } pre .markdown .strong { font-weight: bold; } pre .markdown .emphasis { font-style: italic; }
  7. </style>
  8. </head>
  9. <body>
  10. <h2>第三方推送微信支付成功的订单数据</h2>
  11. <blockquote>
  12. <p>接收微信支付成交后的数据。此接口提交数据时需要签名。</p>
  13. <ul>
  14. <li>2016-12-01 增加公司标识字段</li>
  15. </ul>
  16. </blockquote>
  17. <h2>请求</h2>
  18. <blockquote>
  19. <p><strong>URI</strong></p>
  20. </blockquote>
  21. <pre><code> /wxsales/push/one/v1 POST charset=UTF-8
  22. </code></pre>
  23. <blockquote>
  24. <p><strong>参数</strong></p>
  25. </blockquote>
  26. <pre><code> /** 微信的交易流水号 */
  27. private String trade_no; 【不空】
  28. /** 销售员手机号 */
  29. private String phone; 【不空】
  30. /** 消费金额 */
  31. private float total_fee; 【不空】
  32. /** 交易时间 */
  33. private String trade_time; 【不空】
  34. /** 公司标识 */
  35. private String company_id; 【不空】
  36. /** 公司名称 */
  37. private String company; 【不空】
  38. /** 参数签名 签名规则见下方,规则同微信 */
  39. private String sign; 【不空】
  40. </code></pre>
  41. <blockquote>
  42. <p><strong>签名规则</strong></p>
  43. </blockquote>
  44. <ol>
  45. <li>参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即<code>param1=value1&amp;param2=value2…</code>)拼接成字符串得到stringA.</li>
  46. <li>拼接加密密钥 <code>stringA&amp;key=192006250b4c09247ec02edce69f6a2d</code>得到stringB</li>
  47. <li>对第2步的结果进行MD5加密 <code>MD5(stringB).toUpperCase()</code>得出sign的值。</li>
  48. <li>sign参数不参与签名</li>
  49. </ol>
  50. <blockquote>
  51. <p><strong>提交</strong></p>
  52. </blockquote>
  53. <p>将参数集以JSON字符串的格式POST到服务器端。如:</p>
  54. <pre><code class="json">{<span class="attribute">"trade_no</span>":<span class="value"><span class="string">"222222202020202020202"</span></span>,<span class="attribute">"phone</span>":<span class="value"><span class="string">"18877677838"</span></span>,<span class="attribute">"total_fee</span>":<span class="value"><span class="number">39.60</span></span>,<span class="attribute">"trade_time</span>":<span class="value"><span class="string">"2016-12-01 12:30:33"</span></span>,<span class="attribute">"company_id</span>":<span class="value"><span class="string">"12345678"</span></span>,<span class="attribute">"company</span>":<span class="value"><span class="string">"米其林餐厅","sign":"AED956A309FD94A9D6514CDBBF9B100B"}
  55. </span></span></code></pre>
  56. <h2>响应</h2>
  57. <blockquote>
  58. <p>返回字符串</p>
  59. </blockquote>
  60. <pre><code>
  61. 响应值:SUCCESS 表示推送请求成功受理。
  62. 响应值:FAIL 最后处理不成功。
  63. 其它响应值,表示受校验限制或参数不正确。
  64. </code></pre>
  65. </body>
  66. </html>