java生成的证书chrome报错,微信企业付款到零钱(Java版)

1.开通条件。

商户注册超过90天且,连续30天有交易,可以每天支付1元来刷,目前测试可行。随后在微信商户平台 - 产品管理自动开启,然后需要申请。

疑问:

话说是要有公众号appid才行,但是听说移动应用的appid也可以。

补充:以下均已测试。

小程序appid与对应的openid也可以,如果非同主体,可以尝试mch_id与appid绑定;

移动应用appid与对应的openid也可以,如果非同主体,可以尝试mch_id与appid绑定;

Attention:如果主体里面有括号,注意英文括号和中文括号区别;

2.此类接口使用场景。

无论是微信还是支付宝,现金红包,单笔转账,企业转账等资金支出类接口都可以用作,活动营销、招新、邀请好友发送奖励、企业内部报销、合伙人团长提现等场景。

注意点:

a.微信商户账号需要有余额;

b.根据实际业务,比如发红包,需要做并发和同步锁处理,同时建议在商户平台开启防盗刷处理;

c.调用三方接口,看好官方文档,参数获取的对,传递的对,工具类找的好,基本就ok了;

d.不支持给非实名用户付款,如果报错,请处理,并且展示给前端可理解字段;

fc047bfe9ce0a8ec4c8464db3bfef4d4.png

3.必须材料准备。如果已经获取,请跳过。

像这种资金支出类的API接口,都是要请求证书的,而且要apikey,apiv3key。获取的使用最好使用IE兼容模式。

API密钥、APIV3密钥获取:微信商户平台 - 账户中心 - API安全,(这里我已经设置了,就不重新设置了,建议用UUID生成)

999c86d82a49c378a5f7b7a3e5c54881.png

同时在API安全中,可以设置企业付款API 调用的IP和每日每用户转账次数

291f6f970138491899ff4367e5b78e7b.png

API证书获取:同样也在API安全里,申请证书。

简述:微信商户 - 账户中心 - API安全 - API证书 - 点击申请 - 下载证书工具 - 下一步一下一步静默安装 - 填写商户信息 - 复制黏贴到微信商户 - OK

本机安装位置:C:\Data\WXCertUtil\WXCertUtil

详解:

第一步,微信商户 - API证书点击申请

b39dfdc85a080768082ab88b9071cf71.png

4ab1d51fa1553e8588b1dcbb312e1733.png

第二步,弹出提示需要先下载 证书工具,直接下载,然后双击安装,下一步,下一步即可。此处省略安装步骤。记得自己安装的位置即可。

8a7626be3b3df17de334ac88db5eb24b.png

第三步,打开安装好的工具,选择证书生成后的位置,默认即可,一般是同目录下的cret文件夹。然后点击申请证书。

6881322c7ef40683b2b28d874864eabf.png

第四步,填写商户信息,微信商户平台上可以获取(就是第一步中弹出那个提示框里面有,复制到这里即可,严格一点哦一个空格都没不能错),然后点击下一步。

0017da5d4d58d810f0a07a16b274a190.png

第五步,将生成的证书串,复制黏贴到商户平台,如下图的证书串。然后再将微信商户平台的证书串复制到工具里面,完成即可。

d9aeb2c04eceaf0a53ccb75c4c7e5cd8.png

78655da19854ba08f932a1394d81dd63.png

6808325150afab34dd647f81b54e8f8a.png

c8ac759ddfba9570e62191d3502b0bd2.png

最后,在微信商户平台 - API证书里面查看证书可以获取证书序列号和证书有效期,同时后续的更换证书也是在这里。

34dec8b131f7408c349d118ac2233e3d.png

a5d6d9dd709c25a4c131454ff82257e4.png

4.企业付款。(需要证书)

请求地址

https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers

请求方式

POST

需要证书

https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3

请求参数:

字段名

变量名

必填

示例值

类型

描述

商户账号appid

mch_appid

wx8888888888888888

String(128)

申请商户号的appid或商户号绑定的appid

商户号

mchid

1900000109

String(32)

微信支付分配的商户号

设备号

device_info

013467007045764

String(32)

微信支付分配的终端设备号

随机字符串

nonce_str

5K8264ILTKCH16CQ2502SI8ZNMTM67VS

String(32)

随机字符串,不长于32位

签名

sign

C380BEC2BFD727A4B6845133519F3AD6

String(32)

签名,详见签名算法

商户订单号

partner_trade_no

10000098201411111234567890

String(32)

商户订单号,需保持唯一性

(只能是字母或者数字,不能包含有其他字符)

用户openid

