下单支付
<h3>下单支付</h3>
<ul>
<li><strong>接口名称</strong>: 订单支付接口<br />
<strong>描述</strong>: 提交订单并发起支付请求。<br />
<strong>请求方式</strong>: POST<br />
<strong>请求URL</strong>: <code>/api/services/app/openapi/createorder</code><br />
<strong>请求内容类型</strong>:<code>application/json</code>
<strong>参数</strong>:</li>
</ul>
<table>
<thead>
<tr>
<th>参数名</th>
<th>必填</th>
<th>类型</th>
<th>长度</th>
<th>示例</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>AppID</td>
<td>是</td>
<td>string</td>
<td><center>16</center></td>
<td>a5d3dd2f4c95db76</td>
<td>由平台发放给商户的AppId</td>
</tr>
<tr>
<td>MerchantDetailedID</td>
<td>是</td>
<td>string</td>
<td><center>38</center></td>
<td>3fa85f64-5717-4562-b3fc-2c963f66afa6</td>
<td>由平台发放给商户的详细信息Id</td>
</tr>
<tr>
<td>MerchantOrderNo</td>
<td>是</td>
<td>string</td>
<td><center>21</center></td>
<td>T1999123456</td>
<td>商户订单号</td>
</tr>
<tr>
<td>Amount</td>
<td>是</td>
<td>string</td>
<td><center>5</center></td>
<td>100</td>
<td>订单金额(单位:分)</td>
</tr>
<tr>
<td>NotifyUrl</td>
<td>是</td>
<td>string</td>
<td><center>-</center></td>
<td><a href="http://test123.com">http://test123.com</a></td>
<td>异步通知地址</td>
</tr>
<tr>
<td>Source</td>
<td>否</td>
<td>string</td>
<td><center>-</center></td>
<td>购买商品</td>
<td>交易来源</td>
</tr>
<tr>
<td>ExtraInfo</td>
<td>否</td>
<td>string</td>
<td><center>-</center></td>
<td>apple*2</td>
<td>自定义扩展信息</td>
</tr>
<tr>
<td><strong>Sign</strong></td>
<td><strong>是</strong></td>
<td><strong>string</strong></td>
<td><center>-</center></td>
<td><strong>3777d89f699688158436881f7d7dbe18</strong></td>
<td><strong>密钥签名</strong></td>
</tr>
</tbody>
</table>
<p><strong>签名</strong>:</p>
<ul>
<li><strong>将参数(parameters)按字典序排序</strong>。</li>
<li><strong>将排序后的参数字符串后再拼接秘钥(AppSecret),确保Key首字母是大写。</strong></li>
<li><strong>使用 MD5 算法对拼接后的字符串进行哈希计算。</strong></li>
<li><strong>将计算出的 MD5 哈希值转换为小写字符串形式。</strong></li>
</ul>
<h3>示例代码</h3>
<p>以下是调用支付下单接口的基本示例:</p>
<p>```c#
// 1. 集合数据<br />
var requestData = new Dictionary<string, object>();
requestData.Add("AppID", "a5d3dd2f4c95db76");
requestData.Add("MerchantDetailedID", "3fa85f64-5717-4562-b3fc-2c963f66afa6");
requestData.Add("MerchantOrderNo", "T1999123456");
requestData.Add("Amount", "100");
requestData.Add("NotifyUrl", _configuration["Web:Host"] + "/local/localhostNotify");
requestData.Add("Source", "MerchantSource");
requestData.Add("ExtraInfo", "apple *2");
//签名
var sign = toSignHandle(requestData,AppSecret);
requestData.Add("Sign",sign);</p>
<pre><code> // 2. 发送请求
var requestUrl = &quot;http://merchant.sy1999.com/api/services/app/overseasopenapi/createorder&quot;;
httpClient.ContentType = &quot;application/json&quot;;
var response = await httpClient.PostAsync(requestUrl,jsonData(requestData)); </code></pre>
<p>`
// 3. 获取响应<br />
var result = await response.Content.ReadAsStringAsync();<br />
Console.log(result); // { result.code,result.msg,result.data}; </p>
<pre><code>###响应参数
| 参数名称 | 参数类型 | 参数说明 |
| --- | --- | --- |
| AppID | string | 由平台发放给商户的AppId |
| MerchantDetailedID | string | 由平台发放给商户的详细信息Id |
| MerchantOrderNo | string | 海外商户订单号 |
| SYOrderNo | string | SY订单号 |
| Amount | string | 金额 |
| NotifyUrl | string | 异步通知地址 |
| ExtraInfo | string | 自定义扩展字段 |
| PayUrl | string | 支付Url(利用其url跳转以完成支付) |
| Sign | string | 签名 |
###响应示例
```javascript
{
success:true,
code:200,
msg:&quot;Success&quot;,
data:{
&quot;appID&quot;: &quot;a5d3dd2f4c95db76&quot;,
&quot;merchantDetailedID&quot;: &quot;3fa85f64-5717-4562-b3fc-2c963f66afa6&quot;,
&quot;merchantOrderNo&quot;: &quot;T1999123456&quot;,
&quot;syOrderNo&quot;: &quot;SY20240720204739002&quot;,
&quot;amount&quot;: &quot;100&quot;,
&quot;notifyUrl&quot;: &quot;https://local/localhostNotiy.com&quot;,
&quot;extraInfo&quot;: &quot;apple *2&quot;,
&quot;payUrl&quot;: &quot;https://payapiserver/payment.com&quot;,
&quot;sign&quot;: &quot;3777d89f699688158436881f7d7dbe18&quot;
}
}
</code></pre>