All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.binarywang.wxpay.bean.result.CombineTransactionsResult Maven / Gradle / Ivy

The newest version!
package com.github.binarywang.wxpay.bean.result;

import com.github.binarywang.wxpay.bean.result.enums.TradeTypeEnum;
import com.github.binarywang.wxpay.v3.util.SignUtils;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.security.PrivateKey;

/**
 * 
 * 使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。目前最多一次可支持50笔订单进行合单支付。
 * 参考文档:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_1.shtml
 * https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_2.shtml
 * https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_3.shtml
 * https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_4.shtml
 * https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_5.shtml
 * 
* * @author thinsstar */ @Data @NoArgsConstructor public class CombineTransactionsResult implements Serializable { private static final long serialVersionUID = 1L; /** *
   * 字段名:预支付交易会话标识(APP支付、JSAPI和小程序支付返回)
   * 变量名:prepay_id
   * 是否必填:是
   * 类型:string[1,64]
   * 描述:
   *  数字和字母。微信生成的预支付会话标识,用于后续接口调用使用,该值有效期为2小时。
   *  示例值:wx201410272009395522657a690389285100
   * 
*/ @SerializedName("prepay_id") private String prepayId; /** *
   * 字段名:支付跳转链接(H5支付返回)
   * 变量名:h5_url
   * 是否必填:是
   * 类型:string[1,512]
   * 描述:
   *  支付跳转链接,h5_url的有效期为5分钟
   *  示例值:https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241
   * 
*/ @SerializedName("h5_url") private String h5Url; /** *
   * 字段名:二维码链接(NATIVE支付返回)
   * 变量名:h5_url
   * 是否必填:是
   * 类型:string[1,512]
   * 描述:
   *  二维码链接
   *  示例值:weixin://pay.weixin.qq.com/bizpayurl/up?pr=NwY5Mz9&groupid=00
   * 
*/ @SerializedName("code_url") private String codeUrl; @Data @Accessors(chain = true) public static class JsapiResult implements Serializable { private static final long serialVersionUID = -3485718620283251481L; private String appId; private String timeStamp; private String nonceStr; private String packageValue; private String signType; private String paySign; private String getSignStr() { return String.format("%s\n%s\n%s\n%s\n", appId, timeStamp, nonceStr, packageValue); } } @Data @Accessors(chain = true) public static class AppResult implements Serializable { private static final long serialVersionUID = -4462225641904225011L; private String appid; private String partnerid; private String prepayid; private String packageValue; private String noncestr; private String timestamp; } public T getPayInfo(TradeTypeEnum tradeType, String appId, String mchId, PrivateKey privateKey) { String timestamp = String.valueOf(System.currentTimeMillis() / 1000); String nonceStr = SignUtils.genRandomStr(); switch (tradeType) { case JSAPI: JsapiResult jsapiResult = new JsapiResult(); jsapiResult.setAppId(appId).setTimeStamp(timestamp) .setPackageValue("prepay_id=" + this.prepayId).setNonceStr(nonceStr) //签名类型,默认为RSA,仅支持RSA。 .setSignType("RSA").setPaySign(SignUtils.sign(jsapiResult.getSignStr(), privateKey)); return (T) jsapiResult; case H5: return (T) this.h5Url; case APP: AppResult appResult = new AppResult(); appResult.setAppid(appId).setPrepayid(this.prepayId).setPartnerid(mchId) .setNoncestr(nonceStr).setTimestamp(timestamp) //暂填写固定值Sign=WXPay .setPackageValue("Sign=WXPay"); return (T) appResult; case NATIVE: return (T) this.codeUrl; default: throw new IllegalStateException("Unexpected value: " + tradeType); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy