直接购买链接获取接口

更新时间:

直接购买链接获取接口

接口说明

接口名称:alipay.aipay.nowpaydirect.purchase.create

获取普通购买入口或锁定指定档位的购买入口。传入 sku_id 时锁定该档位;不传时由用户在托管购买页选择可售档位。

适用场景

  • 额度不足时引导用户购买次数包或积分包。
  • 用户主动加购额度,即使当前仍有余额。
  • 应用已展示档位并希望直接打开指定档位购买页。

注意事项

  • out_request_no 标识一次获取购买入口的请求,不是支付宝交易号。商户应为每次独立请求生成唯一值并持久化;超时重试使用原值与原参数。
  • sku_id 必须取自当前商品 charge.query 的可售档位。不传 sku_id 时打开可选档位的普通购买页。
  • callback_url 如传入,使用 HTTPS 地址。
  • 同一请求号重试须保持商品、受益人、sku_id 和 callback_url 一致。

公共请求参数

参数类型是否必选长度/取值描述示例值
app_idString必选32支付宝分配给开发者的应用IDYOUR_APP_ID
methodString必选128接口名称alipay.aipay.nowpaydirect.purchase.create
formatString可选40仅支持JSONJSON
charsetString必选10请求使用的编码格式,如utf-8,gbk,gb2312等utf-8
sign_typeString必选10请求签名算法,推荐 RSA2RSA2
signString必选344商户请求参数的签名串,详见签名详见示例
timestampString必选19发送请求的时间,格式”yyyy-MM-dd HH:mm
”
2026-09-27 10:00:00
versionString必选3调用的接口版本,固定为:1.01.0
app_auth_tokenString可选40已获授权的第三方代调用场景使用的应用授权令牌,详见应用授权概述-
biz_contentString必选-业务请求参数的 JSON 字符串,字段使用 snake_case;详见下表-

业务请求参数

参数类型是否必选长度/取值描述注意事项/枚举值示例值
out_request_noString必选128商户生成的幂等请求号重试保持原值与原业务参数;不同请求使用不同值purchase_20260927_000001
out_product_idString必选128直连商品的外部商品 ID,从管理小程序商品详情页复制使用当前商户创建的商品;不要自行生成或使用内部商品号np_d_f83a7c91
external_buyer_idString必选128应用内稳定的权益受益人标识与应用登录用户绑定;不等同于付款账号user_001
sku_idString可选64可选,希望直接指定购买档位时可传入取自当前商品的 charging_options;不传则在购买页选择档位S0806000200863003
callback_urlString可选512购买完成返回地址页面返回地址,不是异步通知地址;返回后重新查询状态;如传入必须为 HTTPShttps://app.example.com/nowpay/purchase-return

常见请求示例

示例商品、用户、域名及请求号均为演示值。Java 使用包含该接口请求类的支付宝服务端 SDK;示例按公钥模式初始化,私钥仅保存在应用服务端。cURL 中的签名需在发送前按全部实际参数生成。

import com.alipay.api.AlipayConfig;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayAipayNowpaydirectPurchaseCreateRequest;
import com.alipay.api.response.AlipayAipayNowpaydirectPurchaseCreateResponse;

public class NowpayExample {
    public static void main(String[] args) throws Exception {
        AlipayConfig config = new AlipayConfig();
        config.setServerUrl("https://openapi.alipay.com/gateway.do");
        config.setAppId(System.getenv("ALIPAY_APP_ID"));
        config.setPrivateKey(System.getenv("ALIPAY_PRIVATE_KEY"));
        config.setAlipayPublicKey(System.getenv("ALIPAY_PUBLIC_KEY"));
        config.setFormat("json");
        config.setCharset("UTF-8");
        config.setSignType("RSA2");
        AlipayClient client = new DefaultAlipayClient(config);

        AlipayAipayNowpaydirectPurchaseCreateRequest request = new AlipayAipayNowpaydirectPurchaseCreateRequest();
        request.setBizContent("{\"out_request_no\":\"purchase_20260927_000001\",\"out_product_id\":\"np_d_f83a7c91\",\"external_buyer_id\":\"user_001\",\"sku_id\":\"S0806000200863003\",\"callback_url\":\"https://app.example.com/nowpay/purchase-return\"}");
        // 仅在已获授权的第三方代调用场景设置 app_auth_token。
        String appAuthToken = System.getenv("ALIPAY_APP_AUTH_TOKEN");
        if (appAuthToken != null && !appAuthToken.isEmpty()) {
            request.putOtherTextParam("app_auth_token", appAuthToken);
        }
        AlipayAipayNowpaydirectPurchaseCreateResponse response = client.execute(request);
        if (!response.isSuccess()) {
            // 按 code/sub_code 处理;结果未知时保留原业务请求号。
            System.out.println(response.getCode() + ":" + response.getSubCode());
            return;
        }
        // 网关成功后,按本页“结果处理”读取业务字段。
        System.out.println(response.getBody());
    }
}
biz_content='{
  "out_request_no": "purchase_20260927_000001",
  "out_product_id": "np_d_f83a7c91",
  "external_buyer_id": "user_001",
  "sku_id": "S0806000200863003",
  "callback_url": "https://app.example.com/nowpay/purchase-return"
}'

