申请代付
请求地址
POST
https://sandbox.j-pay.net/api/v1/payment/createOrder
测试账号
Merchant ID:10010
ApiKey: 7e4nicn14nhyup146dfbi8hpnpus9juz
请求参数
参数名称 | 类型 | 是否必填 | 参与签名 | 参数说明 |
订单信息 | ||||
memberid | String | 是 | 是 | 平台分配商户号 |
out_trade_no | String | 是 | 是 | 上送订单号唯一, 字符长度100 |
amount | String | 是 | 是 | 代付金额(只支持两位小数) |
currency | String | 是 | 是 | 币种, 如:USD,JPY,GBP,EUR,AUD,HKD,CAD,MXN |
orderType | String | 是 | 是 | 付款类型列表 |
notifyurl | String | 是 | 是 | 转账成功会通过此地址通知 |
remark | String | 是 | 是 | 备注不能为空并且长度大于4个字符 |
sign | String | 是 | 否 | 请看MD5签名处理 |
用户信息 | ||||
firstname | String | 是 | 是 | 收款人名 |
lastname | String | 否 | 是 | 收款人姓(为空不用参与签名) 付款类型为ach,Visa Direct,BANK(部分国家)必填 |
payeecontact | String | 否 | 是 | 收款人联系方式(邮箱) 付款类型为Venmo,ach,BANK(部分国家)必填 |
payeephone | String | 否 | 是 | 收款人联系方式(手机号) 付款类型为BANK(部分国家)必填 |
payeeCountry | String | 否 | 是 | C收款人所在国家 付款类型为ach,CASHAPPOUT,BANK必填 |
province | String | 否 | 是 | 省份 如:广东省 付款类型为ach, BANK(部分国家)必填 |
city | String | 否 | 是 | 城市 如:广州市 付款类型为ach, BANK(部分国家)必填 |
payeeAddress | String | 否 | 是 | 收款人地址-详细街道 付款类型为ach, BANK(部分国家)必填 |
payeePostalCode | String | 否 | 是 | 收款人邮编 付款类型为ach, BANK(部分国家)必填 |
银行信息 | ||||
payeeaccount | String | 是 | 是 | 银行卡号、钱包账号 |
bankname | String | 否 | 是 | 代付银行卡 开户行名称 |
subbranch | String | 否 | 是 | 代付银行卡 支行名称 |
accountname | String | 否 | 是 | 结算卡 开户名 |
payeeBankRouting | String | 否 | 是 | 付款类型为ach必填 |
bankswift | String | 否 | 是 | SWIFT/BIC. 点击 获取SWIFT/BIC. 例如 ABCDGITTXXX 付款类型为BANK(部分国家)必填 |
bankiban | String | 否 | 是 | IBAN应该包含30个字符。第3和第4个字符必须是数字。 例如 KW74NBOK0000000000001000372151 付款类型为BANK(部分国家)必填 |
返回参数
参数名称 | 类型 | 参数说明 |
---|---|---|
transaction_id | String | 平台流水号:成功时返回 |
status | string | success:成功 error:失败 |
msg | String | 状态描述 |
通知参数
参数名称 | 类型 | 参数说明 |
---|---|---|
memberid | String | 商户ID |
out_trade_no | string | 商户订单号 |
transaction_id | String | 平台订单号 |
amount | String | 总金额 |
actualamount | String | 实际金额 |
original_amount | String | 原金额 |
datetime | Intger | 交易时间戳(秒) |
transferMessage | String | 交易信息 |
status | string | 状态: SUCCESS:成功 FAIL:失败 |
sign | String | 请看MD5签名处理 |
示例
请求
- Javascript
- Php
- Python
import { md5 } from "js-md5";
import axios from "axios";
const KEY = "7e4nicn14nhyup146dfbi8hpnpus9juz";
const MEMBER_ID = "10010";
let query = {
memberid: MEMBER_ID,
out_trade_no: "O" + Date.now().valueOf(),
amount: "1.00",
currency: "USD",
orderType: "PayPal-A",
firstname: "Jack",
payeeaccount: "12345678",
notifyurl: "https://www.google.com",
remark: "This is a new payment"
};
let signData = [];
Object.keys(query)
.sort()
.forEach((key) => signData.push(`${key}=${query[key]}`));
signData.push(`key=${KEY}`);
query.sign = md5(signData.join("&")).toUpperCase()
axios
.request({
url: "https://sandbox.j-pay.net/api/v1/payment/createOrder",
method: "post",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
data: query,
})
.then(({ data }) => {
console.log("success", data);
})
.catch((error) => {
console.log("error", error);
});
$url = 'https://sandbox.j-pay.net/api/v1/payment/createOrder';
$secretKey = '7e4nicn14nhyup146dfbi8hpnpus9juz';
$memberId = '10010';
$data = [
'memberid' => $memberId,
'out_trade_no' => 'O' . date('YmdHis', time()),
'amount' => '1.00',
'currency' => 'USD',
'orderType' => 'PayPal-A',
'firstname' => 'Jack',
'payeeaccount' => '12345678',
'notifyurl' => 'https://www.google.com',
'remark' => 'This is a new payment',
];
ksort($data);
$md5str = "";
foreach ($data as $key => $val) {
if (!empty($val)) {
$md5str .= $key . "=" . $val . "&";
}
}
$sign_str = $md5str . 'key=' . $secretKey;
$sign = strtoupper(md5($sign_str));
$data['sign'] = $sign;
$header = [
'Content-Type: application/x-www-form-urlencoded',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
$data = curl_exec($ch);
if (curl_error($ch)) {
echo 'Curl error: ' . curl_error($ch); exit;
}
curl_close($ch);
import hashlib
import requests
import time
url = 'https://sandbox.j-pay.net/api/v1/payment/createOrder'
key = '7e4nicn14nhyup146dfbi8hpnpus9juz'
params = {
'memberid': '10010',
'out_trade_no': 'O' + time.strftime('%Y%m%d%H%M%S', time.localtime()),
'amount': '1.00',
'currency': 'USD',
'orderType': 'PayPal-A',
'firstname': 'Jack',
'payeeaccount': '12345678',
'notifyurl': 'https://www.google.com',
'remark': 'Python'
}
strParam = ''
for p in sorted(params):
strParam = strParam + str(p) + "=" + str(params[p]) + '&'
strParam = strParam + 'key' + '=' + key
parmStr = strParam.encode("utf-8")
m = hashlib.md5()
m.update(parmStr)
params['sign'] = m.hexdigest().upper()
res = requests.post(url = url, data = params)
print('Response:' + res.text)
返回
- 成功
- 失败
{ status: 'success', msg: '代付申请提交成功', transaction_id: '151398410112' }
{"msg":"签名验证失败","status":"error"}
通知
- 成功
- 失败
{
"memberid": "10010",
"out_trade_no": "13676",
"transaction_id": "257354624363",
"amount": "10.00",
"actualamount": "9.80",
"datetime": false,
"transferMessage": "转账成功",
"status": "SUCCESS",
"sign": "6EF39FDDC82DFD5C346A020EEF477D21"
}
{
"memberid": "10010",
"out_trade_no": "13675",
"transaction_id": "100505942657",
"amount": "10.00",
"actualamount": "9.80",
"datetime": 1722318667,
"transferMessage": "转账失败",
"status": "FAIL",
"sign": "B7F75498A1158139DB28C100D14850EA"
}