开发准备:

商户在快钱的用于收款的人民币账号

商户的人民币网关密钥

参数说明:

 

Request

提交地址:https://www.99bill.com/gateway/recvMerchantInfoAction.htm

参数名称:参数含义——》长度——》 是否为空——》参数说明     

  

协议参数:

inputCharset:字符集——》2——》可为空——》固定选择值:1、2、3,1代表UTF-8;2代表GBK;3代表GB2312;默认值为1

bgUrl:服务器接收支付结果的后台地址——》256——》可为空——》需要是绝对地址,块钱将支付结果发送到bgUrl对应的地址,并且获取商户按照约定格式输出的地址,显示页面给用户

version:网关版本——》10——》不可空——》固定值v2.0,注意为小写字母

language:网关页面显示语言种类——》2——》不可空——》固定值1,1代表中文显示

signType:签名类型——》2——》不可空——》固定值1,1代表MD5加密签名方式,4代表PKI加密签名方式(????????????)

 

买卖双方信息参数:

merchantAcctId:人民币账号——》30——》不可空——》数字串,本参数用来指定接收款项的人民币账号

payerName:支付人姓名——》32——》可为空——》英文或中文字符

payerContactType:支付人联系方式类型——》2——》可为空——》1 代表电子邮件方式;2 代表手机联系方式

payerContact:支付人联系方式——》50——》可为空——》字符串,根据payerContactType的方式填写对应字符串

 

业务参数:

orderId:商户订单号——》50——》不可空——》字符串,只允许使用字母、数字、-、_,并以字母或数字开头,每商户提交的订单号,必须在自身账户交易中唯一

orderAmount:商户订单金额——》10——》不可空——》整型数字,以分为单位,比方1元,提交时金额应为100

orderTime:商户订单提交时间——》14——》不可空——》数字串,共14位,格式为年4位月2位日2位时2位分2位秒2位,例如:20121108110506

productName:商品名称——》256——》可为空——》英文或中文字符串

productNum:商品数量——》8——》可为空——》整型数字

productId:商品代码——》20——》可为空——》字母、数字或-、_的组合。如商户发布了优惠券,并只想对指定的商品或某类商品进行优惠时,请将此参数与发布优惠券时设置的适用商品保持一致。只可填写一个代码。如果不适用优惠券,本参数不用填写。(优惠券)

productDesc:商品描述——》400——》可为空——》英文或中文字符串

ext1:扩展字段1——》128——》可为空——》英文或中文字符串,支付完成后,按照原样返回给商户。

etx2:扩展字段2——》128——》可为空——》英文或中文字符串,支付完成后,按照原样返回给商户。

payType:支付方式——》2——》不可空——》固定选择值:00、10、11、12、13。00代表显示块钱各支付方式列表;10代表只显示银行卡支付方式;11代表只显示电话银行支付方式;12代表只显示块钱账号支付方式;13代表只显示线下支付方式(一般选择00,所有)

redoFlag:同一订单禁止重复提交标志——》1——》可为空——》固定选择值:1、0。1代表同一订单只允许提交1次;0表示同一订单号在没有支付成功的前提下可以重复提交多次。默认为0,建议实物购物车结算采用0;虚拟产品类商品采用1;

pid:合作伙伴在快钱的用户编号——》30——可为空——》数字串,用户登录快钱首页后可查询到,适用于快钱合作伙伴中系统及平台提供商。

signMsg:签名字符串——》256——》不可空——》以上所有所有非空参数及其值与密钥结合,经过MD5或PKI加密生成并转化为大写的32位字符串。

php端

(取出所有非空参数及其值,$OrderKeys数组包含所有参数,$params新数组,循环$OrderKeys,判断key下边是否有值,没值,挑过这个继续,有值赋给$params数组)

如下:

$KeyOrders = array	('inputCharset','pageUrl','bgUrl','version','language','signType','merchantAcctId','payerName','payerContactType','payerCo	ntact','orderId','orderAmount','orderTime','productName','productNum','productId','productDesc','ext1','ext2','payType','b	ankId','redoFlag','pid',);	//必须的参数

foreach($KeyOrders as $key){
	if(''==$this->{$key}){continue;}//判断这个key键下是否有值,没有继续执行下一次循环
	$params[$key] = $this->{$key};//赋值
}


$params数组就是非空参数及值的数组

http_build_query()生成URL-encode之后的请求字符串

urldecode()将URL编码字符串还原成未编码的形式

在进行MD5或者PKI加密并转化为大写。

对于所有值不为空的参数及对于值,按照如上顺序及如下规则组成字符串:

参数1={参数1}&参数2={参数2}&......&参数n={参数n}&key={key}

就是http_build_query()之后再urldecode()

然后进行32位算法的MD5或PKI加密后,转化为大写。

 

 

Response

返回地址 buUrl对应的地址

参数名称:参数含义——》长度——》参数说明

 

块钱反馈的参数

merchantAcctId:人民币账号——》30——》数字串,与提交订单时的块钱账号保持一致

version:网关版本——》10——》固定值:v2.0,与提交订单时的网关版本号保持一致

language:网页显示语言种类——》2——》固定选择值:1,1表示块钱支付网关网页时中文显示

signType:签名类型——》2——》固定选择值1、4,1是MD5,4是PKI

payType:支付方式——》2——》固定选择值:00、10、11、12、13,与提交订单时的支付方式保持一致

bankId:银行代码——》8——》字符串,返回用户在实际支付时所使用的银行代码(能获得用户使用的是哪家银行)

orderId:商户订单号——》50——》字母、数字、-、_及其组合,与提交订单时的商户订单号保持一致

orderTime:商户订单提交时间——》14——》数字串,与提交订单时的商户订单提交时间保持一致

orderAmount:商户订单金额——》10——》整型数字,以分为单位。比方1元,100,与提交订单时商户订单金额保持一致

dealId:块钱交易号——》30——》数字串,该交易在块钱系统中对应的交易号

bankDealId:银行交易号——》30——》数字串,该交易在银行支付时对应的交易号,如果不是通过银行卡支付,则为空(能获取用户使用的银行卡号)

dealTime:块钱交易时间——》14——》数字串,块钱对交易进行处理的时间,格式为:年4位月2位日2位时2位分2位秒2位

payAmount:订单实际支付金额——》10——》整型数字——》返回在使用优惠券等情况后,用户实际支付的金额,以分为单位。

fee:费用——》10——》整型数字——》块钱收取商户的手续费,单位为分。

ext1:扩展字段1——》128——》字符串,与提交订单时的扩展字段1保持一致。

ext2:扩展字段2——》128——》字符串,与提交订单时的扩展字段2保持一致。

payResult:处理结果——》2——》10:支付成功;11:支付失败(成功失败的标示)

errCode:错误代码——》10——》失败时返回的错误代码,可以为空。

signMsg:签名字符串——》256——》以上所有所有非空参数及其值与密钥结合,经过MD5或PKI加密生成并转化为大写的32位字符串。

 

注意:

签名字符串: Request与Response不一样。

通知支付结果: bgUrl设置了,支付结果以GET方式发送到bgUrl对应的地址。商户接受支付结果,进行相应处理之后,需要按照指定的方式输出内容,告诉块钱已成功接受并处理完成。实例如下:

<result>1</result><redirecturl>http://www.yoursite.com/show.php</redirecturl>

如果result标签里的值为1,块钱就认为商户已经接受到支付结果并成功处理。块钱会按照redirecturl提供的地址跳到新页面,同时把支付信息参数再带过来。用户可以在新的页面里看到商户给出的页面提示信息。

不为1时,块钱会不断发直到为1为止。

 

要想更细致的文档直接百度“

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