PayPersenter.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package com.edufound.mobile.pay;
  2. import android.os.Handler;
  3. import android.os.Message;
  4. import android.text.TextUtils;
  5. import com.alipay.sdk.app.PayTask;
  6. import com.edufound.mobile.base.BasePersenter;
  7. import com.edufound.mobile.base.BaseView;
  8. import com.edufound.mobile.interfaces.EfunboxPayInterfaces;
  9. import com.edufound.mobile.main.MainPersenter;
  10. import com.edufound.mobile.pay.ali.PayResult;
  11. import com.edufound.mobile.util.Logger;
  12. import com.edufound.mobile.util.ToastUtil;
  13. import com.tencent.mm.opensdk.modelpay.PayReq;
  14. import org.json.JSONObject;
  15. import java.util.Map;
  16. public class PayPersenter implements PayIPersenter {
  17. BaseView mView;
  18. public PayPersenter(BaseView view) {
  19. mView = view;
  20. }
  21. @Override
  22. public void loadData() {
  23. }
  24. @Override
  25. public void onDisConnNetWork() {
  26. }
  27. @Override
  28. public void onConnNetWork() {
  29. }
  30. @Override
  31. public void WeChatPay(String json) {
  32. if (!PayInit.getInstance().WX_API.isWXAppInstalled()) {
  33. ToastUtil.showToast("请安装微信");
  34. return;
  35. }
  36. Message msg = new Message();
  37. msg.obj = json;
  38. msg.what = 0xffbcd14;
  39. resultHandler.sendMessageDelayed(msg, 0);
  40. }
  41. @Override
  42. public void ALIPay(final String orderInfo) {
  43. Logger.e("orderInfo:" + orderInfo);
  44. Runnable payRunnable = new Runnable() {
  45. @Override
  46. public void run() {
  47. PayTask alipay = new PayTask(mView.getActivity());
  48. Map<String, String> result = alipay.payV2(orderInfo, true);
  49. Message msg = new Message();
  50. msg.what = 0xffbcd15;
  51. msg.obj = result;
  52. resultHandler.sendMessage(msg);
  53. }
  54. };
  55. Thread payThread = new Thread(payRunnable);
  56. payThread.start();
  57. }
  58. Handler resultHandler = new Handler(new Handler.Callback() {
  59. @Override
  60. public boolean handleMessage(Message msg) {
  61. switch (msg.what) {
  62. case EfunboxPayInterfaces.PAY_BEGIN:
  63. ToastUtil.showToast("支付开始");
  64. break;
  65. case EfunboxPayInterfaces.PAY_SUCCESS:
  66. ToastUtil.showToast("支付成功");
  67. break;
  68. case EfunboxPayInterfaces.PAY_ERROR:
  69. ToastUtil.showToast("支付失败");
  70. break;
  71. case EfunboxPayInterfaces.PAY_CANCEL:
  72. ToastUtil.showToast("取消支付");
  73. break;
  74. case 0xffbcd14:
  75. //微信支付
  76. try {
  77. String jsonmessage = msg.obj.toString();
  78. if (jsonmessage != null && jsonmessage.length() > 0) {
  79. JSONObject json = new JSONObject(jsonmessage);
  80. Logger.e("json:" + json);
  81. if (null != json) {
  82. PayReq req = new PayReq();
  83. req.appId = json.getString("appid");
  84. req.partnerId = json.getString("partnerid");
  85. req.prepayId = json.getString("prepayid");
  86. req.nonceStr = json.getString("noncestr");
  87. req.timeStamp = json.getString("timestamp");
  88. req.packageValue = json.getString("package");
  89. req.sign = json.getString("sign");
  90. PayInit.getInstance().WX_API.sendReq(req);
  91. } else {
  92. Logger.e("返回错误" + json.getString("retmsg"));
  93. mView.getActivity().finish();
  94. }
  95. } else {
  96. Logger.e("服务器请求错误");
  97. mView.getActivity().finish();
  98. }
  99. } catch (Exception e) {
  100. Logger.e("异常:" + e.getMessage());
  101. mView.getActivity().finish();
  102. }
  103. break;
  104. case 0xffbcd15:
  105. //支付宝支付
  106. PayResult payResult = new PayResult((Map<String, String>) msg.obj);
  107. String resultInfo = payResult.getResult();// 同步返回需要验证的信息
  108. String resultStatus = payResult.getResultStatus();
  109. Logger.e("resultInfo:" + resultInfo);
  110. Logger.e("resultStatus:" + resultStatus);
  111. Message alimsg = new Message();
  112. alimsg.what = MainPersenter.PAY_RESULT;
  113. // 判断resultStatus 为9000则代表支付成功
  114. if (TextUtils.equals(resultStatus, "9000")) {
  115. // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
  116. // ToastUtil.showToast( "支付成功");
  117. alimsg.obj = 0;
  118. } else {
  119. // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
  120. // CustomToast.showToast(mContext, "支付失败", 3000);
  121. alimsg.obj = -11;
  122. }
  123. MainPersenter.mPersenterHandler.sendMessage(alimsg);
  124. break;
  125. }
  126. return false;
  127. }
  128. });
  129. }
  130. interface PayIPersenter extends BasePersenter {
  131. void WeChatPay(String json);
  132. void ALIPay(String orderInfo);
  133. }