接口文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1php
【模式二】:商户后台系统调用微信支付【统一下单API】生成预付交易,将接口返回的连接生成二维码,用户扫码后输入密码完成支付交易。注意:该模式的预付单有效期为2小时,过时后没法支付。java
设置支付目录api
主要填写好支付回调URL微信
URL地址:https://api.mch.weixin.qq.com/pay/unifiedorderapp
/** * 扫码支付 统一下单 模式二 * @param body 商品简单描述 * @param outTradeNo 订单号 * @param totalFee 总金额 分 * @param spbillCreateIp 下单人ip * @param productId 商品 id * @return 微信返回的xml */ public static Map<String, String> unifiedorderOfScan(String body, String outTradeNo, Integer totalFee, String spbillCreateIp, String productId, SetBean setBean){ Map<String, String> params = new HashMap<String, String>(); params.put("appid", setBean.getAppId()); params.put("mch_id", setBean.getMchId()); params.put("body", body); // 商品ID trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。 params.put("product_id", productId); // 商户订单号 商户系统内部的订单号,32个字符内、可包含字母, 其余说明见商户订单号 params.put("out_trade_no",outTradeNo); params.put("total_fee", String.valueOf(totalFee));//支付总金额 单位 分 params.put("spbill_create_ip", spbillCreateIp);//下单用户的客户端ip params.put("trade_type","NATIVE"); params.put("nonce_str", nonceStr());//随机字符串 params.put("notify_url", setBean.getNotifyUrl());//支付成功后的通知地址 String sign=createSign(params,setBean.getPayKey());//生成请求签名 params.put("sign",sign); String xmlResult= HttpKit.post(unifiedOrderUrl,toXml(params));//统一下单返回的结果 Map<String, String> result = xmlToMap(xmlResult); return result; //返回的map // nonce_str YhXsQPviD5PCbivy // code_url weixin://wxpay/bizpayurl?pr=Xeb9VH5 将此连接生成二维码 用户扫码便可支付 // appid wxbXXXXXXXXXXXX // sign C89118E990BE0A3132670CB269E33937 // trade_type NATIVE // return_msg OK // result_code SUCCESS // mch_id 12345678914 // return_code SUCCESS // prepay_id wx201704281819305c471c92810030210111 }