跳转到主要内容
POST
/
v1
/
payments
/
open
/
api
/
pay
消费
curl --request POST \
  --url https://gate.dev.payloco.com/gateway/v1/payments/open/api/pay \
  --header 'Content-Type: application/json' \
  --header 'signature: <api-key>' \
  --data '
{
  "charset": "UTF-8",
  "version": "2.0.0",
  "transType": "PAY",
  "accessType": "s2s",
  "signType": "RSA",
  "memberId": "2023010558663764",
  "merchantId": "2023010558663764",
  "requestTime": "2024-05-24T14:29:32.682+08:00",
  "keyVersion": "string",
  "data": {
    "outTradeNo": "ORD202604231532478921",
    "integrate": "Direct_Payment",
    "captureMode": "MANUAL",
    "authorizationType": "FINAL_AUTH",
    "subject": "string",
    "totalAmount": 100,
    "currency": "USD",
    "country": "US",
    "userId": "U123333333",
    "expireTime": "1800",
    "paymentDetail": {
      "paymentMethodType": "WALLET",
      "targetOrg": "KLARNA",
      "payAccountInfo": {
        "accountNo": "string",
        "accountNoType": "string"
      },
      "cardInfo": {
        "cardIdentifierNo": "string",
        "cardHolderFullName": "string",
        "cardExpirationMonth": "st",
        "cardExpirationYear": "st",
        "cvv": "stri",
        "stored": "s",
        "dynamic3DS": "string"
      },
      "buyerInfo": {
        "firstName": "string",
        "middleName": "string",
        "email": "string",
        "lastName": "string",
        "phoneNo": "string",
        "phoneNoRegion": "string",
        "idType": "string",
        "idNo": "string",
        "taxType": "string",
        "taxNo": "string",
        "address": "string",
        "city": "string",
        "region": "string",
        "zipCode": "string",
        "clientIp": "string",
        "userAgent": "string"
      },
      "paymentTokenID": "string",
      "tokenForFutureUse": true,
      "merchantInitiated": "string",
      "mitType": "SCHEDULED",
      "info3DSecure": {
        "threeDSVersion": "string",
        "eci": "string",
        "cavv": "string",
        "dsTransactionId": "string",
        "xid": "string"
      },
      "carrierId": "string"
    },
    "goodsDetails": [
      {
        "goodsId": "string",
        "goodsName": "string",
        "quantity": "string",
        "price": "string",
        "goodsCurrency": "string",
        "showUrl": "string",
        "goodsCategory": "string"
      }
    ],
    "subMerchant": {
      "subMerchantNo": "string"
    },
    "shippingInfo": {
      "firstName": "string",
      "middleName": "string",
      "lastName": "string",
      "phoneNo": "string",
      "email": "string",
      "address1": "string",
      "city": "string",
      "region": "string",
      "state": "string",
      "country": "string",
      "zipCode": "string",
      "address2": "string",
      "address3": "string"
    },
    "billingInfo": {
      "firstName": "string",
      "middleName": "string",
      "lastName": "string",
      "phoneNo": "string",
      "email": "string",
      "address1": "string",
      "city": "string",
      "country": "string",
      "region": "string",
      "state": "string",
      "zipCode": "string",
      "address2": "string",
      "address3": "string"
    },
    "envInfo": {
      "deviceId": "string",
      "deviceLanguage": "string",
      "screenHeight": "string",
      "screenWidth": "string"
    },
    "language": "string",
    "riskParams": {},
    "terminalType": "string",
    "osType": "string",
    "reference": "string",
    "frontCallbackUrl": "string",
    "notifyUrl": "string",
    "subscriptionPlan": {
      "subscriptionNo": "string"
    }
  }
}
'
{
  "isSuccess": true,
  "errCode": "00000003",
  "errMessage": "处理中",
  "status": "PENDING",
  "traceId": "33fae7b7aed1233f",
  "success": true,
  "code": "00000003",
  "message": "处理中"
}

授权

signature
string
header
必填

加签

