diff --git a/app/src/main/java/com/sl/house_property/order/PayActivity.java b/app/src/main/java/com/sl/house_property/order/PayActivity.java index 3a259f3..b116a82 100644 --- a/app/src/main/java/com/sl/house_property/order/PayActivity.java +++ b/app/src/main/java/com/sl/house_property/order/PayActivity.java @@ -7,8 +7,10 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.support.annotation.Nullable; +import android.util.Log; import android.view.View; +import com.cutil.StringUtils; import com.google.gson.Gson; import com.google.gson.internal.LinkedTreeMap; import com.gyf.immersionbar.ImmersionBar; @@ -19,6 +21,9 @@ import com.tencent.mm.opensdk.modelpay.PayReq; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.WXAPIFactory; +import org.json.JSONException; +import org.json.JSONObject; + import java.util.HashMap; import java.util.Map; @@ -26,14 +31,18 @@ import entity.RegisterUser; import http.ApiConfig; import my_loader.Loader; import my_loader.Resultcode; +import pay.alipay.AliPayManager; +import rx.Subscription; import rx.functions.Action1; import tools.Config; +import utils.Constants; import utils.Md5; public class PayActivity extends BaseActivity { private Context context; private String payment_amount; private String order_number; + private Loader mGankLoader; private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent1) { @@ -122,7 +131,13 @@ public class PayActivity extends BaseActivity { @Override public void onClick(View v) { if (mDataBinding.alpay.isChecked()) { - setToast("支付宝支付" + payment_amount + "元"); + // setToast("支付宝支付" + payment_amount + "元"); + if (StringUtils.isTrimEmpty(payment_amount) || Double.parseDouble(payment_amount) <= 0) { + setToast("支付金额不能小于或等于0元"); + return; + } + startAliPay(); + return; } if (mDataBinding.wxpaly.isChecked()) { @@ -227,4 +242,109 @@ public class PayActivity extends BaseActivity { }); } + + private void startAliPay() { + RegisterUser user = + Config.getInstance(PayActivity.this).getUser(); + Map map = new HashMap<>(); + if (user != null) { + map.put("userid", user.getUserid()); + } else { + map.put("userid", 0 + ""); + } + map.put("app", "System"); + map.put("class", "System_an_ALiPayment"); + map.put("sign", Md5.md5("System" + "System_an_ALiPayment" + Md5.secret)); + + getAliPayConfigDataFun(ApiConfig.BASE_URL, map, getResources().getString(R.string.requsting)); + } + private void getAliPayConfigDataFun(String myurl, Map map, String msg) { + progressDialog.setMessage(msg); + progressDialog.setCancelable(false); + progressDialog.show(); + mGankLoader = new Loader(); + Subscription subscription = mGankLoader.getMovie(myurl, map).subscribe(new Action1() { + @Override + public void call(Resultcode resultcode) { + progressDialog.dismiss(); + if (!(resultcode.status == 0)) { + setToast(1, resultcode.msg); + } + if (resultcode.status == 0) { + Gson gs = new Gson(); + LinkedTreeMap adta = (LinkedTreeMap) resultcode.data; + String s = gs.toJson(adta); + Log.e("支付宝接口返回值==",s); + String ssd = gs.toJson(adta); + try { + JSONObject jsonObject = new JSONObject(s); + String billNumber = jsonObject.getString("bill_number"); + Log.e("支付宝billNumber值==",billNumber); + JSONObject playmentJsonObj = jsonObject.getJSONObject("payment"); + String appID = playmentJsonObj.getString("partner"); + Log.e("支付宝appID值==",appID); + String pid = playmentJsonObj.getString("seller"); + Log.e("支付宝pid值==",pid); + String privateKey = playmentJsonObj.getString("privateKey"); + Log.e("支付宝privateKey值==",privateKey); + + // execAliPay(appID, pid, privateKey, billNumber); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + + }, new Action1() { + @Override + public void call(Throwable throwable) { + progressDialog.dismiss(); + setToast(2, getString(R.string.getdatafailure)); + throwable.printStackTrace(); + } + }); + + addSubscription(subscription); + } + + private void execAliPay(String appID, String pid, String privateKey, final String billNumber) { + AliPayManager aliPayManager = new AliPayManager(PayActivity.this, appID, pid, privateKey, new AliPayManager.PayResultCallback() { + @Override + public void payResutl(Boolean isSuc) { + if (isSuc) { + // 支付成功,返回相应结果页面 + Intent intent = new Intent(); + //设置返回数据 + setResult(Constants.PayResultCode.OK, intent); + intent.putExtra("payNumber", billNumber); + finish(); + } + } + }); + + RegisterUser user = + Config.getInstance(PayActivity.this).getUser(); + String userId = user.getUserid(); + + String feeCategory = getIntent().getStringExtra("feeCategory"); + String tradeNo = ""; + String notifyUrl = ""; + if (StringUtils.equalsIgnoreCase(feeCategory, Constants.FeeCategory.HOUSEKEEPING)) { + notifyUrl = ApiConfig.CALLBACK_HOUSEKEEPING_PAY; + tradeNo = getIntent().getStringExtra("serve_order_number"); + } else if (StringUtils.equalsIgnoreCase(feeCategory, Constants.FeeCategory.PROPERTY_FEE)) { + String userHomeId = getIntent().getStringExtra("userHomeId"); + String feeType = getIntent().getStringExtra("feeType"); + tradeNo = billNumber + "o" + userId + "o" + userHomeId + "o" + feeType; + notifyUrl = ApiConfig.CALLBACK_PROPERTY_PAY; + } else if (StringUtils.equalsIgnoreCase(feeCategory, Constants.FeeCategory.RECHARGE)) { + tradeNo = billNumber + "o" + userId; + notifyUrl = ApiConfig.CALLBACK_RECHARGE_PAY; + } else if (StringUtils.equalsIgnoreCase(feeCategory, Constants.FeeCategory.PARKING_FEE)) { + notifyUrl = ApiConfig.CALLBACK_TEMP_STOP_PAY; + tradeNo = getIntent().getStringExtra("orderSn"); + } + //String number = mDataBinding.number.getText().toString(); + aliPayManager.startPay("", "", tradeNo, payment_amount, notifyUrl); + } } diff --git a/app/src/main/java/com/sl/house_property/order/SettleActivity.java b/app/src/main/java/com/sl/house_property/order/SettleActivity.java index d4f7ca4..fb36801 100644 --- a/app/src/main/java/com/sl/house_property/order/SettleActivity.java +++ b/app/src/main/java/com/sl/house_property/order/SettleActivity.java @@ -253,7 +253,7 @@ public class SettleActivity extends BaseActivity { private String totalAmount = "0.00"; private String consignee_id; private String goods_user_id; - + //提交订单的方法 private void submit() { progressDialog.setMessage("下单中"); progressDialog.show();