Commit 341c51ce authored by zhang_z's avatar zhang_z

提交;

parent 9a4a1882
...@@ -3,28 +3,45 @@ package com.xingdata.zxpay.pax; ...@@ -3,28 +3,45 @@ package com.xingdata.zxpay.pax;
import android.util.SparseArray; import android.util.SparseArray;
import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.TimeUtils; import com.blankj.utilcode.util.TimeUtils;
import com.xingdata.zxpay.PayCenter; import com.xingdata.zxpay.PayCenter;
import com.xingdata.zxpay.api.RetryHelper; import com.xingdata.zxpay.model.Shopppp;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Locale; import java.util.Locale;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class Factory extends com.xingdata.zxpay.api.Factory { public class PaxFactory extends com.xingdata.zxpay.api.Factory {
private static SimpleDateFormat format = new SimpleDateFormat("yyyymmddhhmmss", Locale.getDefault()); private PaxFactory() {
private static SparseArray<String> orderMap = new SparseArray<>(); mShopppp = JSON.parseObject(PayCenter.getInstance().mShoppppJson, Shopppp.class);
}
private static class PaxFactoryHolder {
private static final PaxFactory INSTANCE = new PaxFactory();
}
public static <T> Observable<T> run(Observable<T> observable) { public static PaxFactory getInstance() {
return observable.subscribeOn(Schedulers.io()) return PaxFactory.PaxFactoryHolder.INSTANCE;
.observeOn(AndroidSchedulers.mainThread())
.retryWhen(new RetryHelper(C.RETRY_COUNT, C.RETRY_DELAY_TIME));
} }
/**
* 交易基本信息
*/
Shopppp mShopppp;
/**
* 时间
*/
private SimpleDateFormat format = new SimpleDateFormat("yyyymmddhhmmss", Locale.getDefault());
/**
* 订单
*/
private SparseArray<String> orderMap = new SparseArray<>();
/** /**
* 条码支付 * 条码支付
* *
...@@ -33,21 +50,21 @@ public class Factory extends com.xingdata.zxpay.api.Factory { ...@@ -33,21 +50,21 @@ public class Factory extends com.xingdata.zxpay.api.Factory {
* @param totalAmount 总金额(单位元) * @param totalAmount 总金额(单位元)
* @return 交易结果 * @return 交易结果
*/ */
public static Observable<com.xingdata.zxpay.api.Response> microPay(int payChannel, String authCode, String totalAmount) { public Observable<com.xingdata.zxpay.api.Response> microPay(int payChannel, String authCode, String totalAmount) {
Request request = Request.create(C.METHOD.MICROPAY); Request request = Request.create(C.METHOD.MICROPAY);
request.setOutTransactionNo(PayCenter.getInstance().mShopppp.getPosppp().getHposTrace()); request.setOutTransactionNo(mShopppp.getPosppp().getHposTrace());
request.setTimeStart(TimeUtils.getNowString(format)); request.setTimeStart(TimeUtils.getNowString(format));
request.setAuthCode(authCode); request.setAuthCode(authCode);
request.setTotalAmount(totalAmount); request.setTotalAmount(totalAmount);
switch (payChannel) { switch (payChannel) {
case com.xingdata.zxpay.C.PAY_CHANNEL.ALI: case com.xingdata.zxpay.C.PAY_CHANNEL.ALI:
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyAlipay()); request.setKey(mShopppp.getHshopKeyAlipay());
break; break;
case com.xingdata.zxpay.C.PAY_CHANNEL.WECHAT: case com.xingdata.zxpay.C.PAY_CHANNEL.WECHAT:
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyWechat()); request.setKey(mShopppp.getHshopKeyWechat());
break; break;
case com.xingdata.zxpay.C.PAY_CHANNEL.BANK: case com.xingdata.zxpay.C.PAY_CHANNEL.BANK:
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyUnipay()); request.setKey(mShopppp.getHshopKeyUnipay());
break; break;
} }
request.sign(); request.sign();
...@@ -63,27 +80,26 @@ public class Factory extends com.xingdata.zxpay.api.Factory { ...@@ -63,27 +80,26 @@ public class Factory extends com.xingdata.zxpay.api.Factory {
* @param totalAmount 支付金额 * @param totalAmount 支付金额
* @return 交易结果 * @return 交易结果
*/ */
public static Observable<com.xingdata.zxpay.api.Response> qrPay(int payChannel, String totalAmount) { public Observable<com.xingdata.zxpay.api.Response> qrPay(int payChannel, String totalAmount) {
Request request = Request.create(C.METHOD.QRPAY); Request request = Request.create(C.METHOD.QRPAY);
request.setOutTransactionNo(PayCenter.getInstance().mShopppp.getPosppp().getHposTrace()); request.setOutTransactionNo(mShopppp.getPosppp().getHposTrace());
request.setTimeStart(TimeUtils.getNowString(format)); request.setTimeStart(TimeUtils.getNowString(format));
request.setTotalAmount(totalAmount); request.setTotalAmount(totalAmount);
switch (payChannel) { switch (payChannel) {
case com.xingdata.zxpay.C.PAY_CHANNEL.ALI: case com.xingdata.zxpay.C.PAY_CHANNEL.ALI:
request.setTradeType(C.TRADE_TYPE.ALI); request.setTradeType(C.TRADE_TYPE.ALI);
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyAlipay()); request.setKey(mShopppp.getHshopKeyAlipay());
break; break;
case com.xingdata.zxpay.C.PAY_CHANNEL.WECHAT: case com.xingdata.zxpay.C.PAY_CHANNEL.WECHAT:
request.setTradeType(C.TRADE_TYPE.WECHAT); request.setTradeType(C.TRADE_TYPE.WECHAT);
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyWechat()); request.setKey(mShopppp.getHshopKeyWechat());
break; break;
case com.xingdata.zxpay.C.PAY_CHANNEL.BANK: case com.xingdata.zxpay.C.PAY_CHANNEL.BANK:
request.setTradeType(C.TRADE_TYPE.UNION); request.setTradeType(C.TRADE_TYPE.UNION);
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyUnipay()); request.setKey(mShopppp.getHshopKeyUnipay());
break; break;
} }
request.sign(); request.sign();
return run(Api.getInstance().service.action(request)) return run(Api.getInstance().service.action(request))
.map(new ResultFilter()) .map(new ResultFilter())
.doFinally(() -> orderMap.put(request.getOutTransactionNo(), request.getTimeStart())); .doFinally(() -> orderMap.put(request.getOutTransactionNo(), request.getTimeStart()));
...@@ -95,19 +111,19 @@ public class Factory extends com.xingdata.zxpay.api.Factory { ...@@ -95,19 +111,19 @@ public class Factory extends com.xingdata.zxpay.api.Factory {
* *
* @return 查询结果 * @return 查询结果
*/ */
public static Observable<com.xingdata.zxpay.api.Response> query(int payChannel) { public Observable<com.xingdata.zxpay.api.Response> query(int payChannel) {
Request request = Request.create(C.METHOD.QUERY); Request request = Request.create(C.METHOD.QUERY);
request.setOutTransactionNo(PayCenter.getInstance().mShopppp.getPosppp().getHposTrace()); request.setOutTransactionNo(mShopppp.getPosppp().getHposTrace());
request.setTimeStart(orderMap.get(request.getOutTransactionNo())); request.setTimeStart(orderMap.get(request.getOutTransactionNo()));
switch (payChannel) { switch (payChannel) {
case com.xingdata.zxpay.C.PAY_CHANNEL.ALI: case com.xingdata.zxpay.C.PAY_CHANNEL.ALI:
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyAlipay()); request.setKey(mShopppp.getHshopKeyAlipay());
break; break;
case com.xingdata.zxpay.C.PAY_CHANNEL.WECHAT: case com.xingdata.zxpay.C.PAY_CHANNEL.WECHAT:
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyWechat()); request.setKey(mShopppp.getHshopKeyWechat());
break; break;
case com.xingdata.zxpay.C.PAY_CHANNEL.BANK: case com.xingdata.zxpay.C.PAY_CHANNEL.BANK:
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyUnipay()); request.setKey(mShopppp.getHshopKeyUnipay());
break; break;
} }
request.sign(); request.sign();
......
<resources> <resources>
<string name="app_name">pay</string> <string name="app_name">pay</string>
<string name="unknown_channels">未知渠道</string>
</resources> </resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment