跳到主要内容

支付

测试环境: https://api-onramp.stg.eopay.io/payment/create-api-on-ramp-payment

生产环境: https://api-onramp.eopay.io/payment/create-api-on-ramp-payment

请求参数

参数是否必要数据类型描述
typeystringssoLogin。常量:'sso_login'
paymentTypeystring表明是卡支付 常量: 'card'
merchantIdystring商户 onboarding 时注册的 id
orderUuidystring由创建 order 时 返回的 orderUUID 唯一订单 id
clientIpystring客户 IP
currencyystring支付的法币币种
issuerCountryystring支付的卡 的发卡国家 值: ISO-3166-1 alpha-2 code
successUrlystring客户在订单成功后自己决定要跳转的地址
failureUrlystring客户在订单成功后自己决定要跳转的地址
merchantEnable3DSyboolean是否强制开启 3d
cardInfo.cardNumberystring支付的卡号
cardInfo.cardSchemeystring卡组类型 Visa Master
cardInfo.cardTypeystring卡类型 默认: CREDIT
cardInfo.expiryMonthystring卡过期日期 月
cardInfo.expiryYearystring卡过期日期 年
cardInfo.cvvystring卡 cvv
billingAddress.addressLine1ystring持卡人地址
billingAddress.cityystring持卡人城市
billingAddress.zipystring持卡人邮编
billingAddress.countryystring持卡人所在国家
billingAddress.statenstring对于美国和加拿大来说,需要填写州名(例如阿拉斯加、爱达荷州等)。使用 ISO 3166-2 分区代码。美国加拿大 示例: US-AL
customer.idystring唯一客户来自商户系统。例如 sso_customer_id = “abc0000001
customer.emailystring客户邮件
customer.nameystring客户全名 first name 和last name 必须用空格隔开 示例: "Thomas Reed"
customer.phone.numbernstring客户手机号
browserInfo.acceptHeadernstring浏览器信息
browserInfo.javaEnablednstring浏览器信息
browserInfo.javaScriptEnablednstring浏览器信息
browserInfo.languagenstring浏览器信息
browserInfo.colorDepthnstring浏览器信息
browserInfo.screenHeightnstring浏览器信息
browserInfo.screenWidthnstring浏览器信息
browserInfo.timeZonenstring浏览器信息
browserInfo.userAgentnstring浏览器信息

请求参数示例

{
"type": "sso_login",
"merchantId": "1",
"paymentType": "card",
"orderUuid": "6212f63f-c308-419b-81c3-bfa9cd14bec0",
"clientIp": "1.2.3.4",
"cardInfo": {
"cardNumber": "4242424242424242",
"cardScheme": "Visa",
"cardType": "CREDIT",
"expiryMonth": "12",
"expiryYear": "2012",
"cvv": 123
},
"currency": "USD",
"issuerCountry": "AD",
"billingAddress": {
"addressLine1": "hanghzou",
"city": "HANGZHOU",
"zip": "460000",
"country": "AD"
"state": "AL"
},
"successUrl": "https...ess",
"failureUrl": "https...rue",
"customer": {
"id": 1,
"email": "tester@paymentgateway-system.com",
"name": "cooper",
"phone": { "number": "123123123" }
},
"browserInfo": {
"acceptHeader": "text/html,application/xhtml+xml",
"javaEnabled": "FALSE",
"javaScriptEnabled": "TRUE",
"language": "zh-CN",
"colorDepth": 24,
"screenHeight": 1440,
"screenWidth": 2560,
"timeZone": "3",
"userAgent": "Mozil....36"
}
}

2d 支付成功响应示例

{
ok: true,
status: 200,
order: {
ssoOrderId: "TEST-f6ab5532",
orderUuid: "6212f63f-c308-419b-81c3-bfa9cd14bec0",
merchantId: 1,
fiatAmount: 10,
cryptoAmount: 10.00176,
processingFee: 1.5,
liquidityQuote: 1.0002,
cryptoId: 4,
currencyId: 108,
status: 5,
type: 0,
customerWalletId: 135,
},
"3ds": false,
"2dResponse": {
message: "APPROVED",
responseCode: 10000,
},
}

2d 支付失败响应示例

{
order: {
ssoOrderId: "API-TEST-NUVEI- TESTER-02",
orderUuid: "20fee2f5-edb5-4163-a94a-2d5819ad685e",
merchantId: 1,
fiatAmount: 10,
cryptoAmount: 8.5215,
processingFee: 1.48,
liquidityQuote: 1.0002,
cryptoId: 5,
currencyId: 108,
status: 6,
type: 0,
customerWalletId: 3669,
},
"3ds": false,
"2dResponse": {
message: "DECLINED",
responseCode: 30004,
},
}

订单状态在 2d 支付中的返回值说明

  • SUCCESS : order status = 5
  • ERROR: order status = 6 or order status = 16 :

3d 触发成功响应示例

