微信小程序-商户号转账到微信余额

本文介绍了微信小程序中实现商户号转账到微信余额的条件和配置步骤,包括在商户平台的设置、证书下载、支付白名单配置。同时提供了相关代码示例,包括支付常量类、业务处理类以及辅助工具类如CertHttpUtil、MD5加密解密和XMLUtil。
摘要由CSDN通过智能技术生成

使用条件

 1、商户号(或同主体其他非服务商商户号)已入驻90日

  2、截止今日回推30天,商户号(或同主体其他非服务商商户号)连续不间断保持有交易

  3、 登录微信支付商户平台-产品中心,开通企业付款。

需要去商户平台配置

  1,企业付款到零钱需要证书,需要下载证书

  2,需要设置支付白名单,可以是ip也可以是域名。

下面直接上代码了。

企业付款到零钱支付常量类,这里需要注意的是证书,证书的位置可以放在,如图所示,这个位置,这样就可以读取到了

 

支付常类,企业付款到零钱没有回调地址,可以不写。支付要用到,这里的配置这样写不太好,正确的写发是放在配置文件里面,然后去读配置文件,这里就先这样写了

package com.util;
/**
 * 支付常量类
 */

public class WXPayConstant {
	
	/**
	 * 小程序 appId
	 */
	public static final String APP_ID = "";
	/**
	 * 商户id
	 */
	public static final String MCH_ID = "";
	/**
	 * 支付密钥
	 */
	public static final String PAY_APP_SECRET = "";

	/**
	 * 支付回调地址
	 */
	public static final String PAY_NOTIFY_URL = "";
	
	/**
	 * 统一下单API接口链接
	 */
	public static final String PAY_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder";
	/**
	 * 证书名字
	 */
	public static final String CLIENT_CERT_NAME = "cart/apiclient_cert.p12";

	/**
	 * 微信退款接口
	 */
	public static final String WEIXIN_REFUND_URL = "https://api.mch.weixin.qq.com/secapi/pay/refund";

}

 

 

业务处理类,退款需要2个参数,一个是appendid(openid),一个是money


	
	@Autowired
	private RedisTemplate<String, String> redisTemplate;
	
	public Object Presentation(String appendid, String money) {
		String key = WXPayConstant.PAY_APP_SECRET;
 
		// 1.0 拼凑企业支付需要的参数
		String appid = WXPayConstant.APP_ID; // 微信公众号的appid
		String mch_id = WXPayConstant.MCH_ID; // 商户号
		//String nonce_str = CreateRandomUtil.getRandom(20);// 随机字符串
		String nonce_str =CreateRandomUtil.getRandom(20);// 随机字符串
		String partner_trade_no="";
		synchronized (this) {
			 partner_trade_no = orderNo("T");// 商户订单号
		}
		String openid = appendid; // 支付给用户openid
		String check_name = "NO_CHECK"; // 是否验证真实姓名呢
		String re_user_name = "KOLO"; // 收款用户姓名(非必须)
		
		BigDecimal tmoney=new BigDecimal("100");
		BigDecimal newtmoney=new BigDecimal(money);
		money=newtmoney.multiply(tmoney).toString();
		
		Integer aaaaaaa= newtmoney.multiply(tmoney).intValue();
		String amount = aaaaaaa.toString(); // 企业付款金额,最少为100,单位为分
		
		String desc = "恭喜你,提现成功"; // 企业付款操作说明信息。必填。
		String spbill_create_ip = "127.0.0.1"; // 用户的ip地址
		// 2.0 生成map集合
	    SortedMap<Object,Object> packageParams = new TreeMap<Object,Object>();    
		//Map<String, String> packageParams = new HashMap<String, String>();
		packageParams.put("mch_appid", appid); // 微信公众号的appid
		packageParams.put("mchid", mch_id); // 商务号
		packageParams.put("nonce_str", nonce_str); // 随机生成后数字,保证安全性
		packageParams.put("partner_trade_no", partner_trade_no); // 生成商户订单号
		packageParams.put("openid", openid); // 支付给用户openid
		packageParams.put("check_name", check_name); // 是否验证真实姓名呢
		packageParams.put("re_user_name", re_user_name);// 收款用户姓名
		packageParams.put("amount", amount); // 企业付款金额,单位为分
		packageParams.put("desc", desc); // 企业付款操作说明信息。必填。
		packageParams.put("spbill_create_ip", spbill_create_ip); // 调用接口的机器Ip地址
 
		try {
            //3.0 签名
		    String sign = XMLUtil.createSign("UTF-8", packageParams,key);  //获取签名  
			packageParams.put("sign", sign);
			// 5.0将当前的map结合转化成xml格式
			//String xml = WXPayUtil.mapToXml(packageParams);
			String xml = XMLUtil.getRequestXml(packagePar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值