微信支付在获得prepayid之后怎么再次签名?
签名后应该调哪个接口发起支付?
java服务端
微信支付在获得prepayid之后怎么再次签名
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- sony1218 2016-07-12 01:27关注
public static String getPackage(WxPayDto tpWxPayDto) {
String openId = tpWxPayDto.getOpenId(); // 1 参数 // 订单号 String orderId = tpWxPayDto.getOrderId(); // 附加数据 原样返回 String attach = ""; // 总金额以分为单位,不带小数点 String totalFee = getMoney(tpWxPayDto.getTotalFee()); // 订单生成的机器 IP String spbill_create_ip = tpWxPayDto.getSpbillCreateIp(); // 这里notify_url是 支付完成后微信发给该链接信息,可以判断会员是否支付成功,改变订单状态等。 String notify_url = notifyurl; String trade_type = "JSAPI"; // ---必须参数 // 商户号 String mch_id = partner; // 随机字符串 String nonce_str = getNonceStr(); // 商品描述根据情况修改 String body = tpWxPayDto.getBody(); // 商户订单号 String out_trade_no = orderId; SortedMap<String, String> packageParams = new TreeMap<String, String>(); packageParams.put("appid", appid); packageParams.put("mch_id", mch_id); packageParams.put("nonce_str", nonce_str); packageParams.put("body", body); packageParams.put("attach", attach); packageParams.put("out_trade_no", out_trade_no); // 这里写的金额为1 分到时修改 packageParams.put("total_fee", totalFee); packageParams.put("spbill_create_ip", spbill_create_ip); packageParams.put("notify_url", notify_url); packageParams.put("trade_type", trade_type); packageParams.put("openid", openId); RequestHandler reqHandler = new RequestHandler(null, null); reqHandler.init(appid, appsecret, partnerkey); String sign = reqHandler.createSign(packageParams); String xml = "<xml>" + "<appid>" + appid + "</appid>" + "<mch_id>" + mch_id + "</mch_id>" + "<nonce_str>" + nonce_str + "</nonce_str>" + "<sign>" + sign + "</sign>" + "<body><![CDATA[" + body + "]]></body>" + "<out_trade_no>" + out_trade_no + "</out_trade_no>" + "<attach>" + attach + "</attach>" + "<total_fee>" + totalFee + "</total_fee>" + "<spbill_create_ip>" + spbill_create_ip + "</spbill_create_ip>" + "<notify_url>" + notify_url + "</notify_url>" + "<trade_type>" + trade_type + "</trade_type>" + "<openid>" + openId + "</openid>" + "</xml>"; String prepay_id = ""; String createOrderURL = "https://api.mch.weixin.qq.com/pay/unifiedorder"; prepay_id = new GetWxOrderno().getPayNo(createOrderURL, xml); System.out.println("获取到的预支付ID:" + prepay_id); //获取prepay_id后,拼接最后请求支付所需要的package SortedMap<String, String> finalpackage = new TreeMap<String, String>(); String timestamp = Sha1Util.getTimeStamp(); String packages = "prepay_id="+prepay_id; finalpackage.put("appId", appid); finalpackage.put("timeStamp", timestamp); finalpackage.put("nonceStr", nonce_str); finalpackage.put("package", packages); finalpackage.put("signType", "MD5"); //要签名 String finalsign = reqHandler.createSign(finalpackage); String finaPackage = "\"appId\":\"" + appid + "\",\"timeStamp\":\"" + timestamp + "\",\"nonceStr\":\"" + nonce_str + "\",\"package\":\"" + packages + "\",\"signType\" : \"MD5" + "\",\"paySign\":\"" + finalsign + "\""; System.out.println("V3 jsApi package:"+finaPackage); return finaPackage; } public static void main(String[] args) { //微信支付jsApi WxPayDto tpWxPay = new WxPayDto(); tpWxPay.setOpenId(openId); tpWxPay.setBody("商品信息"); tpWxPay.setOrderId(getNonceStr()); tpWxPay.setSpbillCreateIp("127.0.0.1"); tpWxPay.setTotalFee("0.01"); getPackage(tpWxPay); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 gradio的web端页面格式不对的问题
- ¥15 求大家看看Nonce如何配置
- ¥15 Matlab怎么求解含参的二重积分?
- ¥15 苹果手机突然连不上wifi了?
- ¥15 cgictest.cgi文件无法访问
- ¥20 删除和修改功能无法调用
- ¥15 kafka topic 所有分副本数修改
- ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
- ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
- ¥40 串口调试助手打开串口后,keil5的代码就停止了