以前上一家公司做项目的,并没有做过支付宝app和微信app支付,现在这家公司是做自己的产品,涉及了支付业务。花了一天的时间集成,目前已使用了接近一年的时间。在这使用和开发过程中遇到许多坑,现在跟大家分享一下。
一、支付宝app支付
1、首先亲得在支付宝商户平台申请app应用,然后审核通过后获得相对应的应用配置:partner 签约账号 以2088开头;private_key 商户私钥 亲可以在支付宝官网下载对应操作系统的私钥生产工具;alipay_public_key 支付宝公钥,通过私钥生成工具生成的支付宝公钥,并上传至支付宝官网。sign_type 签名方式 ,本人使用的RSA;支付宝签名方式分为RSA和RSA2,小伙伴在开发时一定要注意自己私钥的格式以及对应的签名格式;input_charset 字符编码格式,使用utf-8;service 接口固定值mobile.securitypay.pay ;seller 签约的公司支付宝账号 ;app_id 已经签约了app的id。
2、配置好相对应的应用配置后就可以开发功能了,小伙伴可以在支付宝官网下载服务器端demo,使用其中的工具类。
3、做好这些前期这些准备工作后直接上代码:
//应用参数配制,根据不同应用,配置不同的参数
//应用appid
String app_id="";
//商户私钥
String private_key="";
//支付宝公钥验签
String alipay_public_key="";
//卖家账号
String seller_id="";
//应用1
if("1".equals(appVersion)){
app_id=AlipayConfig.app_id;
private_key=AlipayConfig.private_key_refund;
alipay_public_key=AlipayConfig.alipay_public_key;
seller_id=AlipayConfig.partner;
}else{ //应用2
app_id=AlipayConfigSecond.APP_ID;
private_key=AlipayConfigSecond.PRIVATE_KEY;
alipay_public_key=AlipayConfigSecond.ALIPAY_PUBLIC_KEY;
seller_id=AlipayConfigSecond.PARTNER;
}
//此处使用redis并发处理,防止高并发请求
long size=requestRedisTemplate.boundValueOps("alipayment:lock:"+userId).increment(1);
requestRedisTemplate.expire("alipayment:lock:"+userId,3,TimeUnit.SECONDS);
if(size==1){