/// <summary> /// 执行IOS支付宝逻辑。 /// </summary> /// <param name="orderStr"></param> public void AlipayIOS(string orderStr) { AlipayResultTime = 0; AlipayResultData = null; if (string.IsNullOrEmpty(orderStr)) { AlipayResultTime = Time.time; AlipayResultData = new AlipayResult(Dmm.Pay.AlipayResult.StatusFail, null, "订单数据发生错误,无法支付"); return; } #if UNITY_IOS // _ios.Alipay(orderStr, _config.AlipaySchemes); #endif }
/// <summary> /// 执行Android支付逻辑。 /// </summary> /// <param name="orderStr"></param> public void AlipayAndroid(string orderStr) { AlipayResultTime = 0; AlipayResultData = null; if (string.IsNullOrEmpty(orderStr)) { AlipayResultTime = Time.time; AlipayResultData = new AlipayResult(Dmm.Pay.AlipayResult.StatusFail, null, "订单数据发生错误,无法支付"); return; } #if UNITY_ANDROID _android.AlipayAndroid(orderStr); #endif }
private void ProcessAlipayResult(AlipayResult res) { if (res == null) { // 支付失败了,支付宝结果数据解析失败。 EnableComponent(false, false, true); SetStateTxt(string.Format("<color=red>支付失败!</color>\n如有疑问请联系下方客服QQ{0}", !string.IsNullOrEmpty(OutTradeNo) ? "\n订单号:" + OutTradeNo : "")); StopPay(); AnalyticPayFail("alipay_res_parse_error"); return; } if (StringUtil.AreEqual(res.status, AlipayResult.StatusOk)) { var param = DataUtil.ParseParameter(res.result); if (param.ContainsKey("success") && StringUtil.AreEqual("true", param["success"])) { // 支付成功。 EnableComponent(false, true, true); SetStateTxt("恭喜您,充值成功^_^\n马上请求发货"); AnalyticPayOk(); } else { EnableComponent(false, false, true); if (StateTxt) { SetStateTxt(string.Format("<color=red>支付失败!</color>\n请联系下方客服QQ{0}", !string.IsNullOrEmpty(OutTradeNo) ? "\n订单号:" + OutTradeNo : "")); } StopPay(); AnalyticPayFail("alipay_status_ok_not_success"); } } else { // 支付失败。 if (StringUtil.AreEqual(res.status, AlipayResult.StatusProcessing)) { // 订单正在处理当中。 EnableComponent(false, false, true); SetStateTxt(string.Format("<color=red>支付宝未能处理订单!</color>\n请联系下方客服QQ{0}", !string.IsNullOrEmpty(OutTradeNo) ? "\n订单号:" + OutTradeNo : "")); AnalyticPayFail("alipay_processing"); } else if (StringUtil.AreEqual(res.status, AlipayResult.StatusFail)) { // 支付失败。 EnableComponent(false, false, true); SetStateTxt(string.Format("<color=red>支付失败!{0}</color>\n请联系下方客服QQ{1}", !string.IsNullOrEmpty(res.memo) ? "\n" + res.memo : "", !string.IsNullOrEmpty(OutTradeNo) ? "\n订单号:" + OutTradeNo : "")); AnalyticPayFail("alipay_fail"); } else if (StringUtil.AreEqual(res.status, AlipayResult.StatusCanceled)) { // 玩家取消支付。 EnableComponent(false, false, true); SetStateTxt("<color=red>玩家取消订单</color>"); AnalyticPayFail("alipay_cancel"); } else if (StringUtil.AreEqual(res.status, AlipayResult.StatusNetworkError)) { // 网络出错。 EnableComponent(false, false, true); SetStateTxt("<color=red>网络出错,无法连接支付宝</color>"); AnalyticPayFail("alipay_network_broken"); } else { // 未知原因失败。 EnableComponent(false, false, true); SetStateTxt(string.Format("<color=red>支付失败!</color>\n请联系下方客服QQ{0}", !string.IsNullOrEmpty(OutTradeNo) ? "\n订单号:" + OutTradeNo : "")); AnalyticPayFail("alipay_unknown_error"); } StopPay(); } }
/// <summary> /// 接收支付宝支付的结果。 /// </summary> /// <param name="result"></param> public void AlipayResult(string result) { MyLog.InfoWithFrame(name, string.Format("alipay result: {0}", result)); AlipayResultTime = Time.time; AlipayResultData = DataUtil.ParseAlipayResult(result); }