准备重构统一下单接口方法

This commit is contained in:
Binary Wang 2016-09-26 00:12:37 +08:00
parent 15e27003ea
commit 6a19062e36
3 changed files with 217 additions and 6 deletions

View File

@ -8,6 +8,7 @@ import me.chanjar.weixin.mp.bean.pay.WxMpPayRefundResult;
import me.chanjar.weixin.mp.bean.pay.WxMpPayResult;
import me.chanjar.weixin.mp.bean.pay.WxRedpackResult;
import me.chanjar.weixin.mp.bean.pay.WxSendRedpackRequest;
import me.chanjar.weixin.mp.bean.pay.WxUnifiedOrderRequest;
import me.chanjar.weixin.mp.bean.result.WxMpPrepayIdResult;
/**
@ -17,7 +18,6 @@ import me.chanjar.weixin.mp.bean.result.WxMpPrepayIdResult;
*/
public interface WxMpPayService {
/**
* 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)
* 在发起微信支付前需要调用统一下单接口获取"预支付交易会话标识"
@ -39,12 +39,22 @@ public interface WxMpPayService {
* 在发起微信支付前需要调用统一下单接口获取"预支付交易会话标识"
*
* @param parameters All required/optional parameters for weixin payment
* @deprecated use me.chanjar.weixin.mp.api.WxMpPayService.unifiedOrder(WxUnifiedOrderRequest) instead
*/
@Deprecated
WxMpPrepayIdResult getPrepayId(Map<String, String> parameters);
/**
* 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)
* 在发起微信支付前需要调用统一下单接口获取"预支付交易会话标识"
* 接口地址https://api.mch.weixin.qq.com/pay/unifiedorder
*
*/
WxMpPrepayIdResult unifiedOrder(WxUnifiedOrderRequest request);
/**
* 该接口调用统一下单接口并拼装发起支付请求需要的参数
* 详见http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82
* 详见http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN
*
* @param parameters the required or optional parameters
*/
@ -52,7 +62,7 @@ public interface WxMpPayService {
/**
* 该接口调用统一下单接口并拼装NATIVE发起支付请求需要的参数
* 详见http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82
* 详见http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN
* tradeType 交易类型 NATIVE 其他交易类型JSAPIAPPWAP
*
* @param productId 商户商品ID
@ -61,14 +71,14 @@ public interface WxMpPayService {
* @param body 商品描述
* @param ip 发起支付的客户端IP
* @param notifyUrl 通知地址
* @deprecated Use me.chanjar.weixin.mp.api.WxMpService.getPayInfo(Map<String, String>) instead
* @deprecated Use me.chanjar.weixin.mp.api.WxMpPayService.getPayInfo(Map<String, String>) instead
*/
@Deprecated
Map<String, String> getNativePayInfo(String productId, String outTradeNo, double amt, String body, String ip, String notifyUrl) throws WxErrorException;
/**
* 该接口调用统一下单接口并拼装JSAPI发起支付请求需要的参数
* 详见http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82
* 详见http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN
* tradeType 交易类型 JSAPI(其他交易类型NATIVEAPPWAP)
*
* @param openId 支付人openId
@ -77,7 +87,7 @@ public interface WxMpPayService {
* @param body 商品描述
* @param ip 发起支付的客户端IP
* @param notifyUrl 通知地址
* @deprecated Use me.chanjar.weixin.mp.api.WxMpService.getPayInfo(Map<String, String>) instead
* @deprecated Use me.chanjar.weixin.mp.api.WxMpPayService.getPayInfo(Map<String, String>) instead
*/
@Deprecated
Map<String, String> getJsapiPayInfo(String openId, String outTradeNo, double amt, String body, String ip, String notifyUrl) throws WxErrorException;
@ -137,6 +147,7 @@ public interface WxMpPayService {
* </pre>
* <partnerId></partnerId>微信商户平台ID
* <partnerKey></partnerKey>商户平台设置的API密钥
* @deprecated use me.chanjar.weixin.mp.api.WxMpPayService.sendRedpack(WxSendRedpackRequest) instead
*
*/
@Deprecated

View File

@ -56,6 +56,7 @@ public class WxMpPayServiceImpl implements WxMpPayService {
}
@Override
@Deprecated
public WxMpPrepayIdResult getPrepayId(String openId, String outTradeNo,
double amt, String body, String tradeType, String ip,
String callbackUrl) {
@ -144,6 +145,7 @@ public class WxMpPayServiceImpl implements WxMpPayService {
}
@Override
@Deprecated
public Map<String, String> getJsapiPayInfo(String openId, String outTradeNo,
double amt, String body, String ip, String callbackUrl)
throws WxErrorException {
@ -164,6 +166,7 @@ public class WxMpPayServiceImpl implements WxMpPayService {
}
@Override
@Deprecated
public Map<String, String> getNativePayInfo(String productId,
String outTradeNo, double amt, String body, String ip, String callbackUrl)
throws WxErrorException {

View File

@ -0,0 +1,197 @@
package me.chanjar.weixin.mp.bean.pay;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
* 统一下单请求参数对象
* Created by Binary Wang on 2016/9/25.
* @author binarywang (https://github.com/binarywang)
*/
@XStreamAlias("xml")
public class WxUnifiedOrderRequest {
/**
* <pre>
* 公众账号ID
* appid
*
* String(32)
* wxd678efh567hg6787
* 微信分配的公众账号ID企业号corpid即为此appId
* </pre>
*/
/**
* <pre>
* 商户号
* mch_id
*
* String(32)
* 1230000109
* 微信支付分配的商户号
* </pre>
*/
/**
* <pre>
* 设备号
* device_info
*
* String(32)
* 013467007045764
* 终端设备号(门店号或收银设备ID)注意PC网页或公众号内支付请传"WEB"
* </pre>
*/
/**
* <pre>
* 随机字符串
* nonce_str
*
* String(32)
* 5K8264ILTKCH16CQ2502SI8ZNMTM67VS
* 随机字符串不长于32位推荐随机数生成算法
* </pre>
*/
/**
* <pre>
* 签名
* sign
*
* String(32)
* C380BEC2BFD727A4B6845133519F3AD6
* 签名详见签名生成算法
* </pre>
*/
/**
* <pre>
* 商品描述
* body
*
* String(128)
* 腾讯充值中心-QQ会员充值
* 商品简单描述该字段须严格按照规范传递具体请见参数规定
* </pre>
*/
/**
* <pre>
* 商品详情
* detail
*
* String(6000)
* { "goods_detail":[
{
"goods_id":"iphone6s_16G",
"wxpay_goods_id":"1001",
"goods_name":"iPhone6s 16G",
"goods_num":1,
"price":528800,
"goods_category":"123456",
"body":"苹果手机"
},
{
"goods_id":"iphone6s_32G",
"wxpay_goods_id":"1002",
"goods_name":"iPhone6s 32G",
"quantity":1,
"price":608800,
"goods_category":"123789",
"body":"苹果手机"
}
]
}
商品详细列表使用Json格式传输签名前请务必使用CDATA标签将JSON文本串保护起来
goods_detail []
goods_id String 必填 32 商品的编号
wxpay_goods_id String 可选 32 微信支付定义的统一商品编号
goods_name String 必填 256 商品名称
goods_num Int 必填 商品数量
price Int 必填 商品单价单位为分
goods_category String 可选 32 商品类目ID
body String 可选 1000 商品描述信息
* </pre>
*/
/**
* <pre>
* 附加数据
* attach
*
* String(127)
* 深圳分店
* 附加数据在查询API和支付通知中原样返回该字段主要用于商户携带订单的自定义数据
* </pre>
*/
/**
* <pre>
* 商户订单号
* out_trade_no
*
* String(32)
* 20150806125346
* 商户系统内部的订单号,32个字符内可包含字母, 其他说明见商户订单号
* </pre>
*/
/**
* <pre>
* 货币类型
* fee_type
*
* String(16)
* CNY
* 符合ISO 4217标准的三位字母代码默认人民币CNY其他值列表详见货币类型
* </pre>
*/
/**
* <pre>
* 总金额
* total_fee
*
* Int
* 888
* 订单总金额单位为分详见支付金额
* </pre>
*/
/**
* <pre>
* 终端IP
* spbill_create_ip
*
* String(16)
* 123.12.12.123
* APP和网页支付提交用户端ipNative支付填调用微信支付API的机器IP
* </pre>
*/
/**
* <pre> 交易起始时间 time_start String(14) 20091225091010 订单生成时间格式为yyyyMMddHHmmss如2009年12月25日9点10分10秒表示为20091225091010其他详见时间规则
* </pre>
*/
/**
* <pre> 交易结束时间 time_expire String(14) 20091227091010
* </pre>
*/
/**
* <pre> 订单失效时间格式为yyyyMMddHHmmss如2009年12月27日9点10分10秒表示为20091227091010其他详见时间规则
* 注意最短失效时间间隔必须大于5分钟
* </pre>
*/
/**
* <pre> 商品标记 goods_tag String(32) WXG 商品标记代金券或立减优惠功能的参数说明详见代金券或立减优惠
* </pre>
*/
/**
* <pre> 通知地址 notify_url String(256) http://www.weixin.qq.com/wxpay/pay.php 接收微信支付异步通知回调地址通知url必须为直接可访问的url不能携带参数
* </pre>
*/
/**
* <pre> 交易类型 trade_type String(16) JSAPI 取值如下JSAPINATIVEAPP详细说明见参数规定
* </pre>
*/
/**
* <pre> 商品ID product_id String(32) 12235413214070356458058 trade_type=NATIVE此参数必传此id为二维码中包含的商品ID商户自行定义
* </pre>
*/
/**
* <pre> 指定支付方式 limit_pay String(32) no_credit no_credit--指定不能使用信用卡支付
* </pre>
*/
/**
* <pre> 用户标识 openid String(128) oUpF8uMuAJO_M2pxb1Q9zNjWeS6o trade_type=JSAPI此参数必传用户在商户appid下的唯一标识openid如何获取可参考获取openid企业号请使用企业号OAuth2.0接口获取企业号内成员userid再调用企业号userid转openid接口进行转换
* </pre>
*/
}