微信/支付宝app支付相关参数

目录

微信app支付

appid-18位,appsecret -32位

商户号 mchId,mchKey

keyPath: /root/cert/apiclient_cert.p12

payUrl: https://api.mch.weixin.qq.com/pay/unifiedorder

refundPath: https://api.mch.weixin.qq.com/secapi/pay/refund

notifyUrl: https:xxxxxxxx

支付宝app支付

url-支付宝网关:

appId

应用公钥证书appCertPath

支付宝公钥证书alipayCertPath

支付宝根证书alipayRootCertPath

notifyUrl-服务器异步通知页面路径


微信支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/index.html

微信app支付

appid-18位,appsecret -32位

商户号 mchId,mchKey

账户中心/API安全/设置密钥 查看

注意这个需要你在电脑上安装操作证书,才能看到

设置的时候会有一个验证

 

keyPath: /root/cert/apiclient_cert.p12

为服务器API安全证书apiclient_cert.p12,的存放路径

商户后台自己点击下载即可,http://kf.qq.com/faq/161222NneAJf161222U7fARv.html

开发所需的接口API证书、密钥,请登录微信支付商户平台,点击【账户中心】->【账户设置】->【API安全】->【下载证书】中,下载及设置;如未申请证书,可按照上面提示一步步申请(下载-解压-申请-复制)

payUrl: https://api.mch.weixin.qq.com/pay/unifiedorder

统一下单:商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再在APP里面调起支付。

refundPath: https://api.mch.weixin.qq.com/secapi/pay/refund

申请退款:当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,微信支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。

notifyUrl: https:xxxxxxxx

notifyUrl: 该链接是通过【统一下单API】中提交的参数notifyUrl设置,如果链接无法访问,商户将无法接收到微信通知,用于接收微信返回的接口

 

支付宝app支付

url-支付宝网关:

url: https://openapi.alipay.com/gateway.do

appId

登陆https://openhome.alipay.com支付宝开放平台查看

应用私钥appPrivateKey

https://docs.open.alipay.com/291/105971/,设置接口加签方式过程中生成的私钥

应用公钥证书appCertPath

支付宝公钥证书alipayCertPath

支付宝根证书alipayRootCertPath

支付宝文档参考链接:https://opendocs.alipay.com/open/291/105971/

 

按照文档一步步就可以生成公钥证书及私钥等相关文件

在这里插入图片描述

notifyUrl-服务器异步通知页面路径

支付回调路径,需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问,与微信此参数意思相同

OK,基本一个完整的支付业务需要的相关参数都在这里,后续有需要再补充。

java支付宝提现功能,单笔转账到支付宝账户(公钥证书方式)

