Payment Open API


签名算法

<h1>协议规则</h1> <ul> <li> <p>传输方式:采用 <code>HTTPS</code> 传输</p> </li> <li> <p>提交方式:<code>POST</code> 或 <code>GET</code></p> </li> <li> <p>内容类型:<code>application/json</code></p> </li> <li>字符编码:<code>UTF-8</code></li> </ul> <h1>参数规范</h1> <ul> <li> <p>&lt;font color=&quot;#dd0000&quot;&gt;<strong>交易金额:</strong>&lt;/font&gt; 默认为卢比交易,金额的单位为“印度派萨”,表示为整数,为百分之一卢比。 如果要收或付<code>100卢比</code>,amount应填入为<code>10000</code>,参数值不能带小数。</p> </li> <li>&lt;font color=&quot;#dd0000&quot;&gt;<strong>时间参数:</strong>&lt;/font&gt; 所有涉及时间参数均使用<code>13位毫秒值</code>,如:1622016572190。 时间戳具体是指从格林尼- 治时间 1970年01月01日 00时00分00秒 起至现在的毫秒数。</li> </ul> <h1>签名算法</h1> <p><strong>签名生成的通用步骤如下:</strong></p> <p>第一步:设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&amp;key2=value2…)拼接成字符串stringA。</p> <p>&lt;font color=&quot;#dd0000&quot;&gt;特别注意以下重要规则:&lt;/font&gt;</p> <ul> <li>参数名ASCII码从小到大排序(字典序);</li> <li>如果参数的值为空不参与签名;</li> <li>参数名区分大小写。</li> <li>验证调用返回或支付中心主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验;</li> <li>支付中心接口可能增加字段,验证签名时必须支持增加的扩展字段。</li> </ul> <p>第二步:在stringA最后拼接上key<code>[即 StringA +&amp;quot;&amp;amp;key=&amp;quot; + 私钥 ]</code>得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。</p> <h5>如请求支付系统参数如下:</h5> <pre><code class="language-java">Map&amp;lt;String, Object&amp;gt; signMap = new HashMap&amp;lt;&amp;gt;(); signMap.put(&amp;quot;mchNo&amp;quot;, &amp;quot;M1714027497&amp;quot;); signMap.put(&amp;quot;appId&amp;quot;, &amp;quot;A1729577405&amp;quot;); LocalDateTime localDateTime = LocalDateTime.now(); signMap.put(&amp;quot;mchOrderNo&amp;quot;, &amp;quot;Test_202425267&amp;quot;); signMap.put(&amp;quot;amount&amp;quot;, &amp;quot;10000&amp;quot;); signMap.put(&amp;quot;customerName&amp;quot;, &amp;quot;Example test&amp;quot;); signMap.put(&amp;quot;customerEmail&amp;quot;, &amp;quot;naderelseyd032@gmail.com&amp;quot;); signMap.put(&amp;quot;notifyUrl&amp;quot;,&amp;quot;https://mgw.com&amp;quot;); signMap.put(&amp;quot;customerPhone&amp;quot;, &amp;quot;7538566839&amp;quot;); signMap.put(&amp;quot;currency&amp;quot;, &amp;quot;INR&amp;quot;); signMap.put(&amp;quot;reqTime&amp;quot;,&amp;quot;1747121258585&amp;quot;);</code></pre> <h5>待签名值:</h5> <pre><code class="language-java">amount=10000&amp;amp;appId=A1729577405&amp;amp;currency=INR&amp;amp;customerEmail=naderelseyd032@gmail.com&amp;amp;customerName=Example test&amp;amp;customerPhone=7538566839&amp;amp;mchNo=M1714027497&amp;amp;mchOrderNo=Test_202425267&amp;amp;notifyUrl=https://mgw.com&amp;amp;reqTime=1747121258585&amp;amp;key=acYVA8c6G3svaFToHYOUvbbUqCUmgzxORdyVQmt73CDxH6tkCgE8t1CgrnuUEveLsb3jKU6g2cImBKhtc4Mzqsp3FlWdd5dAzdvH7marALgZ14vu4D7E6jTWoECG8CYY</code></pre> <h5>签名结果:</h5> <pre><code class="language-java">88EC963C24A624D849E9CA40FE41E6FD</code></pre> <p>最终请求支付系统参数:</p> <pre><code class="language-java">{     &amp;quot;amount&amp;quot;: &amp;quot;10000&amp;quot;,     &amp;quot;customerPhone&amp;quot;: &amp;quot;7538566839&amp;quot;,     &amp;quot;mchOrderNo&amp;quot;: &amp;quot;Test_202425267&amp;quot;,     &amp;quot;appId&amp;quot;: &amp;quot;A1729577405&amp;quot;,     &amp;quot;customerEmail&amp;quot;: &amp;quot;naderelseyd032@gmail.com&amp;quot;,     &amp;quot;sign&amp;quot;: &amp;quot;88EC963C24A624D849E9CA40FE41E6FD&amp;quot;,     &amp;quot;notifyUrl&amp;quot;: &amp;quot;https://mgw.com&amp;quot;,     &amp;quot;currency&amp;quot;: &amp;quot;INR&amp;quot;,     &amp;quot;reqTime&amp;quot;: &amp;quot;1747121258585&amp;quot;,     &amp;quot;mchNo&amp;quot;: &amp;quot;M1714027497&amp;quot;,     &amp;quot;customerName&amp;quot;: &amp;quot;Example test&amp;quot; }</code></pre> <p><strong>&lt;font color=&quot;#dd0000&quot;&gt;注意:如果接口参数非必填,且为null时,不参与签名。&lt;/font&gt;</strong></p> <p><strong>&lt;font color=&quot;#dd0000&quot;&gt;范例代码:&lt;/font&gt;</strong></p> <h3>点击下方获取更详细代码👇</h3> <h3>【 <a href="https://www.showdoc.com.cn/dreamo9/10967772117780732">→详细代码示例←</a>】</h3>

页面列表

ITEM_HTML