接入指南
接口调用
调用流程图

发送订单信息
示例代码
my.request({
url: '商家服务端地址',//须加httpRequest域白名单
method: 'POST',
data: {//data里的key、value是开发者自定义的
from: '支付宝',
order: 'XXXXX',//订单信息
},
dataType: 'json',
success: function(res) {
my.alert({content: 'success'});
},
fail: function(res) {
my.alert({content: 'fail'});
},
complete: function(res) {
my.hideLoading();
my.alert({content: 'complete'});
}
});
创建交易订单
示例代码
package com.java.sdk.demo;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayTradeApi;
import com.alipay.v3.model.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayTradeApiCreate {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
AlipayTradeApi api = new AlipayTradeApi();
AlipayTradeCreateModel data = new AlipayTradeCreateModel();
ExtendParams extendParams = new ExtendParams();
extendParams.setTradeComponentOrderId("2023060801502300000008810000005657");
extendParams.setSysServiceProviderId("2088511833207846");
extendParams.setSpecifiedSellerName("XXX的跨境小铺");
extendParams.setRoyaltyFreeze("true");
extendParams.setCardType("S0JP0000");
data.setExtendParams(extendParams);
data.setBuyerId("2088102146225135");
BusinessParams businessParams = new BusinessParams();
businessParams.setMcCreateTradeIp("127.0.0.1");
businessParams.setEnterprisePayInfo("{\"category_list\":[{\"price\":\"10.24\",\"name\":\"餐饮服务\",\"category\":\"3070401000000000000\"}]}");
businessParams.setEnterprisePayAmount("10.00");
businessParams.setTinyAppMerchantBizType("KX_SHOPPING");
businessParams.setCampusCard("0000306634");
businessParams.setActualOrderTime("2019-05-14 09:18:55");
businessParams.setCardType("T0HK0000");
businessParams.setGoodTaxes("10.00");
data.setBusinessParams(businessParams);
data.setOutTradeNo("20150320010101001");
data.setProductCode("FACE_TO_FACE_PAYMENT");
LogisticsDetail logisticsDetail = new LogisticsDetail();
logisticsDetail.setLogisticsType("EXPRESS");
data.setLogisticsDetail(logisticsDetail);
data.setUndiscountableAmount("8.88");
data.setDiscountableAmount("80.00");
data.setOperatorId("Yx_001");
BkAgentReqInfo bkagentReqInfo = new BkAgentReqInfo();
bkagentReqInfo.setMerchCode("123412341234");
bkagentReqInfo.setLocation("+37.28/-121.268");
bkagentReqInfo.setDeviceType("02");
bkagentReqInfo.setAcqCode("12345678901234");
bkagentReqInfo.setSerialNum("123123123123");
data.setBkagentReqInfo(bkagentReqInfo);
data.setOpAppId("2014072300007148");
List<GoodsDetail> goodsDetail = new ArrayList<GoodsDetail>();
GoodsDetail goodsDetail0 = new GoodsDetail();
goodsDetail0.setQuantity(1);
goodsDetail0.setPrice("2000");
goodsDetail0.setGoodsCategory("34543238");
goodsDetail0.setCategoriesTree("124868003|126232002|126252004");
goodsDetail0.setGoodsId("apple-01");
goodsDetail0.setShowUrl("http://www.alipay.com/xxx.jpg");
goodsDetail0.setGoodsName("ipad");
goodsDetail0.setOutItemId("outItem_01");
goodsDetail0.setOutSkuId("outSku_01");
goodsDetail.add(goodsDetail0);
data.setGoodsDetail(goodsDetail);
data.setTerminalId("NJ_T_001");
ReceiverAddressInfo receiverAddressInfo = new ReceiverAddressInfo();
receiverAddressInfo.setDivisionCode("310115");
receiverAddressInfo.setMobile("13120180615");
receiverAddressInfo.setAddress("上海市浦东新区陆家嘴银城中路501号");
receiverAddressInfo.setName("张三");
receiverAddressInfo.setZip("200120");
data.setReceiverAddressInfo(receiverAddressInfo);
List<String> queryOptions = new ArrayList<String>();
queryOptions.add("enterprise_pay_info");
queryOptions.add("hyb_amount");
data.setQueryOptions(queryOptions);
SettleInfo settleInfo = new SettleInfo();
List<SettleDetailInfo> settleDetailInfos = new ArrayList<SettleDetailInfo>();
SettleDetailInfo settleDetailInfos0 = new SettleDetailInfo();
settleDetailInfos0.setTransInType("cardAliasNo");
settleDetailInfos0.setAmount("0.1");
settleDetailInfos0.setTransIn("A0001");
settleDetailInfos0.setActualAmount("0.1");
settleDetailInfos0.setSummaryDimension("A0001");
settleDetailInfos0.setSettleEntityType("SecondMerchant");
settleDetailInfos0.setSettleEntityId("2088xxxxx;ST_0001");
settleDetailInfos.add(settleDetailInfos0);
settleInfo.setSettleDetailInfos(settleDetailInfos);
settleInfo.setSettlePeriodTime("7d");
data.setSettleInfo(settleInfo);
SignParams agreementSignParams = new SignParams();
agreementSignParams.setSignScene("INDUSTRY|DIGITAL_MEDIA");
agreementSignParams.setExternalLogonId("13888888888");
agreementSignParams.setPersonalProductCode("CYCLE_PAY_AUTH_P");
AccessParams accessParams = new AccessParams();
accessParams.setChannel("ALIPAYAPP");
agreementSignParams.setAccessParams(accessParams);
SignMerchantParams subMerchant = new SignMerchantParams();
subMerchant.setSubMerchantServiceName("滴滴出行免密支付");
subMerchant.setSubMerchantServiceDescription("免密付车费,单次最高500");
subMerchant.setSubMerchantName("滴滴出行");
subMerchant.setSubMerchantId("2088123412341234");
agreementSignParams.setSubMerchant(subMerchant);
agreementSignParams.setSignNotifyUrl("http://www.merchant.com/receiveSignNotify");
agreementSignParams.setExternalAgreementNo("test20190701");
agreementSignParams.setAllowHuazhiDegrade(false);
List<OpenApiSpecifiedChannelParamsPojo> recommendSortChannelParams = new ArrayList<OpenApiSpecifiedChannelParamsPojo>();
OpenApiSpecifiedChannelParamsPojo recommendSortChannelParams0 = new OpenApiSpecifiedChannelParamsPojo();
recommendSortChannelParams0.setAssetTypeCode("ALICREDIT");
recommendSortChannelParams0.setInstId("INST_ALIPAY");
recommendSortChannelParams.add(recommendSortChannelParams0);
agreementSignParams.setRecommendSortChannelParams(recommendSortChannelParams);
PeriodRuleParams periodRuleParams = new PeriodRuleParams();
periodRuleParams.setPeriodType("DAY");
periodRuleParams.setPeriod(3);
periodRuleParams.setTotalPayments(12);
periodRuleParams.setExecuteTime("2019-01-23");
periodRuleParams.setSingleAmount("10.99");
periodRuleParams.setTotalAmount("600");
agreementSignParams.setPeriodRuleParams(periodRuleParams);
agreementSignParams.setProductCode("GENERAL_WITHHOLDING");
data.setAgreementSignParams(agreementSignParams);
data.setSellerId("2088102146225135");
data.setBody("Iphone6 16G");
data.setSubject("Iphone6 16G");
data.setTimeExpire("2021-12-31 10:05:00");
data.setTimeoutExpress("90m");
data.setTotalAmount("88.88");
data.setStoreId("NJ_001");
try {
AlipayTradeCreateResponseModel response = api.create(data);
} catch (ApiException e) {
AlipayTradeCreateDefaultResponse errorObject = (AlipayTradeCreateDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}
重要入参说明
/,=,&
等。唤起收银台支付
示例代码
// .js
my.tradePay({
// 调用统一收单交易创建接口(alipay.trade.create),获得返回字段支付宝交易号trade_no
tradeNO: '201711152100110410533667792',
success: (res) => {
my.alert({
content: JSON.stringify(res),
});
},
fail: (res) => {
my.alert({
content: JSON.stringify(res),
});
}
});
异步通知
success
。如果商家反馈给支付宝的字符不是 success 这 7 个字符,支付宝服务器会不断重发通知,直到超过 24 小时 22 分钟。一般情况下,25 小时以内完成 8 次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h)。