/*** 单笔转账到支付宝账号* @author zhouhehe* @param tradingNo		商户转账唯一订单号。发起转账来源方定义的转账单据ID,用于将转账回执通知给来源方。不同来源方给出的ID可以重复,同一个来源方必须保证其ID的唯一性。只支持半角英文、数字,及“-”、“_”。 * @param amount		转账金额,单位:元。只支持2位小数,小数点前最大支持13位,金额必须大于等于0.1元。* @param payeeAccount	收款方账户。与payee_type配合使用。付款方和收款方不能是同一个账户。 * @param remark		转账备注(支持200个英文/100个汉字)。当付款方为企业账户,且转账金额达到(大于等于)50000元,remark不能为空。收款方可见,会展示在收款用户的收支详情中。* @return* @throws AlipayApiException*/public ResponseDataVo<Map<String, Object>> alipayTransfer(String tradingNo,String amount,String payeeAccount,String remark) throws AlipayApiException {//构造clientCertAlipayRequest certAlipayRequest = new CertAlipayRequest();certAlipayRequest.setServerUrl(ALIPAY_URL);certAlipayRequest.setAppId(APP_ID);certAlipayRequest.setPrivateKey(APP_PRIVATE_KEY);certAlipayRequest.setFormat("json");certAlipayRequest.setCharset(CHARSET);certAlipayRequest.setSignType("RSA2");//设置应用公钥证书路径certAlipayRequest.setCertPath(APP_CERT_PAHT);//设置支付宝公钥证书路径certAlipayRequest.setAlipayPublicCertPath(ALIPAY_CERT_PATH);//设置支付宝根证书路径certAlipayRequest.setRootCertPath(ALIPAY_ROOT_CERT_PATH);AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();Alipay alipay = new Alipay();alipay.setOut_biz_no(tradingNo);alipay.setPayee_type(PAYEE_TYPE);alipay.setAmount(amount);alipay.setPayer_show_name("******服务有限公司");alipay.setPayee_account(payeeAccount);//alipay.setPayee_real_name("哈哈哈哈");alipay.setRemark(remark);// 转成json格式放入String json = new Gson().toJson(alipay);request.setBizContent(json);AlipayFundTransToaccountTransferResponse response = null;Map<String, Object> map = new HashMap<String, Object>();try {response = alipayClient.certificateExecute(request);if ("10000".equals(response.getCode())) {map.put("code", response.getCode());map.put("msg", response.getMsg());map.put("subCode", response.getSubCode());map.put("subMsg", response.getSubMsg());map.put("tradingNo", response.getOutBizNo());map.put("orderId", response.getOrderId());map.put("payDate", response.getPayDate());map.put("des", "转账成功");return ResponseDataVo.success(map);} else {map.put("code", response.getCode());map.put("msg", response.getMsg());map.put("subCode", response.getSubCode());map.put("subMsg", response.getSubMsg());map.put("tradingNo", response.getOutBizNo());map.put("orderId", response.getOrderId());map.put("payDate", response.getPayDate());map.put("des", "转账失败");return new ResponseDataVo<Map<String,Object>>(map, ResponseConstant.ERROR_CODE, "转账失败");}} catch (AlipayApiException e) {e.printStackTrace();map.put("success", "false");map.put("des", "转账失败!");return new ResponseDataVo<Map<String,Object>>(map, ResponseConstant.ERROR_CODE, "转账失败");}}/*** 查询转账订单接口* @author zhouhehe* @param tradingNo	交易号	商户转账唯一订单号,分润系统唯一* @return* @throws AlipayApiException*/public ResponseDataVo<Map<String, Object>> alipayFundTransOrderQuery(String tradingNo) throws AlipayApiException {// 构造clientCertAlipayRequest certAlipayRequest = new CertAlipayRequest();certAlipayRequest.setServerUrl(ALIPAY_URL);certAlipayRequest.setAppId(APP_ID);certAlipayRequest.setPrivateKey(APP_PRIVATE_KEY);certAlipayRequest.setFormat("json");certAlipayRequest.setCharset(CHARSET);certAlipayRequest.setSignType("RSA2");// 设置应用公钥证书路径certAlipayRequest.setCertPath(APP_CERT_PAHT);// 设置支付宝公钥证书路径certAlipayRequest.setAlipayPublicCertPath(ALIPAY_CERT_PATH);// 设置支付宝根证书路径certAlipayRequest.setRootCertPath(ALIPAY_ROOT_CERT_PATH);AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);AlipayFundTransOrderQueryRequest request = new AlipayFundTransOrderQueryRequest();Alipay alipay = new Alipay();alipay.setOut_biz_no(tradingNo);// 转成json格式放入String json = new Gson().toJson(alipay);request.setBizContent(json);AlipayFundTransOrderQueryResponse response = null;Map<String, Object> map = new HashMap<String, Object>();try {response = alipayClient.certificateExecute(request);if ("10000".equals(response.getCode())) {map.put("code", response.getCode());map.put("msg", response.getMsg());map.put("orderId", response.getOrderId());map.put("payDate", response.getPayDate());map.put("status", response.getStatus());map.put("subCode", response.getSubCode());// 详情状态码map.put("des", "转账成功");return ResponseDataVo.success(map);} else {map.put("code", response.getCode());map.put("msg", response.getMsg());map.put("orderId", response.getOrderId());map.put("payDate", response.getPayDate());map.put("status", response.getStatus());map.put("subCode", response.getSubCode());// 详情状态码map.put("failReason", response.getFailReason());map.put("des", "转账失败");return new ResponseDataVo<Map<String,Object>>(map, ResponseConstant.ERROR_CODE, "转账失败");}} catch (AlipayApiException e) {e.printStackTrace();map.put("success", "false");map.put("des", "转账失败!");return new ResponseDataVo<Map<String,Object>>(map, ResponseConstant.ERROR_CODE, "转账失败");}}

支付宝支付公钥证书方式

//构造client
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
//设置网关地址
certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
//设置应用Id
certAlipayRequest.setAppId(app_id);
//设置应用私钥
certAlipayRequest.setPrivateKey(privateKey);
//设置请求格式,固定值json
certAlipayRequest.setFormat("json");
//设置字符集
certAlipayRequest.setCharset(charset);
//设置签名类型
certAlipayRequest.setSignType(sign_type);
//设置应用公钥证书路径
certAlipayRequest.setCertPath(app_cert_path);
//设置支付宝公钥证书路径
certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
//设置支付宝根证书路径
certAlipayRequest.setRootCertPath(alipay_root_cert_path);
//构造client
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody("我是测试数据");
model.setSubject("App支付测试Java");
model.setOutTradeNo(outtradeno);
model.setTimeoutExpress("30m");
model.setTotalAmount("0.01");
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
request.setNotifyUrl("商户外网可以访问的异步地址");
try {//这里和普通的接口调用不同,使用的是sdkExecuteAlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。} catch (AlipayApiException e) {e.printStackTrace();
}//异步回调
//获取支付宝POST过来反馈信息
Map<String,String> params = new HashMap<String,String>();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {String name = (String) iter.next();String[] values = (String[]) requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ",";}//乱码解决,这段代码在出现乱码时使用。//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");params.put(name, valueStr);
}
//切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
//boolean AlipaySignature.rsaCertCheckV1(Map<String, String> params, String publicKeyCertPath, String charset,String signType)
boolean flag = AlipaySignature.rsaCertCheckV1(params, publicKeyCertPath, charset,"RSA2")

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/40779.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支付宝接口使用

