微信支付 商户API密钥key的生成与设置

设置商户号支付密钥方法如下:
1. 申请通过审核后,打开微信发来的邮件。
直接获取 微信支付商户号(接口文档中的商户号MCHID);(也叫  受理商ID 填写到后台)。

商户支付密钥key 按以下步骤自己设置生成。

 

2 点击访问 新商户平台 http://mch.weixin.qq.com 或 https://pay.weixin.qq.com ,用账号和密码登录。并 安装证书。
step 1

blob.png
step 2 点击确定。

blob.png
step 3 填写验证信息。

blob.png
step 4 填写手机验证码。

blob.png
step 5 证书安装成功。

blob.png
blob.png
3 配置密钥。
step1

blob.png
step2

blob.png
step3 自己设置32位密钥,推荐使用在线密码生成器生成(个人自己写的无法发起支付),http://suijimimashengcheng.51240.com 或 http://www.sexauth.com/

blob.png
step4

blob.png
调用微信支付API生成微信支付URL,需要先进行以下步骤: 1. 获取微信支付的统一下单接口,该接口用于生成预支付订单并返回支付URL; 2. 将生成的预支付订单信息发送给微信支付平台,获得预支付订单号; 3. 通过预支付订单号生成微信支付URL。 下面是一个简单的Java代码示例,用于生成微信支付URL: ```java import java.util.SortedMap; import java.util.TreeMap; import java.util.UUID; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class WechatPay { // 微信支付统一下单接口 private static final String UNIFIED_ORDER_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder"; // 微信支付商户号 private static final String MCH_ID = "your_mch_id"; // 微信支付API密钥 private static final String API_KEY = "your_api_key"; // 微信支付回调URL private static final String NOTIFY_URL = "https://example.com/notify"; /** * 生成微信支付URL * @param body 商品描述 * @param outTradeNo 商户订单号 * @param totalFee 订单总金额,单位为分 * @param spbillCreateIp 终端IP * @return 微信支付URL */ public static String generatePayUrl(String body, String outTradeNo, int totalFee, String spbillCreateIp) throws Exception { SortedMap<String, String> params = new TreeMap<String, String>(); params.put("appid", "your_appid"); params.put("mch_id", MCH_ID); params.put("nonce_str", UUID.randomUUID().toString().replace("-", "")); params.put("body", body); params.put("out_trade_no", outTradeNo); params.put("total_fee", String.valueOf(totalFee)); params.put("spbill_create_ip", spbillCreateIp); params.put("notify_url", NOTIFY_URL); params.put("trade_type", "NATIVE"); // 生成签名 String sign = generateSign(params); params.put("sign", sign); // 发送请求 String xml = HttpUtils.post(UNIFIED_ORDER_URL, XmlUtils.toXml(params)); // 解析响应 SortedMap<String, String> result = XmlUtils.toMap(xml); if (result.get("return_code").equals("SUCCESS")) { String prepayId = result.get("prepay_id"); return generatePayUrl(prepayId); } else { throw new Exception(result.get("return_msg")); } } /** * 生成签名 * @param params 参数列表 * @return 签名 */ private static String generateSign(SortedMap<String, String> params) throws NoSuchAlgorithmException { StringBuilder sb = new StringBuilder(); for (String key : params.keySet()) { String value = params.get(key); if (value != null && !value.isEmpty() && !key.equals("sign")) { sb.append(key).append("=").append(value).append("&"); } } sb.append("key=").append(API_KEY); String str = sb.toString(); MessageDigest md = MessageDigest.getInstance("MD5"); byte[] bytes = md.digest(str.getBytes()); StringBuilder result = new StringBuilder(); for (byte b : bytes) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) { result.append('0'); } result.append(hex); } return result.toString().toUpperCase(); } /** * 生成微信支付URL * @param prepayId 预支付订单号 * @return 微信支付URL */ private static String generatePayUrl(String prepayId) { SortedMap<String, String> params = new TreeMap<String, String>(); params.put("appid", "your_appid"); params.put("mch_id", MCH_ID); params.put("time_stamp", String.valueOf(System.currentTimeMillis() / 1000)); params.put("nonce_str", UUID.randomUUID().toString().replace("-", "")); params.put("prepay_id", prepayId); params.put("sign_type", "MD5"); // 生成签名 String sign = generateSign(params); params.put("sign", sign); // 生成支付URL StringBuilder sb = new StringBuilder(); sb.append("weixin://wxpay/bizpayurl?"); for (String key : params.keySet()) { String value = params.get(key); if (value != null && !value.isEmpty()) { sb.append(key).append("=").append(value).append("&"); } } sb.setLength(sb.length() - 1); return sb.toString(); } } ``` 在上述代码中,我们使用了HttpUtils和XmlUtils两个工具类。HttpUtils用于发送HTTP请求,XmlUtils用于将XML格式的字符串转换为SortedMap。你需要根据自己的实际情况实现这两个工具类。 使用该代码,你可以像下面这样生成微信支付URL: ```java String payUrl = WechatPay.generatePayUrl("商品描述", "商户订单号", 100, "终端IP"); System.out.println(payUrl); ``` 其中,参数分别为商品描述、商户订单号、订单总金额(单位为分)和终端IP。执行完上述代码后,你将获得一个微信支付URL,该URL可以用于在微信客户端中打开支付页面。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值