支付回调
<pre><code class="language-java">import java.util.Map;
import java.util.HashMap;
public class PaymentNotification {
public static void main(String[] args) {
// 获取请求参数
String urldata = &quot;&quot;; // 获取请求参数的方式根据实际情况修改
String success = &quot;SUCCESS&quot;; // 成功
String fail = &quot;FAILURE&quot;; // 失败
// 缺少参数
if (urldata.isEmpty()) {
System.exit(0); // 修改为0表示成功,根据实际情况修改
}
// 解析参数
Map&lt;String, String&gt; urldataMap = new HashMap&lt;&gt;();
String[] params = urldata.split(&quot;&amp;&quot;);
for (String param : params) {
String[] keyValue = param.split(&quot;=&quot;);
if (keyValue.length == 2) {
urldataMap.put(keyValue[0], keyValue[1]);
}
}
String order_id = urldataMap.getOrDefault(&quot;order_id&quot;, &quot;&quot;);
String mem_id = urldataMap.getOrDefault(&quot;mem_id&quot;, &quot;&quot;);
int app_id = Integer.parseInt(urldataMap.getOrDefault(&quot;app_id&quot;, &quot;0&quot;));
double money = Double.parseDouble(urldataMap.getOrDefault(&quot;money&quot;, &quot;0.00&quot;));
String order_status = urldataMap.getOrDefault(&quot;order_status&quot;, &quot;&quot;);
int paytime = Integer.parseInt(urldataMap.getOrDefault(&quot;paytime&quot;, &quot;0&quot;));
String attach = urldataMap.getOrDefault(&quot;attach&quot;, &quot;&quot;);
String sign = urldataMap.getOrDefault(&quot;sign&quot;, &quot;&quot;);
// money 参数为小数点后两位
money = Double.parseDouble(String.format(&quot;%.2f&quot;, money));
// 校验参数合法性
if (urldata.isEmpty() || order_id.isEmpty() || mem_id.isEmpty() || app_id == 0 || money == 0.00
|| order_status.isEmpty() || paytime == 0 || attach.isEmpty() || sign.isEmpty()) {
System.exit(0); // 修改为0表示成功,根据实际情况修改
}
// 校验此单合法性
{
attach = &quot;&quot;; // CP自定义参数,可以为CP的订单ID,与其他信息,校验平台订单合法性.建议英文与数字,请不要有特殊字符 UTF-8编码
}
// 通过游戏id查询appkey
String appkey = &quot;&quot;; // 通过游戏ID查询到此游戏的appkey
// 拼接参数
String paramstr = &quot;order_id=&quot; + order_id + &quot;&amp;mem_id=&quot; + mem_id + &quot;&amp;app_id=&quot; + app_id + &quot;&amp;money=&quot; + money
+ &quot;&amp;order_status=&quot; + order_status + &quot;&amp;paytime=&quot; + paytime + &quot;&amp;attach=&quot; + attach + &quot;&amp;app_key=&quot; + appkey;
String verifysign = md5(paramstr);
if (verifysign.equalsIgnoreCase(sign)) {
System.exit(0); // 修改为0表示成功,根据实际情况修改
}
System.exit(0); // 修改为0表示成功,根据实际情况修改
}
// MD5加密方法,根据实际情况替换为你的MD5加密实现
public static String md5(String input){
// 此处为示例实现,实际应用中需要替换为真正的MD5加密方法
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance(&quot;MD5&quot;);
byte[] array = md.digest(input.getBytes(&quot;UTF-8&quot;));
StringBuilder sb = new StringBuilder();
for (byte b : array) {
sb.append(String.format(&quot;%02x&quot;, b));
}
return sb.toString();
} catch (java.security.NoSuchAlgorithmException | java.io.UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
}
</code></pre>