支付宝接口使用 给大家讲讲支付宝如何使用第三方接口1.准备环境 支付宝开放平台 &#xff1a;https://openhome.alipay.com/platform/home.htm 点击右上角 **进入管理中心**点击研发服务 进来之后找到二维码扫码下载 沙箱&#xff0c;仅支持安卓 电脑下载支付宝平台助手 …

java支付接口(支付宝、微信、QQ)

目录 对接步骤效果图对接注意事项尾言 去年对接了一个第三方支付接口&#xff0c;也就是码支付&#xff0c;觉得挺不错&#xff0c;能支持的支付方式有支付宝、微信、QQ&#xff0c;如果是个人测试使用&#xff0c;除了微信其他两个都可以。最近有空整理了一下&#xff0c;分享…

支付接口调用(支付宝、微信)

一、支付宝支付 1、官方文档是最好的教程&#xff1a; ①电脑网站支付文档&#xff1a;https://docs.open.alipay.com/270/105899/ ②支付宝沙箱使用教程&#xff1a;https://docs.open.alipay.com/200/105311/ ③调用支付宝相关接口的应用创建&#xff1a;https://open.alipa…

php处理支付宝应用网关给接口发送的post参数

php如何接收支付宝应用网关发送的POST请求方式,参数又是GET请求的数据格式 配置支付宝应用网关如何接收支付宝异步通知(应用网关接收请求)将&连接的参数分割成数组实例&#xff1a;难点 配置支付宝应用网关 首先要在服务器上写一个接口,然后将接口的访问地址设置在支付宝应…

如何调用支付宝接口

之前做web项目接入支付宝&#xff0c;网上看了很多文档和案列&#xff0c;不是不讲重点就是过时不适用了&#xff0c;导致走了很多弯路&#xff0c;经过冷静分析总算跑通了&#xff0c;这里分享下接入流程。 1.准备工作 1)支付宝服务商账号&#xff0c;现在叫蚂蚁金服&#x…

支付宝接口的调用

支付流程图 对接支付宝的准备工作 一、申请条件 1.企业或个体工商户可申请&#xff1b; 2. 提供真实有效的营业执照&#xff0c;且支付宝账户名称需与营业执照主体一致&#xff1b; 3. 网站能正常访问且页面信息有完整商品内容&#xff1b; 4. 网站必须通过ICP备案&#xff0…

微信 及支付宝 支付接口 功能

1&#xff1a;首页需要了解支付宝跟微信的开发文档&#xff0c;这里就贴上文档网址&#xff0c;不做过多描述 微信&#xff1a;https://pay.weixin.qq.com/wiki/doc/api/index.html 支付宝&#xff1a;https://open.alipay.com/developmentDocument.htm 2&#xff1a;业务流程…

android应用程序如何调用支付宝接口

最近在做一个关于购物商城的项目&#xff0c;项目里面付款这块我选的是调用支付宝的接口&#xff0c;因为用的人比较多。 在网上搜索了以下&#xff0c;有很多这方面的教程&#xff0c;但大部分教程过于陈旧&#xff0c;而且描述的过于简单。而且支付宝提供的接口一直在更新&am…

小编和ChatGPT聊了下智能运维,大家看看能不能把专家替了?

近日&#xff0c;聊天机器人ChatGPT爆火&#xff0c;仅仅推出2个月&#xff0c;其月活跃用户就成功过亿&#xff0c;成为历史上增长最快的消费者应用程序。连一向高调的马斯克在使用ChatGPT都直呼“好到吓人”&#xff0c;甚至断言&#xff1a;“我们离强大到危险的AI不远了。”…

外贸单证制作常用名称中英互译表