openid

oxTWIuGaIt6gTKsQRLau2M0yL16E

String(64)

商户appid下,某用户的openid

校验用户姓名选项

check_name

FORCE_CHECK

String(16)

NO_CHECK:不校验真实姓名

FORCE_CHECK:强校验真实姓名

收款用户姓名

re_user_name

王小王

String(64)

收款用户真实姓名。

如果check_name设置为FORCE_CHECK,则必填用户真实姓名

金额

amount

10099

int

企业付款金额,单位为分

企业付款备注

desc

理赔

String(100)

企业付款备注,必填。注意:备注中的敏感词会被转成字符*

Ip地址

spbill_create_ip

192.168.0.1

String(32)

该IP同在商户平台设置的IP白名单中的IP没有关联,该IP可传用户端或者服务端的IP。

返回示例:

{

"mchid": "154547511",

"mch_appid": "wxdfc5c46e8cee3a",

"err_code": "AMOUNT_LIMIT",

"return_msg": "支付失败",

"result_code": "FAIL",

"err_code_des": "付款金额超出限制。低于最小金额1.00元或累计超过500.00元。",

"return_code": "SUCCESS"

}

成功示例:

{

"nonce_str": "742ebe1739b0403cb81270aac28c1fef",

"mchid": "5047515471",

"partner_trade_no": "1545047571201912161339371639",

"payment_time": "2019-12-16 13:39:46",

"mch_appid": "wxdfc5c46e8cee32ca",

"payment_no": "10101066994831912160041922151260",

"return_msg": "",

"result_code": "SUCCESS",

"return_code": "SUCCESS"

}

成功截图:

5369b0f8b728823cd2c112f76278fc1a.pngad3798a89388b155732d229559fe7184.png

示例代码:

public static void transfers() {

MapresutlMap = null;

try {

//TODO 1.转账前验证

//TODO 2.转账

WXPayConfig wxPayConfig = WXPayConfigImpl.getInstance();

WXPay wxpay = new WXPay(wxPayConfig);

MapreqData = new HashMap();//只传递了必传字段,其他字段看文档

//mch_appid mchid nonce_str sign会自动装配

reqData.put("partner_trade_no", WXPayUtil.getPayNo());//商户订单号,是

reqData.put("openid", "oio1b1JeHrOaD785ZkK21x7dolvw");//用户oio1b1JeHrOaD785ZkK21x7dolvw

reqData.put("check_name", "NO_CHECK");//不校验真实姓名NO_CHECK,FORCE_CHECK:强校验真实姓名

//reqData.put("re_user_name", "PGZ");//强制校验,此项必填

reqData.put("amount", "30");//企业付款金额,单位分

reqData.put("desc", "活动奖励");//企业付款备注

reqData.put("spbill_create_ip","127.0.0.1");//AddressUtils.getIpAddr(request)

resutlMap = wxpay.transfers(reqData);

LogUtil.log("企业付款返回结果:" + JSON.toJSONString(resutlMap));

//TODO 3.操作成功,保存记录,失败,提示

String returnCode = resutlMap.get("return_code");

String resultCode = resutlMap.get("result_code");

if (WXPayConstants.SUCCESS.equals(returnCode) && WXPayConstants.SUCCESS.equals(resultCode)) {

}else {

}

} catch (Exception e) {

LogUtil.exception(e);

}

5.查询企业付款到零钱(需要证书)

注意:接口文档中参数名称,大小写,比如mch_id,mchapp_id,appid,app_id,timestamp。

还有注意,请求的参数,里面到底有没有sign_type,否则可能签名sign参数错误。

请求成功返回示例:

{

"reason": "",

"openid": "oNicp49yn6IS4g7_OymNyWKuJ9O0",

"payment_time": "2019-12-18 13:40:21",

"payment_amount": "100",

"mch_id": "1545047571",

"detail_id": "10101066994831912180040711223260",

"transfer_name": "",

"transfer_time": "2019-12-18 13:40:20",

"partner_trade_no": "201912182735191955079946240",

"appid": "wxdfc5c46e8cee32ca",

"result_code": "SUCCESS",

"return_code": "SUCCESS",

"status": "SUCCESS",

"desc": "活动奖励"

}

额外:

1.微信企业付款到零钱官方接口文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1

2.微信公众号网页授权获取openID:

https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

3.签名算法以及签名校验(最好用Chrome):https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3

4.移动应用快速获取openID,支持支付分、跳转小程序,示例apk源码下载(只需更改里面的appid与appsecret):

https://gitee.com/JaneYork/WeChatOpenSdkSample

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值