From fd03463ec7ca63e0d500c409c5c6df7acab25be7 Mon Sep 17 00:00:00 2001 From: mantiswang Date: Fri, 28 Mar 2014 00:41:36 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E6=8E=89=E6=97=A0?= =?UTF-8?q?=E6=95=88=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/cocos2dx/plugin/ResultChecker.java | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java index 143a04e3..418ae5b7 100644 --- a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java +++ b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java @@ -77,33 +77,33 @@ int checkSign() { return retVal; } - int getResultStatus() { - int ret = 9000; - try { - JSONObject objContent = BaseHelper.string2JSON(this.mContent, ";"); - String result = objContent.getString("resultStatus"); - result = result.substring(1, result.length() - 1); - - ret = Integer.parseInt(result); - } catch (Exception e) { - e.printStackTrace(); - ret = 4001; - } - return ret; - } - - private static final int PAY_SUCCESS_STATUS_CODE = 9000; - public boolean isPayOk() { - boolean isPayOk = false; - - String success = getSuccess(); - if (success.equalsIgnoreCase("true") && - checkSign() == RESULT_CHECK_SIGN_SUCCEED && - PAY_SUCCESS_STATUS_CODE == getResultStatus()) - { - isPayOk = true; - } - - return isPayOk; - } +// int getResultStatus() { +// int ret = 9000; +// try { +// JSONObject objContent = BaseHelper.string2JSON(this.mContent, ";"); +// String result = objContent.getString("resultStatus"); +// result = result.substring(1, result.length() - 1); +// +// ret = Integer.parseInt(result); +// } catch (Exception e) { +// e.printStackTrace(); +// ret = 4001; +// } +// return ret; +// } +// +// private static final int PAY_SUCCESS_STATUS_CODE = 9000; +// public boolean isPayOk() { +// boolean isPayOk = false; +// +// String success = getSuccess(); +// if (success.equalsIgnoreCase("true") && +// checkSign() == RESULT_CHECK_SIGN_SUCCEED && +// PAY_SUCCESS_STATUS_CODE == getResultStatus()) +// { +// isPayOk = true; +// } +// +// return isPayOk; +// } } \ No newline at end of file From c293b6dac3fc514ac5e5902186c92c2143f83689 Mon Sep 17 00:00:00 2001 From: mantiswang Date: Fri, 28 Mar 2014 00:48:50 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=A4=84=E7=90=86=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=97=B6=EF=BC=8C=E5=85=88=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=94=AF=E4=BB=98=E6=88=90=E5=8A=9F=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E7=AD=BE=E5=90=8D=E9=AA=8C=E8=AF=81=E4=B8=AD?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/org/cocos2dx/plugin/IAPAlipay.java | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/IAPAlipay.java b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/IAPAlipay.java index 3c799b7d..23f0af8c 100644 --- a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/IAPAlipay.java +++ b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/IAPAlipay.java @@ -168,7 +168,9 @@ public void onCancel(DialogInterface dialog) { mcontext.onKeyDown(KeyEvent.KEYCODE_BACK, null); } } - + + private static final int PAY_SUCCESS_STATUS_CODE = 9000; + private static void initUIHandle() { // // the handler use to receive the pay result. @@ -186,24 +188,34 @@ public void handleMessage(Message msg) { // 从通知中获取参数 try { - // 获取交易状态,具体状态代码请参看文档 - String memo = "memo="; - int imemoStart = strRet.indexOf("memo="); - imemoStart += memo.length(); - int imemoEnd = strRet.indexOf(";result="); - memo = strRet.substring(imemoStart, imemoEnd); - // 对通知进行验签 - ResultChecker resultChecker = new ResultChecker(strRet); - - int retVal = resultChecker.checkSign(); - // 返回验签结果以及交易状态 - if (retVal == ResultChecker.RESULT_CHECK_SIGN_FAILED) { - payResult(IAPWrapper.PAYRESULT_FAIL, "签名验证失败"); - } else if (retVal == ResultChecker.RESULT_CHECK_SIGN_SUCCEED && resultChecker.isPayOk()) { - payResult(IAPWrapper.PAYRESULT_SUCCESS, "支付成功"); - } else { - payResult(IAPWrapper.PAYRESULT_FAIL, "支付失败"); - } + // 获取交易状态码,具体状态代码请参看文档 + String tradeStatus = "resultStatus={"; + int imemoStart = strRet.indexOf("resultStatus="); + imemoStart += tradeStatus.length(); + + int imemoEnd = imemoStart + 4; + tradeStatus = strRet.substring(imemoStart, imemoEnd); + int statusCode = Integer.valueOf(tradeStatus); + if(statusCode == PAY_SUCCESS_STATUS_CODE) + { + // 对通知进行验签 + ResultChecker resultChecker = new ResultChecker(strRet); + + int retVal = resultChecker.checkSign(); + // 返回验签结果以及交易状态 + if (retVal == ResultChecker.RESULT_CHECK_SIGN_FAILED) { + payResult(IAPWrapper.PAYRESULT_FAIL, "签名验证失败"); + } else if (retVal == ResultChecker.RESULT_CHECK_SIGN_SUCCEED/* && resultChecker.isPayOk()*/) { + payResult(IAPWrapper.PAYRESULT_SUCCESS, "支付成功"); + } else { + payResult(IAPWrapper.PAYRESULT_FAIL, "支付失败"); + } + } + else + { + payResult(IAPWrapper.PAYRESULT_FAIL, "支付失败"); + } + } catch (Exception e) { e.printStackTrace(); payResult(IAPWrapper.PAYRESULT_FAIL, "结果解析失败"); From ae8cd554bf76f288e66f895088a4ee4d0de4356a Mon Sep 17 00:00:00 2001 From: mantiswang Date: Fri, 28 Mar 2014 00:49:33 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../proj.android/src/org/cocos2dx/plugin/ResultChecker.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java index 418ae5b7..47af4dc8 100644 --- a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java +++ b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java @@ -51,6 +51,12 @@ int checkSign() { try { JSONObject objContent = BaseHelper.string2JSON(this.mContent, ";"); + /** + * 用户取消操作,返回值为 + * resultStatus={6001};memo={操作已经取消。};result={} + * + * 下面对result的处理会出现NullPointException + */ String result = objContent.getString("result"); result = result.substring(1, result.length() - 1); // 获取待签名数据 From 922e547ab5bed4dfccc2640f97a13cc4f8d98a91 Mon Sep 17 00:00:00 2001 From: mantiswang Date: Fri, 28 Mar 2014 00:54:22 +0800 Subject: [PATCH 4/5] a --- .../alipay/proj.android/src/org/cocos2dx/plugin/IAPAlipay.java | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/IAPAlipay.java b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/IAPAlipay.java index 23f0af8c..dfe9f5d4 100644 --- a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/IAPAlipay.java +++ b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/IAPAlipay.java @@ -200,7 +200,6 @@ public void handleMessage(Message msg) { { // 对通知进行验签 ResultChecker resultChecker = new ResultChecker(strRet); - int retVal = resultChecker.checkSign(); // 返回验签结果以及交易状态 if (retVal == ResultChecker.RESULT_CHECK_SIGN_FAILED) { From 2e4e82cb6fbe373be4f3ae53bfdde8b000cf8d07 Mon Sep 17 00:00:00 2001 From: mantiswang Date: Fri, 28 Mar 2014 00:55:10 +0800 Subject: [PATCH 5/5] a --- .../proj.android/src/org/cocos2dx/plugin/ResultChecker.java | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java index 47af4dc8..1c2d2d4c 100644 --- a/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java +++ b/plugins/alipay/proj.android/src/org/cocos2dx/plugin/ResultChecker.java @@ -54,7 +54,6 @@ int checkSign() { /** * 用户取消操作,返回值为 * resultStatus={6001};memo={操作已经取消。};result={} - * * 下面对result的处理会出现NullPointException */ String result = objContent.getString("result");