支付宝对接准备:加密逻辑
非对称加密
公钥:加密、验签
私钥:解密、签名
1、支付宝公钥加密、应用私钥签名
2、支付宝私钥解密、应用公钥验签
java生成二维码
胡图工具包hutool
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.5</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
二维码生产
//目标:把http://www.itcast.cn写二维码里面
QrConfig config = new QrConfig();
config.setErrorCorrection(ErrorCorrectionLevel.H);
//.setErrorCorrection(ErrorCorrectionLevel.H);设置纠错级别
config.setBackColor(Color.blue);//设置颜色
config.setWidth(500);
config.setHeight(500);
QrCodeUtil.generate("http://www.itcast.cn",config,new File("D://qr1.jpg"));
//二维码(内容,长,宽,生产的目标文件)
//例子点餐页面:www.xxx.com?table=3&shopId=12313
实战
在 Alipay Easy SDK 中,API 的引用路径遵循如下命名规范:
Factory.能力类别.场景类别.接口方法名称( ... )
sdk
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.9.9</version>
</dependency>
|
能力类别 |
场景类别 |
接口方法名称 |
|
Base(基础能力) |
OAuth(用户授权) |
getToken(获取授权访问令牌和用户 user_id) |
|
Base(基础能力) |
OAuth(用户授权) |
refreshToken(刷新授权访问令牌) |
|
Base(基础能力) |
Qrcode(小程序二维码) |
create(创建小程序二维码) |
|
Base(基础能力) |
Image(图片) |
upload(上传门店照片) |
|
Base(基础能力) |
Video(视频) |
upload(上传门店视频) |
|
Member(会员能力) |
Identification(支付宝身份认证) |
init(身份认证初始化) |
|
Member(会员能力) |
Identification(支付宝身份认证) |
certify(生成认证链接) |
|
Member(会员能力) |
Identification(支付宝身份认证) |
query(身份认证记录查询) |
|
Payment(支付能力) |
Common(通用) |
create(创建交易) |
|
Payment(支付能力) |
Common(通用) |
query(查询交易) |
|
Payment(支付能力) |
Common(通用) |
refund(交易退款) |
|
Payment(支付能力) |
Common(通用) |
close(关闭交易) |
|
Payment(支付能力) |
Common(通用) |
cancel(撤销交易) |
|
Payment(支付能力) |
Common(通用) |
queryRefund(交易退款查询) |
|
Payment(支付能力) |
Common(通用) |
downloadBill(查询对账单下载地址) |
|
Payment(支付能力) |
Common(通用) |
verifyNotify(异步通知验签) |
|
Payment(支付能力) |
Huabei(花呗分期) |
create(创建花呗分期交易) |
|
Payment(支付能力) |
FaceToFace(当面付) |
pay(扫用户出示的付款码,完成付款) |
|
Payment(支付能力) |
FaceToFace(当面付) |
precreate(生成交易付款码,待用户扫码付款) |
|
Payment(支付能力) |
App(手机APP) |
pay(生成订单串,再使用客户端 SDK 凭此串唤起支付宝收银台) |
|
Payment(支付能力) |
Page(电脑网站) |
pay(生成交易表单,渲染后自动跳转支付宝网站引导用户完成支付) |
|
Payment(支付能力) |
Wap(手机网站) |
pay(生成交易表单,渲染后自动跳转支付宝网站引导用户完成支付) |
|
Security(安全能力) |
TextRisk(文本内容安全) |
detect(检测内容风险) |
|
Marketing(营销能力) |
Pass(支付宝卡包) |
createTemplate(卡券模板创建) |
|
Marketing(营销能力) |
Pass(支付宝卡包) |
updateTemplate(卡券模板更新) |
|
Marketing(营销能力) |
Pass(支付宝卡包) |
addInstance(卡券实例发放) |
|
Marketing(营销能力) |
Pass(支付宝卡包) |
updateInstance(卡券实例更新) |
|
Marketing(营销能力) |
TemplateMessage(小程序模板消息) |
send(发送模板消息) |
|
Marketing(营销能力) |
OpenLife(生活号) |
createImageTextContent(创建图文消息内容) |
|
Marketing(营销能力) |
OpenLife(生活号) |
modifyImageTextContent(更新图文消息内容) |
|
Marketing(营销能力) |
OpenLife(生活号) |
sendText(群发本文消息) |
|
Marketing(营销能力) |
OpenLife(生活号) |
sendImageText(群发图文消息) |
|
Marketing(营销能力) |
OpenLife(生活号) |
sendSingleMessage(单发模板消息) |
|
Marketing(营销能力) |
OpenLife(生活号) |
recallMessage(生活号消息撤回) |
|
Marketing(营销能力) |
OpenLife(生活号) |
setIndustry(模板消息行业设置) |
|
Marketing(营销能力) |
OpenLife(生活号) |
getIndustry(生活号查询行业设置) |
|
Util(辅助工具) |
AES(加解密) |
decrypt(解密,常用于会员手机号解密) |
|
Util(辅助工具) |
AES(加解密) |
encrypt(加密) |
|
Util(辅助工具) |
Generic(通用接口) |
execute(自行拼接参数,执行OpenAPI调用) |
|
Util(辅助工具) |
Generic(通用接口) |
sdkExecute(自行拼接参数,生成加签串,功能等同于通用版 SDK 中的 sdkExecute 方法) |
支付宝无法访问内网
所以要进行内网穿透,进行调试
使用内网穿透就会建立支付宝访问内网的通
{
"alipay_trade_precreate_response": {
"code": "10000",
"msg": "Success",
"out_trade_no": "6823789339978248",
"qr_code": "https://qr.alipay.com/bavh4wjlxf12tper3a",
"share_code": "chb4n8A94Qc"
},
"sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
public String pay() throws Exception {
Factory.setOptions(config);//签名、验签
//调用支付宝接口 subject给客户看的 --outTradeNo流水号 --金额
AlipayTradePrecreateResponse response = Factory.Payment.FaceToFace().preCreate("iphone15 promax 1T", "1213131313131", "12999");
//解析结果(看文档中返回的值我们把他转化json)
String httpBody = response.getHttpBody();
//转JSON对象
JSONObject jsonObject = JSONObject.parseObject(httpBody);
String qrUrl = jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
//生成二维码
QrCodeUtil.generate(qrUrl,300,300,new File("D://pay.jpg"));
return httpBody;
}
内网穿透工具1:06:00
这样支付宝可以访问内网
515

被折叠的 条评论
为什么被折叠?