外贸单证制作对于外贸人来说会遇到的样式很多&#xff0c;因此在进行这项工作的过程中&#xff0c;会有很多专业单证英文名称&#xff0c;对于这些名称的了解就很重要。这里汇信外贸管理软件整理了包含390种常用外贸单证名称的中英互译表&#xff0c;大家来分享吧&#xff01; …

广外2023口译(非英专)复习资料以及模考反馈

大家好&#xff0c;有几位同学想让我更新一下口译&#xff0c;本人听译情况&#xff08;四级听力209&#xff0c;六级听力197&#xff0c;广外笔译94&#xff09; here I come&#xff01;还是个人复习向&#xff0c;现在这个节点了&#xff0c;平时没练的话就只能求保命了。 …

香港中文大学计算机辅助翻译课程,港中文翻译(MA in Translation)专业申请解析...

原标题&#xff1a;港中文翻译(MA in Translation)专业申请解析 最近随着《亲爱的翻译官》的热播&#xff0c;翻译专业也重新受到大家的关注&#xff0c;下面我们就给大家介绍香港中文大学翻译硕士(Master of Arts in Translation)。 项目时长&#xff1a;1年 学费&#xff1a;…

【打卡帖】7日玩转ESP32——(第2日) GPIO输入,按键的长按和短按

文章目录 一、硬件准备二、知识要点三、参考例程四、今日作业五、参考答案5.1 知识点5.2 中断方式5.3 定时扫描 六、打卡~ 一、硬件准备 开发板上面有一个Boot Button按键。 从原理图可以看出&#xff0c;按键按下时&#xff0c;GPIO9是低电平。按键弹起时&#xff0c;GPIO是…

006. esp32 下载--第二版

1. 先按boot键&#xff08;不放开&#xff09;&#xff0c;再按 复位按键&#xff0c;按下&#xff0c;放开。会进入下载模式。如果进入下载模式失败。 重复&#xff0c;按住Boot键不放&#xff0c;复位按键&#xff0c;按下&#xff0c;放开。 2.下载图示如下&#xff1a; …

基于ESP32的硬件项目教程(三)ESP32的引脚说明及数字信号读写操作

引脚说明 以下图为例 图片下方的英文部分已经有了介绍&#xff0c;本文将进行一次简述。 此型号开发板一共38个引脚&#xff0c;除去电源引脚外&#xff0c;可用IO引脚为34个&#xff0c;在图中有GPIO6~GPIO11等6个引脚标注有红色“&#xff01;”&#xff0c;这6个引脚常作为…

【填坑】ESP32 bootloader初探(上)

前言 大名鼎鼎的乐鑫ESP8266 WIFI模组你应该不陌生&#xff0c;不用我多说了。在这之后乐鑫还更迭了更多高性能的芯片型号&#xff0c;比如这次我要记录的ESP32-C3&#xff0c;搭载近期很火的RISC-V指令集处理器&#xff0c;支持2.4G wifi、BLE-5&#xff0c;拥有丰富应用场景…

ESP32初级入门

1.下载的时候如果出现不能下载&#xff0c;那是因为没复位&#xff0c;在出现connect时按住板子上的boot按键&#xff0c;出进度了然后松开&#xff0c;就会正常下载。 2.点灯和uno一样&#xff0c;直接在setup里面设置管脚模式&#xff0c;在loop里面赋值就行&#xff0c;根本…

ESP32 Secure Boot和Flash加密

ESP32的代码是存在外部Flash中&#xff0c;如果不加密&#xff0c;很容易被窃取代码。 ESP32的secure boot和flash加密是两个功能&#xff0c;但是要配合一起使用&#xff0c;其加密效果才好。 一、初次加密。 这里只写可重复烧写的加密方式&#xff0c;其加密步骤如下&…

ESP32修改BootLoader:在boot中添加GPIO和IIC驱动方式

ESP32修改BootLoader&#xff1a;在boot中添加GPIO和IIC驱动方式 1. ESP Bootloader简介 ESP32有着强大的引导加载程序&#xff08;Bootloader&#xff09;功能&#xff1a; 主要执行以下任务&#xff1a; 内部模块的最小化初始配置&#xff1b; 根据分区表和 ota_data&#…

ESP32 基础篇: 启动时 rst cause 和 boot mode

本文参考 ESP32 技术参考手册 和 ESP32-WROOM-32 datasheet 简介 在 ESP32 启动时, ROM CODE 会读取 GPIO 状态和 rst cause 状态, 进而决定 ESP32 工作模式。 通过了解和掌握 rst cause 和 boot mode, 有助于定位某些系统问题。 例如: ESP32 启动时会有如下打印: rst:0x1 (…