APPEID怎样退款回支付宝退款成功回调

所有的接口支持沙盒环境的测试
前面几篇文件详细介绍了 支付宝提现、扫码支付、条码支付、Wap支付、App支付
支付宝支付-提现到个人支付宝
支付宝支付-扫码支付
支付宝支付-刷卡支付(条码支付)
支付宝Wap支付你了解多少?
Android版-支付宝APP支付
一张二维码集成微信、支付宝支付
其中也断断续续的提到了一些接口。本片文章主要是总结支付宝支付中常用的一些接口
2、常用的接口总结
这里使用表格的方式列出 官方接口列表以及详细的参数说明
alipay.trade.query
统一收单线下交易查询
提供所有支付宝支付订单的查询
alipay.trade.refund
统一收单交易退款接口
买家或者卖家的原因需要退款时
alipay.trade.fastpay.refund.query
统一收单交易退款查询
查看退款请求是否执行成功
alipay.trade.pay
统一收单交易支付接口
将二维码或条码信息/声波信息通过本接口上送至支付宝发起支付。
alipay.trade.precreate
统一收单线下交易预创建
二维码支付
alipay.trade.cancel
统一收单交易撤销接口
alipay.trade.create
统一收单交易创建接口
alipay.trade.close
统一收单交易关闭接口
用于交易创建后,用户在一定时间内未进行支付时可以通过此接口关闭订单
alipay.trade.order.settle
统一收单交易结算接口
用于在线下场景交易支付后,进行结算
alipay.fund.trans.toaccount.transfer
单笔转账到支付宝账户接口
支付宝提现
alipay.fund.trans.order.query
查询转账订单接口
提现结果查询
alipay.data.dataservice.bill.downloadurl.query
查询对账单下载地址
为方便商户快速查账
3、使用服务端SDK封装接口
3.1 服务端SDK下载及其使用方法
参考 开放平台服务端SDK
Maven项目引用JAR包可以参考 支付宝Wap支付你了解多少? 里面有详细的介绍
1、接口使用的编码格式为 UTF-8
2、接口数据交互使用的是 json
3、接口加密的模式使用官方推荐的 RSA2
4、本片文章主要是介绍Java的使用方法与封装
3.2 初始化SDK
在SDK调用前需要进行初始化
AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
关键参数说明:
示例值解释
获取方式/示例值
支付网关(固定)
正式环境:https://openapi.alipay.com/gateway.do 沙箱环境:https://openapi.alipaydev.com/gateway.do
APPID即创建应用后生成
获取见上面创建应用并获取APPID
APP_PRIVATE_KEY
开发者应用私钥,由开发者自己生成
获取详见上面配置密钥
参数返回格式,只支持json
json(固定)
请求和签名使用的字符编码格式,支持GBK和UTF-8
开发者根据实际工程编码配置
ALIPAY_PUBLIC_KEY
支付宝公钥,由支付宝生成
获取详见上面配置密钥
商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
3.3 API接口封装
3.3.1 alipay.trade.query接口封装
该接口提供所有支付宝支付订单的查询,商户可以通过该接口主动查询订单状态,完成下一步的业务逻辑。 需要调用查询接口的情况: 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知; 调用支付接口后,返回系统错误或未知交易状态情况; 调用alipay.trade.pay,返回INPROCESS的状态; 调用alipay.trade.cancel之前,需确认支付状态;
* 交易查询接口
* https://doc.open.alipay.com/docs/api.htm?spm=a219a..0.8H2JzG&docType=4&apiId=757
* @param bizContent
* @throws AlipayApiException
public static boolean isTradeQuery(AlipayTradeQueryModel model) throws AlipayApiException{
AlipayTradeQueryResponse response = tradeQuery(model);
if(response.isSuccess()){
return true;
return false;
public static AlipayTradeQueryResponse
tradeQuery(AlipayTradeQueryModel model) throws AlipayApiException{
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
request.setBizModel(model);
return alipayClient.execute(request);
3.3.2 alipay.trade.refund 接口封装
当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,支付宝将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。 交易超过约定时间(签约时设置的可退款时间)的订单无法进行退款 支付宝退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。一笔退款失败后重新提交,要采用原来的退款单号。总退款金额不能超过用户实际支付金额
* https://doc.open.alipay.com/docs/api.htm?spm=a219a..0.SAyEeI&docType=4&apiId=759
* @param content
* @throws AlipayApiException
public static String tradeRefund(AlipayTradeRefundModel model) throws AlipayApiException{
AlipayTradeRefundResponse response = tradeRefundToResponse(model);
return response.getBody();
public static AlipayTradeRefundResponse tradeRefundToResponse(AlipayTradeRefundModel model) throws AlipayApiException{
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setBizModel(model);
return alipayClient.execute(request);
3.3.3 alipay.trade.fastpay.refund.query接口封装
商户可使用该接口查询自已通过alipay.trade.refund提交的退款请求是否执行成功。 该接口的返回码10000,仅代表本次查询操作成功,不代表退款成功。如果该接口返回了查询数据,则代表退款成功,如果没有查询到则代表未退款成功,可以调用退款接口进行重试。重试时请务必保证退款请求号一致。
* 退款查询
* https://doc.open.alipay.com/docs/api.htm?spm=a219a..0.KQeTSa&apiId=1049&docType=4
* @param model
* @throws AlipayApiException
public static String tradeRefundQuery(AlipayTradeFastpayRefundQueryModel model) throws AlipayApiException{
AlipayTradeFastpayRefundQueryResponse response = tradeRefundQueryToResponse(model);
return response.getBody();
public static AlipayTradeFastpayRefundQueryResponse tradeRefundQueryToResponse(AlipayTradeFastpayRefundQueryModel model) throws AlipayApiException{
AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();
request.setBizModel(model);
return alipayClient.execute(request);
3.3.4 alipay.trade.pay接口封装
收银员使用扫码设备读取用户手机支付宝“付款码”/声波获取设备(如麦克风)读取用户手机支付宝的声波信息后,将二维码或条码信息/声波信息通过本接口上送至支付宝发起支付。
* 条形码支付、声波支付
* https://doc.open.alipay.com/docs/api.htm?spm=a219a..0.XVqALk&apiId=850&docType=4
* @param notifyUrl
* @throws AlipayApiException
public static String tradePay(AlipayTradePayModel model, String notifyUrl) throws AlipayApiException {
AlipayTradePayResponse response = tradePayToResponse(model,notifyUrl);
return response.getBody();
public static AlipayTradePayResponse tradePayToResponse(AlipayTradePayModel model, String notifyUrl) throws AlipayApiException{
AlipayTradePayRequest request = new AlipayTradePayRequest();
request.setBizModel(model);// 填充业务参数
request.setNotifyUrl(notifyUrl);
return alipayClient.execute(request); // 通过alipayClient调用API,获得对应的response类
3.3.5 alipay.trade.precreate 接口封装
收银员通过收银台或商户后台调用支付宝接口,生成二维码后,展示给用户,由用户扫描二维码完成订单支付。
* 扫码支付
* https://doc.open.alipay.com/docs/doc.htm?spm=a219a..0.i0UVZn&treeId=193&articleId=105170&docType=1#s4
* @param notifyUrl
* @throws AlipayApiException
public static String tradePrecreatePay(AlipayTradePrecreateModel model, String notifyUrl) throws AlipayApiException{
AlipayTradePrecreateResponse response = tradePrecreatePayToResponse(model,notifyUrl);
return response.getBody();
public static AlipayTradePrecreateResponse tradePrecreatePayToResponse(AlipayTradePrecreateModel model, String notifyUrl) throws AlipayApiException{
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.setBizModel(model);
request.setNotifyUrl(notifyUrl);
return alipayClient.execute(request);
3.3.6 alipay.trade.cancel 接口封装
支付交易返回失败或支付系统超时,调用该接口撤销交易。如果此订单用户支付失败,支付宝系统会将此订单关闭;如果用户支付成功,支付宝系统会将此订单资金退还给用户。 注意:只有发生支付系统超时或者支付结果未知时可调用撤销,其他正常支付的单如需实现相同功能请调用申请退款API。提交支付交易后调用【查询订单API】,没有明确的支付结果再调用【撤销订单API】。
* 交易撤销接口
* https://doc.open.alipay.com/docs/api.htm?spm=a219a..0.XInh6e&docType=4&apiId=866
* @param bizContent
* @throws AlipayApiException
public static boolean isTradeCancel(AlipayTradeCancelModel model) throws AlipayApiException{
AlipayTradeCancelResponse response = tradeCancel(model);
if(response.isSuccess()){
return true;
return false;
public static AlipayTradeCancelResponse tradeCancel(AlipayTradeCancelModel model) throws AlipayApiException{
AlipayTradeCancelRequest request = new AlipayTradeCancelRequest();
request.setBizModel(model);
AlipayTradeCancelResponse response = alipayClient.execute(request);
3.3.7 alipay.trade.create 接口封装
商户通过该接口进行交易的创建下单
* 统一收单交易创建接口
* https://doc.open.alipay.com/docs/api.htm?spm=a219a..0.21yRUe&apiId=1046&docType=4
* @param model
* @param notifyUrl
* @throws AlipayApiException
public static AlipayTradeCreateResponse tradeCreate(AlipayTradeCreateModel model, String notifyUrl) throws AlipayApiException{
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
request.setBizModel(model);
request.setNotifyUrl(notifyUrl);
return alipayClient.execute(request);
3.3.8 alipay.trade.close 接口封装
用于交易创建后,用户在一定时间内未进行支付,可调用该接口直接将未付款的交易进行关闭。
* 关闭订单
* https://doc.open.alipay.com/docs/api.htm?spm=a219a..0.21yRUe&apiId=1058&docType=4
* @param model
* @throws AlipayApiException
public static boolean isTradeClose(AlipayTradeCloseModel model) throws AlipayApiException{
AlipayTradeCloseResponse response = tradeClose(model);
if(response.isSuccess()){
return true;
return false;
public static AlipayTradeCloseResponse tradeClose(AlipayTradeCloseModel model) throws AlipayApiException{
AlipayTradeCloseRequest request = new AlipayTradeCloseRequest();
request.setBizModel(model);
return alipayClient.execute(request);
3.3.9 alipay.trade.order.settle接口封装
用于在线下场景交易支付后,进行结算
* 交易结算接口
* https://doc.open.alipay.com/docs/api.htm?spm=a219a..0.nl0RS3&docType=4&apiId=1147
* @param bizContent
* @throws AlipayApiException
public static boolean isTradeOrderSettle(AlipayTradeOrderSettleModel model) throws AlipayApiException{
AlipayTradeOrderSettleResponse
= tradeOrderSettle(model);
if(response.isSuccess()){
return true;
return false;
public static AlipayTradeOrderSettleResponse tradeOrderSettle(AlipayTradeOrderSettleModel model) throws AlipayApiException{
AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest();
request.setBizModel(model);
return alipayClient.execute(request);
3.3.10 alipay.fund.trans.toaccount.transfer接口封装
可以参考 支付宝支付-提现到个人支付宝
3.3.11 alipay.fund.trans.order.query接口封装
可以参考 支付宝支付-提现到个人支付宝
3.3.12 alipay.data.dataservice.bill.downloadurl.query 接口封装
为方便商户快速查账,支持商户通过本接口获取商户离线账单下载地址
* 查询对账单下载地址
* @param bizContent
* @throws AlipayApiException
public static String billDownloadurlQuery(AlipayDataDataserviceBillDownloadurlQueryModel model) throws AlipayApiException{
AlipayDataDataserviceBillDownloadurlQueryResponse response =
billDownloadurlQueryToResponse(model);
return response.getBillDownloadUrl();
public static AlipayDataDataserviceBillDownloadurlQueryResponse
billDownloadurlQueryToResponse (AlipayDataDataserviceBillDownloadurlQueryModel model) throws AlipayApiException{
AlipayDataDataserviceBillDownloadurlQueryRequest request = new AlipayDataDataserviceBillDownloadurlQueryRequest();
request.setBizModel(model);
return alipayClient.execute(request);
4、异步通知封装
将异步通知的参数转化为Map为验签做准备
* 将异步通知的参数转化为Map
* @param request
public static Map&String, String& toMap(HttpServletRequest request) {
System.out.println("&&&&" + request.getQueryString());
Map&String, String& params = new HashMap&String, String&();
Map&String, String[]& requestParams = request.getParameterMap();
for (Iterator&String& 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. 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);
使用AlipaySignature.rsaCheckV1(....)接口进行验证签名
public void notify_url() {
// 获取支付宝POST过来反馈信息
Map&String, String& params = AliPayApi.toMap(getRequest());
for (Map.Entry&String, String& entry : params.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
boolean verify_result = AlipaySignature.rsaCheckV1(params, AliPayApi.ALIPAY_PUBLIC_KEY, AliPayApi.CHARSET,
AliPayApi.SIGN_TYPE);
if (verify_result) {// 验证成功
// TODO 请在这里加上商户的业务逻辑程序代码 异步通知可能出现订单重复通知 需要做去重处理
System.out.println("notify_url 验证成功succcess");
renderText("success");
System.out.println("notify_url 验证失败");
renderText("failure");
} catch (AlipayApiException e) {
e.printStackTrace();
renderText("failure");
谢谢提供作者提供!
阅读(...) 评论()
Where is the starting point, we don't have a choice, but the destination where we can pursue!支付宝退款全解析 - 简书
支付宝退款全解析
简单介绍了支付宝退款的请求处理和一些注意事项
0 系列文章
支付宝退款主要3个步骤:
生成退款链接
打开退款链接,跳转支付宝收银台,输入密码确认退款
异步接收退款结果通知
注:这个退款适用于即时到账、手机网站、移动支付这三个支付渠道的退款
1 生成退款链接
该接口支持批量退款,一笔交易可以多次退款,退款次数最多不能超过99次,需要遵守多次退款的总金额不超过该笔交易付款金额的原则。
$partner = "";
$seller_id = "";
//seller_id
$rsa_path = "";
//rsa私钥路径
$notify_url = "";
//接收退款结果通知url
$batch_no = "";
//注意要遵循接口batchno格式
$batch_detail = "";
//批量拼接字符串,详细格式见文档
$MAPI_GATEWAY = "https://mapi.alipay.com/gateway.do";
//mapi 入口 路由
$data = array();
$data['service'] = "refund_fastpay_by_platform_pwd";
$data['partner'] =$
$data['_input_charset'] = "utf-8";
$data['notify_url'] = $notify_
$data['seller_email'] = $seller_
$data['refund_date'] = date('Y-m-d H:i:s');
$data['batch_no'] = $batch_
$data['batch_detail'] = batch_
$unsign_str =createLinkString(argSort($data));
$sign =rsaSign($unsign_str, $rsa_path);
$params = createLinkstringUrlencode($data);
$url = $MAPI_GATEWAY . '?' . $
一些函数:
* 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
* @param $para mixed 需要拼接的数组
* @return string 拼接完成以后的字符串
public static function createLinkString($para) {
while (list ($key, $val) = each ($para)) {
if($val == "") {
$arg.=$key."=".$val."&";
//去掉最后一个&字符
$arg = substr($arg,0,count($arg)-2);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){
$arg = stripslashes($arg);
* 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 并对字符串做urlencode编码
* @param $para mixed 需要拼接的数组
* @return string 拼接完成以后的字符串
public static function createLinkstringUrlencode($para) {
while (list ($key, $val) = each ($para)) {
if($val == "") {
$arg.=$key."=".urlencode($val)."&";
//去掉最后一个&字符
$arg = substr($arg,0,count($arg)-2);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){
$arg = stripslashes($arg);
* 数组排序 按照ASCII字典升序
* @param $para mixed 排序前数组
* @return mixed 排序后数组
public static function argSort($para) {
ksort($para);
reset($para);
* @param $data string 待签名数据
* @param $private_rsa_path string 用户私钥地址
* @return mixed
失败:false
成功:签名结果
public static function rsaSign($data, $private_rsa_path) {
$private_rsa = file_get_contents($private_rsa_path);
$res = openssl_get_privatekey($private_rsa);
if(!$res) {
openssl_sign($data, $sign, $res);
openssl_free_key($res);
//base64编码
$sign = base64_encode($sign);
2 退款结果通知
验证签名可以直接下载支付宝sdk例子,进行直接调用。
下载地址:
打开其中服务端Demo将里面验证通知部分取出来使用。
$$alipay_partnerid = "";
$$alipay_public_key_path = "";
//支付宝公钥路径
$alipayNotify = new AlipayNotify($alipay_partnerid, $alipay_public_key_path);
$verify_result = $alipayNotify-&verifyNotify();
if(!$verify_result) {
//签名验证失败 todo
die("fail");
//成功接收并验证了通知
echo("success");
//解析result_details里面每笔退款的状态,然后更新退款状态
//支付成功处理 发货
更多文章关注我的公众号
我的公众号
微信公众号:Tsy远
Github:https://github.com/tsy12321
所有文章及以后更新已经迁移至掘金,地址是 https://juejin.im/user/cfecf
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注
09:45字数 61697阅读 3316评论 2喜欢 85 用到的组件 1、通过CocoaPods安装 项目名称 项目信息 AFNetworking 网络请求组件 FM...
简单介绍了支付宝App支付的申请、接入、使用、确认支付结果等相关流程 0 系列文章 系列一 微信App支付全解析系列二 支付宝App支付全解析系列三 微信公众号支付全解析系列四 微信扫码支付全解析系列五 支付宝即时到账支付全解析系列六 微信退款全解析系列七 支付宝退款全解析...
由于支付宝增加开放平台的概念,支付申请和调用有了较大的更新和升级,本篇文章会带你介绍开放平台的支付申请方式和新支付接口和之前的区别。 0 系列文章 系列一 微信App支付全解析系列二 支付宝App支付全解析系列三 微信公众号支付全解析系列四 微信扫码支付全解析系列五 支付宝...
上一章 第二天一大早,杨旭便送李菲菲过来了,东方慧于是来到楼下接李菲菲。 “老公,你一个人在外面要注意身体,一定要好好吃饭。”李菲菲与杨旭依依惜别道。 “你也一样,老婆。”杨旭柔声地说道,然后转身对东方慧说,“慧,给你添麻烦了。” “客气什么,不怕你的心肝宝贝被我们...
家有小馋猫 “妈妈,妈妈,我的肚子都快饿扁了!”小家伙一进门就冲着正在做饭的我嚷道。 “好的,好的,马上就开饭了”我边说边加快了翻菜的速度。 “那我能不能先喝袋奶呀。。。” “马上就开饭了,不能喝!” “那我能不能不吃饭,光喝奶呀?” 。。。原来只...
最近,因为,长辈生病,经常出入医院,看到那些住院病人的那一刻时,让我深刻的感触到生命的脆弱性。特别,是在那些重症病房里的病人,也许下一刻就离开人世了。这也警惕了我们爱年轻时,在还没有得病时,就要做好防范措施,平时要多锻炼,注意饮食和起居的习惯。因为,病都是通过长期不规律的生...
静看花开花落,笑对云卷云舒。管他世事纷争,我自独享天下。人是尘间客,过往不留声。 既已皈依佛门,当应了却凡心。从此斩断千般念,至此再度入空门。来自ECJiaWiki
想要通过支付宝进行商品销售的收款,需在支付宝商户平台(
填写企业相关资料信息,申请支付宝接入相关支付服务。
用户登录支付宝账号后,可根据需要选择不同的支付服务,H5选择手机网站支付,APP选择
选择好服务支付宝后会给出产品接入的相关介绍和指引,选择的服务不同需要填写提交的
资料也不相同,按照支付宝要求去完成即可,注意以下事项:
手机网站支付需要支付宝企业账号,APP支付个人和企业账号都可以;
手机网站只需填写企业信息资料,APP支付需提交APP说明文档(安装包);
完成资料填写并提交后,经过支付宝审核成功开通服务后,获取支付宝相关服务的接口
及参数后,还需要在ECJia后台中进行配置,完成后即可使用支付宝。
访问支付宝商家平台,登录支付宝账号,选择 我的商家服务 ,如下图所示;
跳转至 我的商家服务 用户页面,找到 签约管理 ,如下图所示;
签约管理页,在主账户旁边点击 查看PID丨Key ,如下图所示:
PID和公钥管理下,选择 mapi网管产品密钥 ,如下图所示:
ECJia后台中配置H5支付宝支付,只需要填写支付宝账户、安全校验码及合作者身份ID,
可在 mapi网管产品密钥 栏下找到这些信息,填写好后确认无误即可。
进入ECJia平台后台,由 支付方式——支付方式列表 中找到支付宝,点击编辑可至
如下页面,填写以下参数确认无误保存即可;
支付宝账号,就是申请接入时登陆的支付宝账号;
交易安全校验码,即上图中的MD5密钥,复制填写即可;
合作者身份ID,上图中的合作伙伴身份ID;
APP支付宝配置相比较于H5要复杂一些,需要用户自己生成公钥及私钥,将公钥上传至支
付宝,并在后台中填写私钥等信息。
支付宝密钥是需要用户自己本地生成的,之后再将公钥上传至支付宝,私钥由用户自己
保存这种方式,能大大提高安全性,避免资金安全风险。
支付宝中提供了两种公私钥生成方式:1.一键生成工具,2.OpenSSL工具命令生成;
推荐使用第一种方式一键生成,更方便快捷不易出错。
在蚂蚁金服开放平台文档中心可以下载一键生成工具,网络地址如下:
下载完成后打开一键生成工具,界面效果图如下(图为MAC OSX版,WIN基本相同):
接下来就需要在本地先生成密钥,点击生成RSA密钥后,会生成一对公钥和私钥;
其中公钥需要上传至支付宝中,私钥有正常格式和PKCS8格式,如下图所示:
生成公钥私钥后,需要将公钥至支付宝中,根据自己使用的产品服务选择上传,这里
选择“mapi网管产品密钥”入口上传RSA公钥。
由mapi网管产品密钥至如下页面,点击RSA(SHA)密钥后的“添加密钥”,完成
手机验证后,复制粘贴一键生成工具中公钥并保存,由查看支付宝公钥可查看确认公钥。
完成公钥的上传后,只需在ECJia后台中配置参数,即可使用支付宝支付。
进入ECJia平台后台,由支付方式——支付方式列表中找到支付宝,点击编辑可至
如下页面,填写以下参数确认无误保存即可;
支付宝账号,就是申请接入时登陆的支付宝账号;
交易安全校验码,即上图中的MD5密钥,复制填写即可;
合作者身份ID,上图中的合作伙伴身份ID;
选择接口类型,选择使用及时到账交易接口;
RSA(私钥),可使用Txt打开生成的私钥文件,复制粘贴至此;
RSA(PKCS8私钥),同上;

我要回帖

更多关于 支付宝退款返回40004 的文章

 

随机推荐