
付款项目使用springMvc + Dubbo架构实现,并且仅提供外部接口.
换句话说,为什么微信支付比支付宝晚一些. 一句话,它很忙了一段时间,然后没有时间整理. 最近,在完成支付宝付款后,我们还整理了微信付款.
再次,微信支付的DEMO基本上为零,并且在网上找到了很多代码(也许我已经仔细找到了API).

个人目前不允许使用代码扫描付款,其中包括支付宝的直接个人帐户相关服务也已取消. 因此,必须有一个微信支付商户平台. 我不知道该如何申请微信支付java开发详细,只需使用即可.
商家平台与微信公众账号绑定结合使用. 具体操作已经绑定,您只需要在这里使用即可.
场景介绍

用户在各种情况下扫描商家显示的QR码以进行付款.
第1步: 商家根据微信支付规则(参见图6.1)为不同商品生成不同的QR码,这些规则显示在各种场景中,供用户扫描和购买.
步骤2: 在微信上扫描QR码(见图6.2)后,用户获取商品的支付信息并指导用户完成支付(见图6.3).

支付二维码图6.1支付二维码打开微信扫描二维码图6.2打开微信扫描二维码确认支付页面图6.3确认支付页面
步骤(3): 用户确认付款并输入付款密码(见图6.4).
步骤(4): 付款完成后,将提示用户成功付款(如图6.5所示),将通知商人背景付款成功,然后处理发货. <

用户确认付款并输入密码. 图6.4用户确认付款并输入密码. 付款成功. 图6.5付款成功.
ConfigUtil参数配置:
import java.util.Map;
import java.util.ResourceBundle;
import java.util.SortedMap;
import java.util.TreeMap;
/**
* 相关配置参数
* 创建者 张志朋
* 创建时间 2016年9月28日
*
*/
public class ConfigUtil {
/**
* 服务号相关信息
*/
public final static String APP_ID = "2016";//服务号的应用ID
public final static String APP_SECRET = "2016";//服务号的应用密钥
public final static String TOKEN = "weixinCourse";//服务号的配置token
public final static String MCH_ID = "2016";//商户号
public final static String API_KEY = "2016";//API密钥
public final static String SIGN_TYPE = "MD5";//签名加密方式
public final static String CERT_PATH = "apiclient_cert.p12";//微信支付证书存放路径地址
static ResourceBundle resource = ResourceBundle.getBundle("config");
//微信支付统一接口的回调action
public final static String NOTIFY_URL = resource.getString("WEIXIN_NOTIFY_URL");
/**
* 微信基础接口地址
*/
//获取token接口(GET)
public final static String TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
//oauth2授权接口(GET)
public final static String OAUTH2_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
//刷新access_token接口(GET)
public final static String REFRESH_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN";
// 菜单创建接口(POST)
public final static String MENU_CREATE_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
// 菜单查询(GET)
public final static String MENU_GET_URL = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN";
// 菜单删除(GET)
public final static String MENU_DELETE_URL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN";
/**
* 微信支付接口地址
*/
//微信支付统一接口(POST)
public final static String UNIFIED_ORDER_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder";
//微信退款接口(POST)
public final static String REFUND_URL = "https://api.mch.weixin.qq.com/secapi/pay/refund";
//订单查询接口(POST)
public final static String CHECK_ORDER_URL = "https://api.mch.weixin.qq.com/pay/orderquery";
//关闭订单接口(POST)
public final static String CLOSE_ORDER_URL = "https://api.mch.weixin.qq.com/pay/closeorder";
//退款查询接口(POST)
public final static String CHECK_REFUND_URL = "https://api.mch.weixin.qq.com/pay/refundquery";
//对账单接口(POST)
public final static String DOWNLOAD_BILL_URL = "https://api.mch.weixin.qq.com/pay/downloadbill";
//短链接转换接口(POST)
public final static String SHORT_URL = "https://api.mch.weixin.qq.com/tools/shorturl";
//接口调用上报接口(POST)
public final static String REPORT_URL = "https://api.mch.weixin.qq.com/payitil/report";
public static void commonParams(SortedMap<Object, Object> packageParams){
// 账号信息
String appid = ConfigUtil.APP_ID; // appid
String mch_id = ConfigUtil.MCH_ID; // 商业号
// 生成随机字符串
String currTime = PayCommonUtil.getCurrTime();
String strTime = currTime.substring(8, currTime.length());
String strRandom = PayCommonUtil.buildRandom(4) + "";
String nonce_str = strTime + strRandom;
packageParams.put("appid", appid);// 公众账号ID
packageParams.put("mch_id", mch_id);// 商户号
packageParams.put("nonce_str", nonce_str);// 随机字符串
}
/**
* 该接口主要用于扫码原生支付模式一中的二维码链接转成短链接(weixin://wxpay/s/XXXXXX),减小二维码数据量,提升扫描速度和精确度。
* @Author 张志朋
* @param urlCode void
* @Date 2016年10月26日
* 更新日志
* 2016年10月26日 张志朋 首次创建
*
*/
@SuppressWarnings("rawtypes")
public static void shorturl(String urlCode){
try {
String key = ConfigUtil.API_KEY; // key
SortedMap<Object, Object> packageParams = new TreeMap<Object, Object>();
ConfigUtil.commonParams(packageParams);
packageParams.put("long_url", urlCode);// URL链接
String sign = PayCommonUtil.createSign("UTF-8", packageParams, key);
packageParams.put("sign", sign);// 签名
String requestXML = PayCommonUtil.getRequestXml(packageParams);
String resXml = HttpUtil.postData(ConfigUtil.SHORT_URL, requestXML);
Map map = XMLUtil.doXMLParse(resXml);
String returnCode = (String) map.get("return_code");
if("SUCCESS".equals(returnCode)){
String resultCode = (String) map.get("return_code");
if("SUCCESS".equals(resultCode)){
urlCode = (String) map.get("short_url");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
必需的参数APP_ID和APP_SECRET从微信公众号获得,而MCH_ID和API_KEY从商户平台获得. CERT_PATH证书是可选的微信支付java开发详细,但是如果要创建退款界面,则必须使用该证书. NOTIFY_URL是回调地址,自定义路径,但微信平台可以调用您的网址.
API文档地址
该文档具有详细的参数说明. 特定的一代需要xml解析,所以我不会在这里放过. 很多可以留作注释.
付款回调:
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-218533-1.html
真的真的很爱你
让有智慧
如果不敢打