跳到主要内容

直连

网关地址

POST

https://sandbox.j-pay.net/pay_index

测试账号

商户号:10151

ApiKey: 3p17o32a83gge5tho3vpv0m61nvhtye9

测试卡号

卡号有效期cvv
424242424242424212 2027123测试成功
400000000000101812 2027123测试失败
414141414141414112 2027123测试跳转

请求参数

参数名称类型是否必填参与签名参数说明
pay_memberidString平台分配商户号
pay_orderidString上送订单号唯一, 字符长度 20
pay_applydateString提交时间, 时间格式:2016-12-26 18:18:18
pay_bankcodeString银行编码, 参考后续说明:901
pay_notifyurlString服务端返回地址.(POST 返回数据)
pay_callbackurlString页面跳转返回地址(POST 返回数据)
pay_amountString商品金额
pay_md5signString请看 MD5 签名字段格式
pay_currencyString币种代码,大写字母 (USD)
pay_urlString网站URL, 需提交审核、带http(s)://
pay_cardnoString卡号
pay_cardmonthString2位月份 (02)
pay_cardyearString4位年份 (2023)
pay_cardcvvStringcvv
+pay_productnameString商品信息,参数由下列一组数据,通过JSON格式组成,注意参数名大小写敏感。本字段以JSON数组字符串来填值。示例:[{"sku":"123456789","productName":"MacBook Pro","productImage":"产品图片地址","attributes":"Size:US8 Color:blue","price":"11000.00","quantity":"1"},{"sku":"9876543231","productName":"IPhone 12","productImage":"产品图片地址","attributes":"Size:US8 Color:blue","price":"11000.00","quantity":"1"}]
「skuString商品编号 (唯一)
「productNameString产品名称
「productImageString产品图片URL
「attributesString产品属性
「priceString产品价格
「quantityString产品数量
pay_firstnameString账单名字
pay_lastnameString账单姓氏
pay_street_address1String账单地址1
pay_street_address2String账单地址2
pay_cityString账单城市
pay_postcodeString账单邮编
pay_stateString账单州/省
pay_country_iso_code_2String账单国家
pay_email_addressString账单邮箱
pay_telephoneString账单电话
shipping_firstnameString收件名字
shipping_lastnameString收件姓氏
shipping_street_address1String收件地址1
shipping_street_address2String收件地址2
shipping_cityString收件城市
shipping_stateString收件州/省
shipping_postcodeString收件邮编
shipping_country_iso_code_2String收件国家
shipping_telephoneString收件电话
pay_ipString用户IP地址
pay_useragentString用户浏览器信息
pay_languageString语言
systemString网站系统, 如:zencart/opencart/wrodpress/magento

请求支付返回参数

参数名称类型参数说明
statusIntstatus = 0:SUCCESS
status = 1:3d支付跳转
status = 2:failed
msgString下单成功 or 下单失败
urlString3d支付跳转地址

示例

$result = {"ststus":"0","msg":"success"}
$result = {"status":"1","url":"'.$json['url'].'"}
$result = {"status":"2","msg":"'.$json['msg'].'"}
$json = json_decode($result, true);
if ($json['status'] = '0') {
跳转成功页面
}elseif ($json['status'] = '1') {
跳转3d支付地址
} elseif($json['status']= '2') {
跳转失败页面
} else {
echo $result;//直接输出
exit;
}

3DS验证

跳转支付和直接信用卡支付需要3DS验证

同步返回:(application/x-www-form-urlencoded)

参数名称类型是否必填参数说明
paymentStatusStringSucceeded: 成功
Fail:失败
Processing:处理中
orderIDString订单号

示例

https://www.xxxx.com/callback.html?paymentStatus=succeeded&orderID=1001

异步返回:(application/x-www-form-urlencoded)

参数名称类型是否必填参数说明
memberidString商户 ID
orderidString商户订单号
amountString提交的订单金额
true_amountString买家实际付款的金额
transaction_idString平台订单号
returncodeString“00” 为成功
"2":为失败
datetimeString交易时间,格式:20220419000114
signString请看验证签名字段格式
attachString
Array{
["memberid"]=>
string(5) "10012"
["orderid"]=>
string(7) "7758292"
["transaction_id"]=>
string(20) "20230117104641499957"
["amount"]=>
string(5) "85.95"
["true_amount"]=>
string(5) "85.95"
["datetime"]=>
string(14) "20230117111809"
["returncode"]=>
string(2) "00"
["sign"]=>
string(32) "48CF5D99A2ADE25DCEF73BC1B1136B9E"
["attach"]=>
string(0) ""
}

请求示例

import { md5 } from "js-md5";
import axios from "axios";

const KEY = "psaf5haxkfp3x66tra1nonvhkq4mpzpr";
const MEMBER_ID = "10005";
let query = {
pay_memberid: MEMBER_ID,
pay_orderid: "O" + Date.now().valueOf(),
pay_applydate: "2024-07-18 06:22:55",
pay_bankcode: "901",
pay_notifyurl: "https://yourdomain.com",
pay_callbackurl: "https://yourdomain.com",
pay_amount: "0.01",
};
let signData = [];
Object.keys(query)
.sort()
.forEach((key) => signData.push(`${key}=${query[key]}`));

signData.push(`key=${KEY}`);
Object.assign(query, {
pay_md5sign: md5(signData.join("&")).toUpperCase(),
pay_url: "https://yourdomain.com",
pay_currency: "USD",
pay_cardno: "4242424242424242",
pay_cardmonth: "08",
pay_cardyear: "2026",
pay_cardcvv: "123",
pay_productname: JSON.stringify([
{
sku: "123456789",
productName: "Mac Book Pro",
productImage: "url",
attributes: "Size:US8 Color:blue",
price: "11000.00",
quantity: " 1",
},
{
sku: "9876543231",
productName: "IPhone 12",
productImage: "url",
attributes: "Size:US8 Color:blue",
price: "11000.00",
quantity: " 1",
},
]),
pay_firstname: "Rodrigo",
pay_lastname: "lopez",
pay_street_address1: "Nemesio Vicuña 2254 villa cordillera",
pay_street_address2: "Nemesio Vicuña 2254 villa cordillera",
pay_city: "Puente Alto",
pay_postcode: "8150000",
pay_state: "RM",
pay_country_iso_code_2: "CL",
pay_email_address: "[email protected]",
pay_telephone: "+920508435",
shipping_firstname: "Rodrigo",
shipping_lastname: "lopez",
shipping_street_address1: "Nemesio Vicuña 2254 villa cordillera",
shipping_street_address2: "Nemesio Vicuña 2254 villa cordillera",
shipping_city: "Puente Alto",
shipping_state: "RM",
shipping_postcode: "8150000",
shipping_country_iso_code_2: "CL",
shipping_telephone: "+920508435",
pay_ip: "186.156.221.158",
pay_useragent:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.43",
pay_language: "zh",
system: "shopyy",
});

axios
.request({
url: "https://sandbox.j-pay.net/pay_index",
method: "post",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
data: query,
})
.then(({ data }) => {
console.log("success", data);
})
.catch((error) => {
console.log("error", error);
});