# app_id、timestamp、sign 由商户准备;sign 必须基于本次完整参数生成。
curl --request POST 'https://openapi.alipay.com/gateway.do' \
  --data-urlencode "app_id=${app_id}" \
  --data-urlencode 'method=alipay.aipay.nowpaydirect.purchase.create' \
  --data-urlencode 'format=json' \
  --data-urlencode 'charset=UTF-8' \
  --data-urlencode 'sign_type=RSA2' \
  --data-urlencode "timestamp=${timestamp}" \
  --data-urlencode 'version=1.0' \
  --data-urlencode "biz_content=${biz_content}" \
  --data-urlencode "sign=${sign}"

公共响应参数

参数类型是否必选长度/取值描述示例值
codeString必选-网关返回码;10000 表示接口调用成功10000
msgString必选-网关返回码说明Success
sub_codeString可选-业务错误码;仅用于接口失败处理-
sub_msgString可选-业务错误说明;不用于编写固定业务分支-
signString必选-响应签名,位于响应根对象;由 SDK 按配置验签-

响应业务对象名为 alipay_aipay_nowpaydirect_purchase_create_response。先完成验签并判断 code,再读取业务结果。

业务响应参数

参数类型是否必选长度/取值描述注意事项/枚举值示例值
purchase_urlString必选512购买链接地址,用于手机端直接跳转购买-alipays://platformapi/startapp?appId=2021006180624128&page=pages%2Forder%2Findex%3FpurchaseLinkId%3DSAMPLE_LINK_ID
purchase_qr_codeString必选512购买二维码,用于pc端直接展示二维码后扫码购买-https://mobilecodec.alipay.com/show.htm?code=SAMPLE_QR_CODE
expire_timeString必选32链接失效时间;格式 yyyy-MM-dd HH:mm:ss,时区 Asia/Shanghai-2026-09-27 10:30:00

结果处理

成功后打开 purchase_url 或展示 purchase_qr_code。链接、二维码和令牌都使用接口实际返回值,不解析、不拼接。到期后先刷新用户权益或额度,再按用户购买意图获取新入口。

响应示例

以下示例仅使用公开预览定义的字段,并按单一业务场景整理。签名、链接令牌和二维码均为占位值,不可直接使用。

{
  "alipay_aipay_nowpaydirect_purchase_create_response": {
    "code": "10000",
    "msg": "Success",
    "purchase_url": "alipays://platformapi/startapp?appId=2021006180624128&page=pages%2Forder%2Findex%3FpurchaseLinkId%3DSAMPLE_LINK_ID",
    "purchase_qr_code": "https://mobilecodec.alipay.com/show.htm?code=SAMPLE_QR_CODE",
    "expire_time": "2026-09-27 10:30:00"
  },
  "sign": "RESPONSE_SIGNATURE_PLACEHOLDER"
}
{
  "alipay_aipay_nowpaydirect_purchase_create_response": {
    "code": "20000",
    "msg": "Service Currently Unavailable",
    "sub_code": "isp.unknow-error",
    "sub_msg": "系统繁忙"
  },
  "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

普通购买入口

不传 sku_id 时,由用户在托管页选择档位。

{
  "alipay_aipay_nowpaydirect_purchase_create_response": {
    "code": "10000",
    "msg": "Success",
    "purchase_url": "alipays://platformapi/startapp?appId=2021006180624128&page=pages%2Forder%2Findex%3FpurchaseLinkId%3DSAMPLE_LINK_ID",
    "purchase_qr_code": "https://mobilecodec.alipay.com/show.htm?code=SAMPLE_QR_CODE",
    "expire_time": "2026-09-27 10:30:00"
  },
  "sign": "RESPONSE_SIGNATURE_PLACEHOLDER"
}

公共错误码

参见支付宝公共错误码。网关或系统异常时,按原请求查询或重试;写操作不能在结果未确认时更换幂等号。

业务错误码

以下保留当前开放平台预览已列出的错误码,并补充应用处理建议。错误码列表可能扩展,商户应保留未知错误的待确认处理。

错误码错误描述解决方案
SYSTEM_ERROR系统繁忙稍后使用原参数重试;消费结果未知时先查询原请求
INVALID_PARAMETER参数有误请根据接口返回的参数非法的具体错误信息,修改参数后进行重试
BILLING_MODE_NOT_SUPPORTED计价模式不支持请确认商品收费模式
NOW_PAY_BINDING_INVALID商品绑定关系不存在/不匹配商品绑定关系不存在/不匹配
NOW_PAY_CHARGING_OPTION_UNAVAILABLE指定档位已下架或不存在确认 sku_id与 charge.query 返回的可售档位一致
NOW_PAY_ORDER_CONFLICT同一幂等请求号对应的业务参数不一致核对原请求参数;原请求结果未知时不要换号重试
NOW_PAY_PRODUCT_NOT_PURCHASABLE该商品不可购买请检查商品上架状态
NOW_PAY_PURCHASE_LINK_CREATING当前购买链接正在创建中,不允许重复提交请求稍后用原 out_request_no 和原参数重试
NOW_PAY_PURCHASE_LINK_INVALID购买链接已过期或不存在确认旧购买入口失效后,按新的购买意图生成新请求号;不要将核销超时按此处理