微信支付-扫码支付(模式二)

来源:转载

接口文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1


【模式二】:商户后台系统调用微信支付【统一下单API】生成预付交易,将接口返回的链接生成二维码,用户扫码后输入密码完成支付交易。注意:该模式的预付单有效期为2小时,过期后无法支付。


前期准备

设置支付目录



主要填写好支付回调URL


统一下单接口

URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder


/**
* 扫码支付 统一下单 模式二
* @param body 商品简单描述
* @param outTradeNo 订单号
* @param totalFee 总金额 分
* @param spbillCreateIp 下单人ip
* @param productId 商品 id
* @return 微信返回的xml
*/
public static Map unifiedorderOfScan(String body, String outTradeNo, Integer totalFee, String spbillCreateIp, String productId, SetBean setBean){
Map params = new HashMap();
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 result = xmlToMap(xmlResult);
return result;
//返回的map
// nonce_strYhXsQPviD5PCbivy
// code_urlweixin://wxpay/bizpayurl?pr=Xeb9VH5 将此链接生成二维码 用户扫码即可支付
// appidwxbXXXXXXXXXXXX
// signC89118E990BE0A3132670CB269E33937
// trade_typeNATIVE
// return_msgOK
// result_codeSUCCESS
// mch_id12345678914
// return_codeSUCCESS
// prepay_idwx201704281819305c471c92810030210111
}

分享给朋友:
您可能感兴趣的文章:
随机阅读: