1. 概述(极速模式) |
通过接入GLOCASHPAYMENT支付网关系统(下称GC网关),使商户系统获得覆盖全球的多样化收款渠道;在极速模式中,GC网关提供了基于JavaScript脚本的付款插件,仅须几行代码即可快速完成接入,并实现最佳的付款体验。 |
本文档提供了详细的针对商户系统集成的技术支持内容,具体由以下各部分组成: |
|
2. 加载插件及付款页面 |
只须在商户页面中添加几行代码,一个完整的付款请求即可实现: |
<script src="https://pay.glocash.com/public/gateway/js/embed.js" class="gc-embed-button"
title="BUY NOW"
d-emkey="xxx-YOUR-PUBLIC-KEY-xxx"
d-merchant="MERCH-77 LTD."
d-goodsname="Goods10 X-OEM"
d-price="12.78"
d-currency="EUR"
d-cc3ds="1"
d-email="customer@glocash.com"
d-suceess="https://example.com/payNotify/success"
d-failed="https://example.com/payNotify/failed"
d-pending="https://example.com/payNotify/pending"
d-notify="https://example.com/payNotify/notify"
d-cc3ds="https://example.com/payNotify/notify"
><script>
|
在页面成功加载JavaScript插件后,将在对应的位置自动生成一个付款按钮:
|
点击付款按钮后,会在当前页面弹出包含对应参数(详情见附录2)的付款页面(弹层): |
|
如须自定义付款按钮的样式,可在 <script> 标签中的 class 属性里自行添加(但必须保留 gc-embed-button 样式): |
|
3. 付款结果 |
当GC网关完成付款处理后,付款人的终端浏览器将跳转至对应的商户地址,这些地址可在商户后台中配置,或由付款插件中的参数指定(并覆盖商户后台中的配置): |
插件参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
d-suceess |
URL_SUCCESS / 付款成功后的跳转地址 |
- |
255 |
https://www.merchant77.com/success.php?order=ORD12345890 |
d-pending |
URL_PENDING / 付款处理中的跳转地址(非实时到帐) |
- |
255 |
https://www.merchant77.com/pending.php?order=ORD12345890 |
d-failed |
URL_FAILED / 付款失败后的跳转地址 |
- |
255 |
https://www.merchant77.com/failed.php?order=ORD12345890 |
d-notify |
URL_NOTIFY / 付款状态通知的请求地址 |
- |
255 |
https://www.merchant77.com/notification.php?order=ORDER1234567890 |
|
当商户后台中的跳转请求方式配置为 “POST / 提交 / 包含交易信息” 时(默认),相关的交易信息将被提交至上述地址: |
提交参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_TIMES |
当前请求的UNIX时间戳 |
是 |
10 |
1466492149 |
REQ_INVOICE |
商户系统创建的订单号(由付款请求提交) |
是 |
64 |
ORDER1234567890 |
REQ_SIGN |
当前请求的数字签名 |
是 |
64 |
8a8d17fb8f50db848c8aa2f850e83688c9ceb611cea761f0c64b998c5bbd7e4e |
REQ_SANDBOX |
如果参数值为ON则当前交易处于测试环境下 |
- |
2 |
ON |
提交参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUS_EMAIL |
付款人的邮箱(由付款请求提交) |
是 |
255 |
customer789@gmail.com |
TNS_GCID |
GC交易流水号 |
是 |
16 |
CCGM48FGLP11H8MT |
TNS_UTIMES |
创建交易的UNIX时间戳 |
是 |
16 |
1512360895.5831 |
BIL_STATUS |
当前交易的付款状态(详情见附录4) |
是 |
16 |
paid |
BIL_METHOD |
交易的支付方式代码 |
是 |
3 |
C01 |
提交参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
PGW_PRICE |
当前交易的实际付款金额 |
- |
16 |
37.86 |
PGW_CURRENCY |
当前交易的实际付款货币代码(ISO4217) |
- |
3 |
USD |
PGW_CC3DS |
信用卡付款时的3DS结果代码(非0则通过验证) |
- |
1 |
3 |
FDL_DECISION |
当前交易的风控决策(详情见附录5) |
- |
3 |
REV |
提交参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUSTOM_FD0 |
商户系统的自定义参数0(由付款请求提交) |
- |
255 |
123456 |
…
|
CUSTOM_FD7 |
商户系统的自定义参数7(由付款请求提交) |
- |
255 |
ONEtwo three fourfive |
|
一个包含数字签名的参数将确保当前请求的合法性(与PSN请求相同,具体算法请参阅附录1)。商户系统可根据请求中的状态信息来执行相关的业务处理(如更新订单状态或准备发货等)。 |
注意:当商户后台中的跳转请求方式配置为 “GET / 仅跳转 / 无额外信息” 时,终端浏览器的跳转行为并不能作为付款成功的依据,因为这是容易被伪造的。请通过付款状态通知(PSN)或查询接口来确认最终的付款结果。 |
4. 付款状态通知(PSN) |
当每一笔交易的状态出现更新时(如付款成功、失败、退款等),GC网关系统将向商户系统发起一个包含此交易相关数据的通知请求,此请求的具体地址由商户后台中的配置指定(默认为空)。 |
一个包含数字签名的参数将确保PSN请求的合法性(具体算法请参阅附录1)。商户系统可根据请求中的状态信息来执行相关的业务处理(如更新订单状态或准备发货等)。 |
典型的通知请求例子: |
REQUEST
POST /notification.php?order=ORDER1234567890 HTTP/1.1
Host: www.merchant77.com
...
REQ_INVOICE=ORDER1234567890&CUS_EMAIL=customer789%40gmail.com&BIL_METHOD=CCG&BIL_PRICE=3.79&BIL_CURRENCY=USD&REQ_EMAIL=account123%40merchant77.com&REQ_SANDBOX=ON&TNS_UTIMES=1512371781.833&TNS_GCID=CCGM48FGLP11H8MT&REQ_REFERER=https%3A%2F%2Fwww.merchant77.com%2checkout.php&BIL_IPADDR=123.123.123.123&PGW_PRICE=3.18&PGW_CURRENCY=EUR&FDL_DECISION=ACP&BIL_STATUS=paid&REQ_TIMES=1512371788&REQ_SIGN=789e9d6691adae0f3d7d50b49b0682b18f3c48b068ef8a6d0321a716f47ac34c
|
注意:商户系统在收到通知后,请返回200的HTTP响应代码,否则GC网关将认为本次通知失败,并在数分钟后再次尝试。 |
5. 测试环境 |
当付款插件设置为沙盒模式后(参数 d-sandbox="1" ),GC网关将创建一个测试交易。在测试交易中的付款页面将默认为信用卡方式,可使用任何符合规范的卡号进行测试,但不会进行实际的扣款操作(交易的最终状态可在商户后台中配置)。 |
测试交易同样会执行付款状态通知(PSN),不同的是交易信息中将包含一个用来标识测试环境的参数: |
参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_SANDBOX |
如果参数值为ON则当前交易处于测试环境下 |
- |
2 |
ON |
|
提示:在商户系统完成测试流程后,请联系您的客户经理以开通正式环境。 |
附录1:数字签名 |
PSN请求(由GC网关发起): |
REQ_SIGN = SHA256 ( SECRET_KEY + REQ_TIMES + REQ_EMAIL + CUS_EMAIL + TNS_GCID + BIL_STATUS + BIL_METHOD + PGW_PRICE + PGW_CURRENCY )
注:各参数含义请参阅附录3,其中SECRET_KEY为商户账号的安全密钥。
|
附录2:付款插件参数表 |
完整的参数列表如下: |
插件参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
title |
付款按钮的文字 |
- |
- |
PAY NOW |
插件参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
d-emkey |
用于付款插件的商户公钥 |
是 |
32 |
cF5UFQBQJFVCgBcB |
d-goodsname |
展示在付款页面的商品描述 |
是 |
255 |
Smart Phone P238 x1 |
d-price |
请求的付款金额 |
是 |
16 |
37.86 |
d-currency |
付款的货币代码(ISO4217) |
是 |
3 |
EUR |
d-email |
付款人的邮箱 |
是 |
255 |
customer789@gmail.com |
d-method |
指定的支付方式代码(默认为信用卡方式) |
- |
3 |
C01 |
d-cc3ds |
信用卡付款时是否启用3DS验证(非0则启用) |
- |
1 |
1 |
d-invoice |
商户系统创建的订单号(允许数字、大小写字母、符号_与-) |
- |
64 |
ORDER1234567890 |
d-merchant |
展示在付款页面的商户名称(默认为商户域名) |
- |
32 |
MERCHANT-77 LTD. |
d-sandbox |
如果参数值非零则设置为沙盒模式 |
- |
1 |
1 |
插件参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
d-suceess |
URL_SUCCESS / 付款成功后的跳转地址 |
- |
255 |
https://www.merchant77.com/success.php?order=ORD12345890 |
d-pending |
URL_PENDING / 付款处理中的跳转地址(非实时到帐) |
- |
255 |
https://www.merchant77.com/pending.php?order=ORD12345890 |
d-failed |
URL_FAILED / 付款失败后的跳转地址 |
- |
255 |
https://www.merchant77.com/failed.php?order=ORD12345890 |
d-notify |
URL_NOTIFY / 付款状态通知的请求地址 |
- |
255 |
https://www.merchant77.com/notification.php?order=ORDER1234567890 |
插件参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
d-custom0 |
CUSTOM_FD0 / 商户系统的自定义参数0 |
- |
255 |
123456 |
d-custom1 |
CUSTOM_FD1 / 商户系统的自定义参数1 |
- |
255 |
3457fdddc |
d-custom2 |
CUSTOM_FD2 / 商户系统的自定义参数2 |
- |
255 |
ONEtwo three fourfive |
|
附录3:付款状态通知(PSN)参数表 |
完整的参数列表如下: |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_TIMES |
当前请求的UNIX时间戳 |
是 |
10 |
1466492149 |
REQ_EMAIL |
商户的GC账户邮箱 |
是 |
255 |
account123@merchant77.com |
REQ_INVOICE |
商户系统创建的订单号(由付款请求提交) |
是 |
64 |
ORDER1234567890 |
REQ_SIGN |
当前请求的数字签名 |
是 |
64 |
8a8d17fb8f50db848c8aa2f850e83688c9ceb611cea761f0c64b998c5bbd7e4e |
REQ_REFERER |
付款页面的跳转引用地址 |
- |
255 |
https://www.merchant77.com/checkout.php |
REQ_SANDBOX |
如果参数值为ON则当前交易处于测试环境下 |
- |
2 |
ON |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUS_EMAIL |
付款人的邮箱(由付款请求提交) |
是 |
255 |
customer789@gmail.com |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
TNS_GCID |
GC交易流水号 |
是 |
16 |
CCGM48FGLP11H8MT |
TNS_UTIMES |
创建交易的UNIX时间戳 |
是 |
16 |
1512360895.5831 |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
BIL_PRICE |
请求的付款金额(由付款请求提交) |
是 |
16 |
37.86 |
BIL_CURRENCY |
请求的付款货币代码(ISO4217,由付款请求提交) |
是 |
3 |
USD |
BIL_METHOD |
交易的支付方式代码 |
是 |
3 |
C01 |
BIL_IPADDR |
付款人进入付款页面时的IP地址(v4/v6) |
是 |
40 |
123.123.123.123 |
BIL_STATUS |
当前交易的付款状态(详情见附录4) |
是 |
16 |
paid |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
PGW_PRICE |
当前交易的实际付款金额 |
- |
16 |
37.86 |
PGW_CURRENCY |
当前交易的实际付款货币代码(ISO4217) |
- |
3 |
USD |
PGW_CCHOLDER |
信用卡付款时的持卡人姓名 |
- |
64 |
John Smith |
PGW_CC3DS |
信用卡付款时的3DS结果代码(非0则通过验证) |
- |
1 |
3 |
PGW_MESSAGE |
支付渠道所返回的相关信息(如错误提示等) |
- |
255 |
payment success. |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
FDL_DECISION |
当前交易的风控决策(详情见附录5) |
- |
3 |
REV |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUSTOM_FD0 |
商户系统的自定义参数0(由付款请求提交) |
- |
255 |
123456 |
…
|
CUSTOM_FD7 |
商户系统的自定义参数7(由付款请求提交) |
- |
255 |
ONEtwo three fourfive |
|
附录4:交易状态 |
完整的状态列表如下: |
交易状态值 |
状态说明 |
unpaid |
交易未付款 |
paid |
交易已付款 |
pending |
付款处理中(非实时到帐或处理延迟) |
cancelled |
付款已取消(由付款人操作) |
failed |
付款已失败 |
refunding |
退款处理中 |
refunded |
已全额退款 |
complaint |
付款存在争议(由付款人发起) |
chargeback |
交易已拒付/撤单 |
|
附录5:风控决策 |
完整的决策列表如下: |
风控决策值 |
决策说明 |
ACP |
已通过风控规则 |
REV |
建议审核的风险交易 |
REJ |
已拒绝付款或建议退款(高风险) |
BAN |
已拒绝付款(高风险及黑名单) |
|
附录6:可用的支付渠道 |
请联系您的客户经理确认并开通业务所在区域的相关支付方式。 |
|
|
|
|
REQ_EMKEY |
|
REQ_SANDBOX |
|
INVOICE_REPEAT_MAX |
|
TNS_GCID |
|
REFUND FAILED |
|
BIL_CURRENCY |
|
CREDIT_CARD_FAILED_MAX |
|
REQ_REFERER |
|
BIL_CCNUMBER |
|
PGW_GATEWAY |
|
|
1. 概述(经典模式) |
通过接入GLOCASHPAYMENT支付网关系统(下称GC网关),使商户系统获得覆盖全球的多样化收款渠道。 |
本文档提供了详细的针对商户系统集成的技术支持内容,具体由以下各部分组成: |
|
在实施技术对接前,请先联系您的账户经理以获取测试帐号。测试环境将运行在模拟真实商业环境的沙盒模式下,不会造成真实的付款行为。 |
2. 协议与格式 |
GC网关系统的通讯及交互协议基于HTTP,具体可分为以下形式: |
-
发起请求 - 包括商户系统向GC网关发起的请求(如付款请求),以及GC网关向商户系统发起的请求(如PSN请求)等,使用POST方式提交(键/值)。
-
请求响应 - GC网关所返回的数据响应,为JSON编码后的字符串。
-
地址跳转 - 由付款人的终端浏览器完成指定地址的跳转/加载。
|
注意:所有数据的编码格式都必须为UTF-8,否则将可能会导致预期之外的错误。 |
3. 系统流程 |
|
主要的付款流程如下步骤: |
-
终端客户(付款人)在商户系统中创建订单。
-
商户系统(后端服务器)向GC网关发起付款请求。
-
GC网关返回包含付款页面地址的响应。
-
终端浏览器跳转至付款页面。
-
客户完成付款后终端浏览器跳转至商户系统的成功页面。
-
GC网关向商户系统发起付款状态通知(PSN)请求。
|
4. 付款请求 |
商户系统通过HTTP的POST方式向GC网关发起付款请求: |
-
测试环境 - https://sandbox.glocash.com/gateway/payment/index
-
正式环境 - https://pay.glocash.com/gateway/payment/index
|
请求中的参数包含了付款所相关的所有信息,一个简单的付款请求将包含以下必要参数: |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_TIMES |
当前请求的UNIX时间戳 |
是 |
10 |
1466492149 |
REQ_EMAIL |
商户的GC账户邮箱 |
是 |
255 |
account123@merchant77.com |
REQ_INVOICE |
商户系统创建的订单号(允许数字、大小写字母、符号_与-) |
是 |
64 |
ORDER1234567890 |
REQ_SIGN |
当前请求的数字签名 |
是 |
64 |
8a8d17fb8f50db848c8aa2f850e83688c9ceb611cea761f0c64b998c5bbd7e4e |
CUS_EMAIL |
付款人的邮箱 |
是 |
255 |
customer789@gmail.com |
BIL_PRICE |
请求的付款金额 |
是 |
16 |
37.86 |
BIL_CURRENCY |
付款的货币代码(ISO4217) |
是 |
3 |
https://www.merchant77.com/success.php?order=ORDER1234567890 |
BIL_CC3DS |
信用卡付款时是否启用3DS验证(非0则启用) |
- |
1 |
1 |
URL_SUCCESS |
付款成功后的跳转地址 |
- |
255 |
https://www.merchant77.com/success.php?order=ORDER1234567890 |
URL_PENDING |
付款处理中的跳转地址(非实时到帐) |
- |
255 |
https://www.merchant77.com/pending.php?order=ORDER1234567890 |
URL_FAILED |
付款失败后的跳转地址 |
- |
255 |
https://www.merchant77.com/failed.php?order=ORDER1234567890 |
URL_NOTIFY |
付款状态通知的请求地址 |
- |
255 |
https://www.merchant77.com/notify.php?order=ORDER1234567890 |
|
一个包含数字签名的参数将确保当前请求的合法性(具体算法请参阅附录1)。当GC网关成功处理请求后,将返回一个包含GC交易流水号及付款页面地址的JSON编码数据,解码后的参数如下: |
响应参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
TNS_GCID |
GC交易流水号 |
是 |
16 |
CCGM48FGLP11H8MT |
URL_PAYMENT |
当前交易的付款页面地址 |
是 |
255 |
https://pay.glocash.com/gateway/payment/index/token/cd4d62f6b36e20d821f3311cf3e6e12b |
|
如果请求中存在不正确的参数值,则GC网关将返回一个包含错误参数名的JSON编码数据,解码后的参数如下: |
响应参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_ERROR |
出现错误的参数名 |
是 |
32 |
REQ_SIGN |
|
成功的付款请求例子: |
REQUEST
POST /gateway/payment/index HTTP/1.1
Host: sandbox.glocash.com
...
BIL_CC3DS=1&REQ_INVOICE=ORDER1234567890&CUS_EMAIL=customer789%40gmail.com&BIL_PRICE=37.86&BIL_CURRENCY=USD&REQ_EMAIL=account123%40merchant77.com&REQ_TIMES=1466492149&REQ_SIGN=df2683bd26b928c0b2f60213210ba684348ec785dab158c6d10b7330e03d03ba
RESPONSE
HTTP/1.1 200 OK
Date: Fri, 01 Dec 2017 08:15:25 GMT
...
{"TNS_GCID":"CCGM48FGLP11H8MT","URL_PAYMENT":"https:\/\/sandbox.glocash.com\/gateway\/payment\/index\/token\/cd4d62f6b36e20d821f3311cf3e6e12b"}
JSON DECODED
{
TNS_GCID: "CCGM48FGLP11H8MT",
URL_PAYMENT: "https://sandbox.glocash.com/gateway/payment/index/token/cd4d62f6b36e20d821f3311cf3e6e12b"
}
|
失败的付款请求例子: |
REQUEST
POST /gateway/payment/index HTTP/1.1
Host: sandbox.glocash.com
...
BIL_CC3DS=1&REQ_INVOICE=ORDER1234567890&CUS_EMAIL=customer789%40gmail.com&BIL_PRICE=37.86&BIL_CURRENCY=USD&REQ_EMAIL=account123%40merchant77.com&REQ_TIMES=1466492149&REQ_SIGN=123abc456def
RESPONSE
HTTP/1.1 200 OK
Date: Fri, 01 Dec 2017 08:15:25 GMT
...
{"REQ_ERROR":"REQ_SIGN"}
JSON DECODED
{
REQ_ERROR: "REQ_SIGN",
}
|
注意:为保障必要的安全性,付款请求必须由商户系统的服务端发起,而非通过付款人的终端浏览器。 |
Example Parameters |
|
|
5. 付款页面 |
付款人的终端浏览器将跳转至GC网关所返回的付款页面地址,完成后续的付款操作。 |
Test credit card:
Visa | 4000000000000002 | 01/2022 | 237 | 14 3ds paid
Visa | 5200000000000023 | 01/2021 | 123 | 14 3ds failed
Visa | 5200000000000106 | 01/2021 | 123 | 14 3ds pending
|
|
可通过页面框架的动态加载等技术将付款页面内嵌到商户系统的页面中,以获得更优的交互体验(请参见极速模式)。 |
|
6. 付款结果 |
当GC网关完成付款处理后,付款人的终端浏览器将跳转至对应的商户地址,这些地址可在商户后台中配置,或由商户系统在付款请求的参数中指定(并覆盖商户后台中的配置): |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
URL_SUCCESS |
付款成功后的跳转地址 |
- |
255 |
https://www.merchant77.com/success.php?order=ORDER1234567890 |
URL_PENDING |
付款处理中的跳转地址(非实时到帐) |
- |
255 |
https://www.merchant77.com/pending.php?order=ORDER1234567890 |
URL_FAILED |
付款失败后的跳转地址 |
- |
255 |
https://www.merchant77.com/failed.php?order=ORDER1234567890 |
|
当商户后台中的跳转请求方式配置为 “POST / 提交 / 包含交易信息” 时(默认),相关的交易信息将被提交至上述地址: |
提交参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_TIMES |
当前请求的UNIX时间戳 |
是 |
10 |
1466492149 |
REQ_INVOICE |
商户系统创建的订单号(由付款请求提交) |
是 |
64 |
ORDER1234567890 |
REQ_SIGN |
当前请求的数字签名 |
是 |
64 |
8a8d17fb8f50db848c8aa2f850e83688c9ceb611cea761f0c64b998c5bbd7e4e |
REQ_SANDBOX |
如果参数值为ON则当前交易处于测试环境下 |
- |
2 |
ON |
提交参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUS_EMAIL |
付款人的邮箱(由付款请求提交) |
是 |
255 |
customer789@gmail.com |
TNS_GCID |
GC交易流水号 |
是 |
16 |
CCGM48FGLP11H8MT |
TNS_UTIMES |
创建交易的UNIX时间戳 |
是 |
16 |
1512360895.5831 |
BIL_STATUS |
当前交易的付款状态(详情见附录4) |
是 |
16 |
paid |
BIL_METHOD |
交易的支付方式代码 |
是 |
3 |
C01 |
提交参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
PGW_PRICE |
当前交易的实际付款金额 |
- |
16 |
37.86 |
PGW_CURRENCY |
当前交易的实际付款货币代码(ISO4217) |
- |
3 |
USD |
PGW_CC3DS |
信用卡付款时的3DS结果代码(非0则通过验证) |
- |
1 |
3 |
FDL_DECISION |
当前交易的风控决策(详情见附录5) |
- |
3 |
REV |
提交参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUSTOM_FD0 |
商户系统的自定义参数0(由付款请求提交) |
- |
255 |
123456 |
…
|
CUSTOM_FD7 |
商户系统的自定义参数7(由付款请求提交) |
- |
255 |
ONEtwo three fourfive |
|
一个包含数字签名的参数将确保当前请求的合法性(与PSN请求相同,具体算法请参阅附录1)。商户系统可根据请求中的状态信息来执行相关的业务处理(如更新订单状态或准备发货等)。 |
注意:当商户后台中的跳转请求方式配置为 “GET / 仅跳转 / 无额外信息” 时,终端浏览器的跳转行为并不能作为付款成功的依据,因为这是容易被伪造的。请通过付款状态通知(PSN)或查询接口来确认最终的付款结果。 |
7. 付款状态通知(PSN) |
当每一笔交易的状态出现更新时(如付款成功、失败、退款等),GC网关系统将向商户系统发起一个包含此交易相关数据的通知请求,此请求的具体地址由商户系统在付款请求的参数中指定: |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
URL_NOTIFY |
付款状态通知的请求地址 |
- |
255 |
https://www.merchant77.com/notification.php?order=ORDER1234567890 |
|
一个包含数字签名的参数将确保当前请求的合法性(具体算法请参阅附录1)。商户系统可根据请求中的状态信息来执行相关的业务处理(如更新订单状态或准备发货等)。 |
典型的通知请求例子: |
REQUEST
POST /notification.php?order=ORDER1234567890 HTTP/1.1
Host: www.merchant77.com
...
REQ_INVOICE=ORDER1234567890&CUS_EMAIL=customer789%40gmail.com&BIL_METHOD=CCG&BIL_PRICE=3.79&BIL_CURRENCY=USD&REQ_EMAIL=account123%40merchant77.com&REQ_SANDBOX=ON&TNS_UTIMES=1512371781.833&TNS_GCID=CCGM48FGLP11H8MT&REQ_REFERER=https%3A%2F%2Fwww.merchant77.com%2checkout.php&BIL_IPADDR=123.123.123.123&PGW_PRICE=3.18&PGW_CURRENCY=EUR&FDL_DECISION=ACP&BIL_STATUS=paid&REQ_TIMES=1512371788&REQ_SIGN=789e9d6691adae0f3d7d50b49b0682b18f3c48b068ef8a6d0321a716f47ac34c
|
注意:商户系统在收到通知后,请返回200的HTTP响应代码,否则GC网关将认为本次通知失败,并在数分钟后再次尝试。 |
8. 付款状态查询 |
GC网关提供一个实时的交易状态查询接口: |
-
测试环境 - https://sandbox.glocash.com/gateway/transaction/index
-
正式环境 - https://pay.glocash.com/gateway/transaction/index
|
商户系统可通过此接口查询指定交易的状态等信息,一个符合要求的查询请求将包含以下必要参数: |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_TIMES |
当前请求的UNIX时间戳 |
是 |
10 |
1466492149 |
REQ_EMAIL |
商户的GC账户邮箱 |
是 |
255 |
account123@merchant77.com |
REQ_SIGN |
当前请求的数字签名 |
是 |
64 |
c8aa2f1cea7850e83688c9ceb618a8d17fb8f50db84861f0c64b998c5bbd7e4e |
TNS_GCID |
待查询的GC交易流水号 |
是 |
16 |
CCGM48FGLP11H8MT |
|
一个包含数字签名的参数将确保当前请求的合法性(具体算法请参阅附录1)。查询结果将返回对应交易的相关信息(与PSN所包含的信息一致),并经过JSON编码之后的数据。如果指定的交易并不存在,则返回一个404的HTTP响应代码。 |
典型的查询请求例子: |
REQUEST
POST /gateway/transaction/index HTTP/1.1
Host: sandbox.glocash.com
...
REQ_EMAIL=account123%40merchant77.com&REQ_TIMES=1466492149&TNS_GCID=CCGM48FGLP11H8MT&REQ_SIGN=c8aa2f1cea7850e83688c9ceb618a8d17fb8f50db84861f0c64b998c5bbd7e4e
RESPONSE
HTTP/1.1 200 OK
Date: Fri, 01 Dec 2017 08:15:25 GMT
...
{"CCGM48FGLP11H8MT":{"REQ_INVOICE":"ORDER1234567890","CUS_EMAIL":"customer789@gmail.com","BIL_METHOD":"CCG","BIL_PRICE":"3.79","BIL_CURRENCY":"USD","REQ_EMAIL":"account123@merchant77.com","REQ_SANDBOX":"ON","TNS_UTIMES":1512371781.833,"TNS_GCID":"CCGM48FGLP11H8MT","REQ_REFERER":"https:\/\/www.merchant77.com\/checkout.php","BIL_IPADDR":"123.123.123.123","PGW_PRICE":"3.18","PGW_CURRENCY":"EUR","FDL_DECISION":"ACP","BIL_STATUS":"paid","REQ_TIMES":1512371788,"REQ_SIGN":"789e9d6691adae0f3d7d50b49b0682b18f3c48b068ef8a6d0321a716f47ac34c"}}
JSON DECODED
{
CCGM48FGLP11H8MT: {
REQ_INVOICE: "ORDER1234567890",
CUS_EMAIL: "customer789@gmail.com",
BIL_METHOD: "CCG",
BIL_PRICE: "3.79",
BIL_CURRENCY: "USD",
REQ_EMAIL: "account123@merchant77.com",
REQ_SANDBOX: "ON",
TNS_UTIMES: 1512371781.833,
TNS_GCID: "CCGM48FGLP11H8MT",
REQ_REFERER: "https://www.merchant77.com/checkout.php",
BIL_IPADDR: "123.123.123.123",
PGW_PRICE: "3.18",
PGW_CURRENCY: "EUR",
FDL_DECISION: "ACP",
BIL_STATUS: "paid",
REQ_TIMES: 1512371788,
REQ_SIGN: "789e9d6691adae0f3d7d50b49b0682b18f3c48b068ef8a6d0321a716f47ac34c",
}
}
|
9. 测试环境 |
当付款请求通过测试环境的接口地址发起时,GC网关将创建一个测试交易。在测试交易中的付款页面将默认为信用卡方式,可使用任何符合规范的卡号进行测试,但不会进行实际的扣款操作(交易的最终状态可在商户后台中配置)。 |
测试交易可使用查询接口(测试环境的接口地址),并且也同样会执行付款状态通知(PSN),不同的是交易信息中将包含一个用来标识测试环境的参数: |
参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_SANDBOX |
如果参数值为ON则当前交易处于测试环境下 |
- |
2 |
ON |
|
提示:在商户系统完成测试流程后,请联系您的客户经理以开通正式环境。 |
10. 退款请求 |
GC网关提供一个实时的退款接口: |
-
测试环境 - https://sandbox.glocash.com/gateway/transaction/refund
-
正式环境 - https://pay.glocash.com/gateway/transaction/refund
|
商户系统可通过此接口提交需要退款的订单,一个符合要求的退款请求将包含以下必要参数: |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_TIMES |
当前请求的UNIX时间戳 |
是 |
10 |
1466492149 |
REQ_EMAIL |
商户的GC账户邮箱 |
是 |
255 |
account123@merchant77.com |
REQ_SIGN |
当前请求的数字签名(见附录1) |
是 |
64 |
c8aa2f1cea7850e83688c9ceb618a8d17fb8f50db84861f0c64b998c5bbd7e4e |
TNS_GCID |
待退款的GC交易流水号 |
是 |
16 |
CCGM48FGLP11H8MT |
PGW_PRICE |
待退款的交易金额(支持部分退款) |
是 |
16 |
10 |
|
一个包含数字签名的参数将确保当前请求的合法性(具体算法请参阅附录1)。退款结果将返回对应的状态,并经过JSON编码之后的数据。REQ_CODE为200的情况下退款才表示退款成功 |
典型的退款请求例子: |
REQUEST
POST /gateway/transaction/refund HTTP/1.1
Host: sandbox.glocash.com
...
REQ_EMAIL=account123%40merchant77.com&REQ_TIMES=1466492149&TNS_GCID=CCGM48FGLP11H8MT&PGW_PRICE=10&REQ_SIGN=c8aa2f1cea7850e83688c9ceb618a8d17fb8f50db84861f0c64b998c5bbd7e4e
RESPONSE
HTTP/1.1 200 OK
Date: Fri, 01 Dec 2017 08:15:25 GMT
...
'{"REQ_CODE":200,"REQ_ERROR":"REFUND SUCCESS"}'
JSON DECODED
{
REQ_CODE: 200,
REQ_ERROR: "REFUND SUCCESS",
}
|
附录1:数字签名 |
付款请求(由商户系统发起): |
REQ_SIGN = SHA256 ( SECRET_KEY + REQ_TIMES + REQ_EMAIL + REQ_INVOICE + CUS_EMAIL + BIL_METHOD + BIL_PRICE + BIL_CURRENCY )
注:各参数含义请参阅附录2,其中SECRET_KEY为商户账号的安全密钥。
|
查询请求(由商户系统发起): |
REQ_SIGN = SHA256 ( SECRET_KEY + REQ_TIMES + REQ_EMAIL + TNS_GCID )
注:各参数含义请参阅附录4,其中SECRET_KEY为商户账号的安全密钥。
|
PSN请求(由GC网关发起): |
REQ_SIGN = SHA256 ( SECRET_KEY + REQ_TIMES + REQ_EMAIL + CUS_EMAIL + TNS_GCID + BIL_STATUS + BIL_METHOD + PGW_PRICE + PGW_CURRENCY )
注:各参数含义请参阅附录3,其中SECRET_KEY为商户账号的安全密钥。
|
退款接口(由商户系统发起): |
REQ_SIGN = SHA256 ( SECRET_KEY + REQ_TIMES + REQ_EMAIL + TNS_GCID + PGW_PRICE )
注:各参数含义请参阅附录3,其中SECRET_KEY为商户账号的安全密钥,PGW_PRICE为商户需要退款的金额。
|
附录2:付款请求参数表 |
完整的参数列表如下: |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_TIMES |
当前请求的UNIX时间戳 |
是 |
10 |
1466492149 |
REQ_EMAIL |
商户的GC账户邮箱 |
是 |
255 |
account123@merchant77.com |
REQ_INVOICE |
商户系统创建的订单号(允许数字、大小写字母、符号_与-) |
是 |
64 |
ORDER1234567890 |
REQ_SIGN |
当前请求的数字签名 |
是 |
64 |
8a8d17fb8f50db848c8aa2f850e83688c9ceb611cea761f0c64b998c5bbd7e4e |
REQ_MERCHANT |
展示在付款页面的商户名称(默认为商户域名) |
- |
32 |
MERCHANT-77 LTD. |
BIL_CC3DS |
信用卡付款时是否启用3DS验证(非0则启用) |
- |
1 |
1 |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUS_EMAIL |
付款人的邮箱 |
是 |
255 |
customer789@gmail.com |
CUS_COUNTRY |
付款人所在国家代码(ISO3166两字母) |
- |
2 |
US |
CUS_STATE |
付款人所在州/县/区域 |
- |
64 |
New York |
CUS_CITY |
付款人所在城市 |
- |
32 |
Rochester |
CUS_ADDRESS |
付款人所在地址 |
- |
255 |
333 Lexington Avenue, 7th Floor, Room 701 |
CUS_POSTAL |
付款人所属邮编 |
- |
16 |
10017 |
CUS_PHONE |
付款人的座机号码(国际区号|号码) |
- |
32 |
86|65430127 |
CUS_MOBILE |
付款人的手机号码(国际区号|号码) |
- |
32 |
86|13913913913 |
CUS_IMUSR |
付款人的即时通信用户名(类型:用户名) |
- |
255 |
skype:user2345 |
CUS_FNAME |
付款人名 |
- |
32 |
John |
CUS_LNAME |
付款人姓 |
- |
32 |
Smith |
CUS_REGISTER |
付款人在商户系统中的注册时间(UNIX时间戳) |
- |
10 |
1466452149 |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
BIL_GOODSNAME |
展示在付款页面的商品描述 |
- |
255 |
Smart Phone P238 x1 |
BIL_QUANTITY |
商品数量 |
- |
10 |
3 |
BIL_PRICE |
请求的付款金额 |
是 |
16 |
37.86 |
BIL_CURRENCY |
付款的货币代码(ISO4217) |
是 |
3 |
USD |
BIL_METHOD |
指定的支付方式代码(默认为信用卡方式) |
- |
3 |
C01 |
BIL_PRCCODE |
特定支付方式(如电信短代)的计费点代码 |
- |
255 |
9487545 |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
URL_SUCCESS |
付款成功后的跳转地址 |
- |
255 |
https://www.merchant77.com/success.php?order=ORDER1234567890 |
URL_PENDING |
付款处理中的跳转地址(非实时到帐) |
- |
255 |
https://www.merchant77.com/pending.php?order=ORDER1234567890 |
URL_FAILED |
付款失败后的跳转地址 |
- |
255 |
https://www.merchant77.com/failed.php?order=ORDER1234567890 |
URL_NOTIFY |
付款状态通知的请求地址 |
- |
255 |
https://www.merchant77.com/notification.php?order=ORDER1234567890 |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUSTOM_FD0 |
商户系统的自定义参数0 |
- |
255 |
123456 |
…
|
CUSTOM_FD7 |
商户系统的自定义参数7 |
- |
255 |
ONEtwo three fourfive |
|
附录3:付款状态通知(PSN)参数表 |
完整的参数列表如下: |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
REQ_TIMES |
当前请求的UNIX时间戳 |
是 |
10 |
1466492149 |
REQ_EMAIL |
商户的GC账户邮箱 |
是 |
255 |
account123@merchant77.com |
REQ_INVOICE |
商户系统创建的订单号(由付款请求提交) |
是 |
64 |
ORDER1234567890 |
REQ_SIGN |
当前请求的数字签名 |
是 |
64 |
8a8d17fb8f50db848c8aa2f850e83688c9ceb611cea761f0c64b998c5bbd7e4e |
REQ_REFERER |
付款页面的跳转引用地址 |
- |
255 |
https://www.merchant77.com/checkout.php |
REQ_SANDBOX |
如果参数值为ON则当前交易处于测试环境下 |
- |
2 |
ON |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUS_EMAIL |
付款人的邮箱(由付款请求提交) |
是 |
255 |
customer789@gmail.com |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
TNS_GCID |
GC交易流水号 |
是 |
16 |
CCGM48FGLP11H8MT |
TNS_UTIMES |
创建交易的UNIX时间戳 |
是 |
16 |
1512360895.5831 |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
BIL_PRICE |
请求的付款金额(由付款请求提交) |
是 |
16 |
37.86 |
BIL_CURRENCY |
请求的付款货币代码(ISO4217,由付款请求提交) |
是 |
3 |
USD |
BIL_METHOD |
交易的支付方式代码 |
是 |
3 |
C01 |
BIL_IPADDR |
付款人进入付款页面时的IP地址(v4/v6) |
是 |
40 |
123.123.123.123 |
BIL_STATUS |
当前交易的付款状态(详情见附录4) |
是 |
16 |
paid |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
PGW_PRICE |
当前交易的实际付款金额 |
- |
16 |
37.86 |
PGW_CURRENCY |
当前交易的实际付款货币代码(ISO4217) |
- |
3 |
USD |
PGW_CCHOLDER |
信用卡付款时的持卡人姓名 |
- |
64 |
John Smith |
PGW_CC3DS |
信用卡付款时的3DS结果代码(非0则通过验证) |
- |
1 |
3 |
PGW_MESSAGE |
支付渠道所返回的相关信息(如错误提示等) |
- |
255 |
payment success. |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
FDL_DECISION |
当前交易的风控决策(详情见附录5) |
- |
3 |
REV |
请求参数名 |
参数说明 |
必要 |
最大长度 |
参数值举例 |
CUSTOM_FD0 |
商户系统的自定义参数0(由付款请求提交) |
- |
255 |
123456 |
…
|
CUSTOM_FD7 |
商户系统的自定义参数7(由付款请求提交) |
- |
255 |
ONEtwo three fourfive |
|
附录4:交易状态 |
完整的状态列表如下: |
交易状态值 |
状态说明 |
unpaid |
交易未付款 |
paid |
交易已付款 |
pending |
付款处理中(非实时到帐或处理延迟) |
cancelled |
付款已取消(由付款人操作) |
failed |
付款已失败 |
refunding |
退款处理中 |
refunded |
已全额退款 |
complaint |
付款存在争议(由付款人发起) |
chargeback |
交易已拒付/撤单 |
|
附录5:风控决策 |
完整的决策列表如下: |
风控决策值 |
决策说明 |
ACP |
已通过风控规则 |
REV |
建议审核的风险交易 |
REJ |
已拒绝付款或建议退款(高风险) |
BAN |
已拒绝付款(高风险及黑名单) |
|
附录6:可用的支付渠道 |
请联系您的客户经理确认并开通业务所在区域的相关支付方式。 |
|
|
|
|
REQ_EMKEY |
|
REQ_SANDBOX |
|
INVOICE_REPEAT_MAX |
|
TNS_GCID |
|
REFUND FAILED |
|
BIL_CURRENCY |
|
CREDIT_CARD_FAILED_MAX |
|
REQ_REFERER |
|
BIL_CCNUMBER |
|
PGW_GATEWAY |
|
|