2020-06-02 日常问题: 对接 alipay 证书支付 (创建订单&支付订单)

27 篇文章 0 订阅
2 篇文章 0 订阅

2020-06-02 天气:晴转小雨 , 最近在整装修,事情一件接一件,坑也是一个接一个(有时间整个装修踩坑日记)

ps.对接支付宝说比对接微信简单,其实都差不多

现在来讲讲我支付宝(alipay-sdk-4.5.0-all 版本)对接的过程吧!!!!!

一.创建账号

    入门第一步,这里要说明的点是需要注意保存信息 

  1. 使用实名认真的支付宝进行登陆
  2. 创建应用(需要选择是给哪端使用:app / 网页or移动应用 / ...
  3. 使用什么支付方式需要开通对应功能(例:App支付宝登陆 / 手机网页支付 / 当面付 / 三方应用授权 / ...
  4. 配置应用环境:
    1. 接口加签入口 :用户自己准备 应用私钥(APP_PRIVATE_KEY)和应用公钥(APP_PUBLIC_KEY),在开放平台配置完密钥之后可以获得支付宝公钥(ALIPAY_PUBLIC_KEY)应用在代码中,对请求内容进行签名。
    2. IP白名单,只对指定IP的请求放开
    3. ...
  5. 复制应用的APPID进行对接开发吧

二.接口对接

支付宝外部调用接口挺多,这里就不一一展开,主要就电商行业核心流程-涉及到订单的创建/支付/回调/...

1.创建预支付订单

alipay官方文档

 

(1)我使用的语言是java-做服务端,导入ali官方的SDK - jar包

可以访问github通过 aliPay-Easy-SDK 接入,或者maven直接引入包

给张图片说明一下吧,担心没接入过的同学弄错

 

(2)导入包之后我们就要开始aliPayClient的创建了

//构造client
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); //设置网关地址
certAlipayRequest.setAppId(app_id); //设置应用Id
certAlipayRequest.setFormat("json");  //设置请求格式,固定值json 
certAlipayRequest.setCharset(charset); //设置字符集
certAlipayRequest.setSignType(sign_type); //设置签名类型
certAlipayRequest.setPrivateKey(privateKey); //应用私钥-自己创建

//这里要说明的就是这个证书-1.来源:支付宝开发者中心-我的应用-(网页&移动应用/小程序...)-选择对应应用-应用信息-接口加签方式->(将对应证书下载)
certAlipayRequest.setCertPath(app_cert_path); //应用公钥证书绝对路径
certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); //支付宝公钥证书绝对路径
certAlipayRequest.setRootCertPath(alipay_root_cert_path); //支付宝根证书绝对路径

AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest); //构造client

问题注意点:证书存放项目内部,我们如果是jar包发布,会提示创建alipayClient初始化失败,证书路径异常,日志:

.jar!/BOOT-INF/classes!/cert/alipayRootCert.crt' does not exist

解决:1. 将证书文件存放至jar包之外的服务器指定目录,在项目中通过配置目录指向对应文件(目前公司线上采用的方式

     2.据说war的方式可以解决路径问题??

 

(3)通过alipayClient创建交易请求,给前端或者客户端,唤起支付宝app/网页支付

AlipayTradeAppPayRequest alipayRequest = 
        new AlipayTradeAppPayRequest();  //appPay表示通过唤起APP支付
alipayRequest.setBizModel(model);  //请求参数,具体见创建与支付订单文档
alipayRequest.setNotifyUrl(notifyUrl);  //支付回调接口
alipayRequest.setReturnUrl(returnUrl);  //支付成功回跳地址
AlipayTradeAppPayResponse response = 
        alipayClient.sdkExecute(alipayRequest);  //appPay与request对应,并且sdkExecute表示通过sdk包唤起支付宝APP

这里需要先和前端 or 客户端确定好哪种方式支付,是aliPay-APP  or 网页支付 or 当面付 ,不同的类型需要不同的入参&出参

整理好了就是下面的内容

当面付(条码支付)AlipayTradePayRequest & AlipayTradePayResponse
当面付(线下扫码支付)AlipayTradePrecreateRequest&AlipayTradePrecreateResponse
当面付AlipayTradeCreateRequest&AlipayTradeCreateResponse
APP支付AlipayTradeAppPayRequest & AlipayTradeAppPayResponse
手机网页支付 AlipayTradeWapPayRequest& AlipayTradeWapPayResponse
电脑网页支付AlipayTradePagePayRequest& AlipayTradePagePayResponse

不同的接入方式可能会有出入(👆是JAVA接入)

注意点:在接入这里的时候碰到了一个ISV权限问题, 参考了ISV问题-官网文档

解决:在ISV权限不足自查方案文档中找到了自己的问题解决方案,如上介绍

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值