cn.ipokerface.weixin.proxy.payment.AppPaymentRequest Maven / Gradle / Ivy
package cn.ipokerface.weixin.proxy.payment;
import cn.ipokerface.weixin.model.WeixinPayAccount;
import cn.ipokerface.weixin.model.payment.TradeType;
import cn.ipokerface.weixin.sign.SignType;
import cn.ipokerface.weixin.utils.DigestUtils;
import cn.ipokerface.weixin.utils.MapUtils;
import java.util.HashMap;
import java.util.Map;
/**
* Created by PokerFace
* Create Date 2019-12-28.
* Email: [email protected]
* Version 1.0.0
*
* Description:
*/
public class AppPaymentRequest extends AbstractPaymentRequest {
public AppPaymentRequest(String prePayId, WeixinPayAccount payAccount) {
super(prePayId, payAccount);
}
@Override
public TradeType getPaymentType() {
return TradeType.APP;
}
/**
* 只做查看之用,请不要尝试作为支付请求
*/
@Override
public PaymentRequest toRequestObject() {
PaymentRequest payRequest = new PaymentRequest(getPaymentAccount().getId(), "Sign=WXPay");
payRequest.setPartnerId(getPaymentAccount().getMchId());
payRequest.setPrepayId(getPrePayId());
Map map = new HashMap();
map.put("appid", payRequest.getAppId());
// 因为partnerid和prepayid在PayRequest类中是不进行序列化的
map.put("partnerid", payRequest.getPartnerId());
map.put("prepayid", payRequest.getPrepayId());
map.put("package", payRequest.getPackageInfo());
map.put("timestamp", payRequest.getTimeStamp());
map.put("noncestr", payRequest.getNonceStr());
String sign = DigestUtils.MD5(
String.format("%s&key=%s", MapUtils.toJoinString(map, false, true), getPaymentAccount().getPaySignKey()))
.toUpperCase();
payRequest.setPaySign(sign);
payRequest.setSignType(SignType.MD5);
return payRequest;
}
@Override
public String toRequestString() {
PaymentRequest payRequest = toRequestObject();
StringBuilder content = new StringBuilder();
content.append("");
content.append(String.format(" ", payRequest.getAppId()));
content.append(String.format(" ", payRequest.getPartnerId()));
content.append(String.format(" ", payRequest.getPrepayId()));
content.append(String.format(" ", payRequest.getPackageInfo()));
content.append(String.format(" ", payRequest.getNonceStr()));
content.append(String.format(" ", payRequest.getTimeStamp()));
content.append(String.format(" ", payRequest.getPaySign()));
content.append(" ");
return content.toString();
}
}