{
status: 200,
order: {
ssoOrderId: "API-TEST-NUVEI- TESTER-03",
orderUuid: "d26a8fe8-236b-4804-aa8d-346fea79f8a9",
merchantId: 1,
fiatAmount: 150,
cryptoAmount: 142.245031,
processingFee: 7.78,
liquidityQuote: 1.0002,
cryptoId: 5,
currencyId: 108,
status: 17,
type: 0,
customerWalletId: 3669,
},
"3ds": true,
"3dResponse": {
acsUrl: "https://3dsn.sandbox.safecharge.com/ThreeDSACSEmulatorChallenge/api/ThreeDSACSChallengeController/ChallengePage?eyJub3RpZmljYXRpb25VUkwiOiJodHRwczovL2FwaS13ZWJob29rLnN0Zy5wZy5ibG9ja2RhbmNlLmlvL2FjcXVpcmVyL3dlYmhvb2svbnV2ZWkvdGhyZWUtZC1jaGFsbGVuZ2UtZG1uIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJkNDliNTRmZC0xMmNjLTQ4YTgtODE5Yy00NjgyYWZiZDNjMmQiLCJhY3NUcmFuc0lEIjoiYzA0ZGJiM2EtMDBmMC00ZmQ0LWJjZGQtY2VlMTI1YzgzZjYyIiwiZHNUcmFuc0lEIjoiN2MyZDkxMDktYWFmMi00MzhkLTgyZTktMTBiYTc1NGJlMmQ4IiwiZGF0YSI6bnVsbCwiTWVzc2FnZVZlcnNpb24iOiIyLjEuMCJ9",
cReq: "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImQ0OWI1NGZkLTEyY2MtNDhhOC04MTljLTQ2ODJhZmJkM2MyZCIsImFjc1RyYW5zSUQiOiJjMDRkYmIzYS0wMGYwLTRmZDQtYmNkZC1jZWUxMjVjODNmNjIiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDUiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIn0",
},
}

3d 响应值说明

提示

根据渠道不同 cReq 可能为空

cReq 为空时 可以直接跳转到 acsUrl

参数数据类型描述
3dResponse.acsUrlstring3d 请求域名信息
3dResponse.cReqstring3d 请求参数

前端集成 3d 流程

// making api call
const url = 'https://api-onramp.eopay.io/payment/create-api-on-ramp-payment'
const response = await fetch(url, {
method: 'POST',
body: JSON.stringify({...}),
headers: {
Authorization: 'Bearer jwt-token-returned-after-successful-login'
}
})

const data = await response.json()

// data would be like :
const res = {
"status":200,
"order": {
"ssoOrderId": "API-TEST-NUVEI- TESTER-03",
"orderUuid": "d26a8fe8-236b-4804-aa8d-346fea79f8a9",
"merchantId": 1,
"fiatAmount": 150,
"cryptoAmount": 142.245031,
"processingFee": 7.78,
"liquidityQuote": 1.0002,
"cryptoId": 5,
"currencyId": 108,
"status": 17,
"type": 0,
"customerWalletId": 3669
},
"3ds": true,
"3dResponse": {
"acsUrl": "https://3dsn.sandbox.safecharge.com/ThreeDSACSEmulatorChallenge/api/ThreeDSACSChallengeController/ChallengePage?eyJub3RpZmljYXRpb25VUkwiOiJodHRwczovL2FwaS13ZWJob29rLnN0Zy5wZy5ibG9ja2RhbmNlLmlvL2FjcXVpcmVyL3dlYmhvb2svbnV2ZWkvdGhyZWUtZC1jaGFsbGVuZ2UtZG1uIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJkNDliNTRmZC0xMmNjLTQ4YTgtODE5Yy00NjgyYWZiZDNjMmQiLCJhY3NUcmFuc0lEIjoiYzA0ZGJiM2EtMDBmMC00ZmQ0LWJjZGQtY2VlMTI1YzgzZjYyIiwiZHNUcmFuc0lEIjoiN2MyZDkxMDktYWFmMi00MzhkLTgyZTktMTBiYTc1NGJlMmQ4IiwiZGF0YSI6bnVsbCwiTWVzc2FnZVZlcnNpb24iOiIyLjEuMCJ9",
"cReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImQ0OWI1NGZkLTEyY2MtNDhhOC04MTljLTQ2ODJhZmJkM2MyZCIsImFjc1RyYW5zSUQiOiJjMDRkYmIzYS0wMGYwLTRmZDQtYmNkZC1jZWUxMjVjODNmNjIiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDUiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIn0"
}
}
// auto submit 3DS Challenge Request
if (res.status === 200 && res['3ds']) {
try {
document.open()
document.write(
`<div style="visibility: hidden">
<form method="POST" action=` + res['3dResponse'].acsUrl + `>
<input type="area" id="creq" name="creq" value=` + res['3dResponse'].cReq + ` />
<input id='send-challenge' type="submit" value="proceed to issuer"/>
</form>
</div>`
)
document.close()
setTimeout(() => {
document.getElementById('send-challenge').click()
}, 100)
return
} catch (error) {
console.error('Error auto submit 3DS Challenge Request form :', error)
}
}

测试卡

2D

MASTERVISAAMEXDISCOVERDINERSCHINA UNION PAY
5101081046006034476134413614139037551051316953765098216653510053612534337274256221272566426206
5101084411423750476120138147529737551028865692462212674654402743860095402252866233050545583578

3D

场景测试金额持卡人名称卡号
无摩擦>=150FL-BRW14000020951595032
发起 3d151CL-BRW22221008123677736
non-3DS10Jane Smith4000027891380961