加签是开放平台和商户对于交互消息完整性的校验。加签行为主要发生两个部分:

  1. 商户服务器端针对向PayLoco开放平台发送的请求报文进行加签;
  2. PayLoco开放平台针对通知商户的异步消息进行加签。 PayLoco平台要求使用 RSA 私钥进行加签, 使用 RSA 公钥进行验签。 因此,在以上两部分描述的交互中, 存在商户公私钥、PayLoco 公私钥,开发者需要使用商户私钥,对第一部分报文进行加签,使用 PayLoco 公钥对第二部分消息进行验签。

加签规则如下:

  1. 使用 商户私钥对待 request.body 进行签名(SHA256WithRSA 计算原始数据的SHA-256哈希值。 使用私钥对哈希值进行签名,即使用私钥对哈希值进行RSA加密。此时得到的加密结果就是数字签名。);
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
// 计算 SHA256withRSA 签名时,需要以 utf-8 的编码转换 byte 流,否则可能导致含中文参数的签名计算不正确
signature.update(request.body);
byte[] signedHash = signature.sign();
  1. 将加签内容进行 Base64 编码;
String signature = Base64.getEncoder().encodeToString(signedHash);
  1. 将编码后的内容放在请求头部 signature 参数中。 注意,加签是对 request.body 进行签名,当查询等 request.body 为空时,则无需加签。

请求头

signature
string
必填

签名

示例:

"FPFVT3o227JrFRbqu19boZCpVVTF9KznxyRawUmxpfXilHV/0yK46haPhAjNu1hPUMy7Vw/ILXhfzffNm4Fj0apWknlTY9OJxnSoQxS9BTFtc61tn5yV1q69x/kkBl82/qwg+XTJ4fOzy7Mar3VaC1E2PlDA6RkkKBUyNE6RYgsdB+Su7an4+4HVTNAnoe74WyvBgxTLMNg28igBTdqxaO3w/UBY6ObVp7vkqkQGdL1Y+HgmMYaAVwrM3+ALWGId0sJ+YqTY4WJ+0xCRGhaSnybiIjZsQEYyID68WNUfuavDLDsEhaMm/HfQvf5p0R1Ltovp3wwJnEbQcjY458iX5A=="

请求体

application/json
charset
string
默认值:UTF-8
必填

交互数据的编码【utf-8】

示例:

"UTF-8"

version
string
必填

接口版本,当前版本为【2.0.0】,目前只能传2.0.0,不能不传

Maximum string length: 8
示例:

"2.0.0"

transType
enum<string>
默认值:PAY
必填

交易类型

  • 支付类交易使用 PAY
  • VCC 卡交易使用 VCC
可用选项:
PAY,
CREDIT_CARD,
3D_PREAUTH_VOIDS,
3D_PREAUTH_COMPLETION,
REFUND,
VOIDS,
QUERY,
TRANSFER,
DOWNLOAD,
REGISTRATION,
FILEUPLOAD,
INQUIRYREGISTRATIONSTATUS,
AUTHORIZE,
VCC
accessType
string
默认值:s2s
必填

接口访问类型

示例:

"s2s"

signType
string
必填

报文签名类型

示例:

"RSA"

memberId
string
必填

机构号

示例:

"2023010558663764"

merchantId
string
必填

商户号

Maximum string length: 32
示例:

"2023010558663764"

requestTime
string
必填

请求时间,符合rfc3339规范,格式:yyyy-MM-dd'T'HH:mm:ss.SSSXXX 时间需要在当前时间两分钟内

Maximum string length: 32
示例:

"2024-05-24T14:29:32.682+08:00"

keyVersion
string
必填

密钥版本 当前值为:1

Maximum string length: 8
data
object

请求数据体

响应

200 - application/json

OK

success
boolean
必填

是否成功

code
string
必填

响应状态码,errCode为00000000表示响应成功,其他状态码表示响应失败。具体系统错误码可以参考系统错误码。

示例:

"00000003"

message
string
必填

错误消息

示例:

"处理中"

status
string
必填

订单状态(见补充说明)

示例:

"PENDING"

traceId
string
必填

请求消息唯一标识。traceId为本次调用产生的流水号,接口调用异常,可以提供此流水号用于排查问题。

示例:

"33fae7b7aed1233f"

data
object