Dialog_支付

接口说明

发送支付请求,此接口为有交互界面的接口

访问权限

默认权限(basic)即可调用。欲了解更多有关访问权限的知识,请参考接口访问权限说明

请求URL地址

支持格式

返回HTML页面

HTTP请求方式

GET

是否需要登录

True

添加测试开心币

本接口权限默认是开放的,开发时可使用测试开心币支付,添加地址:支付信息页面
注:
1、有真实开心币的用户不能添加测试开心币,请选择其它帐号或消费剩余开心币。
2、若提示“有未授权的测试币”,请先清零再添加。因为测试开心币是跟应用绑定的,不能跨应用使用。

调用示例

请求参数说明

api参数
参数是否必填说明
displayTRUEdialog弹出框的展示方式,站内组件支持iframe(建议使用)、popup(不建议使用),连接网站支持popup方式。
callbackTRUE支付成功的回调地址,通知第三方支付已经成功。不要使用本地测试地址
pnameTRUE商品名称。
pnumberTRUE商品数量。
pcodeTRUE商品code
amountTRUE价值开心币(与开心币的兑换关系)
orderidTRUE己方生成的订单号,为将来对账用,请保证唯一
app_idTRUE申请应用时获得的APPID
redirect_uriFALSE跳转地址,iframe方式下点击确认后跳转,非iframe方式无效。
可不填,不填则默认为不跳转。(回调地址是callback参数)
sigTRUE参数签名,签名方法如下

按照 amount、orderid、app_secret(应用的密钥)的顺序,以“&”拼接得到base string,计算此base string的 md5 即为签名。
示例:
假设 amount=10、orderid=1111、应用密钥=03c15399e93ff835a797b4148afc9433
base string:10&1111&03c15399e93ff835a797b4148afc9433
计算base string的md5,得到sig:a8fba7753e79c259a4f364e39125689e

<?php
    $amount = 10;
    $orderid = '11111';
    $app_secret = '03c15399e93ff835a797b4148afc9433';
    $sig = md5($amount . '&' . $orderid . '&' . $app_secret); //签名
?>

特别注意:
① 由于需要用户确认后才能完成操作,此接口无需access token
② 不同display参数示例及界面

iframe:弹出浮层
使用iframe弹出浮层模式需要引用JS-SDK:

<script src="http://s.kaixin001.com.cn/js/openapp-8.js" language="JavaScript"></script>

示例:

<script>
function openPayDlg()
{
	/*  参数说明:
		app_id			申请应用时获得的APPID
		display			dialog弹出框的展示方式(iframe--弹出层的方式 popup--新窗口方式)
		callback 		支付成功的回调地址,通知第三方支付已经成功。不要使用本地测试地址 
                redirect_uri 		前端回调地址 
		pname 			商品名称。 
		pnumber 		商品数量。 
		pcode 			商品code 
		amount 			价值开心币(与开心币的兑换关系) 
		orderid 		己方生成的订单号,为将来对账用,请保证唯一 
		sig			签名参数
                cb			前端回调函数
	*/
        var p = {"app_id":<?=KX_APPID ?>,"display":"iframe","callback":"<?=KX_CALLBACK_URL ?>","redirect_uri":"<?=KX_CALLBACK_URL ?>","pname":"iphone 4s","pnumber":"1", "pcode":"1","amount":"1","orderid":"<?=$orderid?>","sig":"<?=$sig?>"};
        p.cb = function(v){console.log(v);};//用户点取消时v.cancel==1
        KX.pay(p);
}
</script>
<input type="button" name="pay" value="支付" onclick="openPayDlg();" />

界面:

popup:弹出新窗口
示例:

<a onclick=" window.open('http://api.kaixin001.com/dialog/pay?display=popup&callback=http%3A%2F%2Fwww.kaixin001.com&redirect_uri=http%3A%2F%2Fwww.vm142.kaixin009.com&pname=good&pnumber=1&pcode=1&amount=1&orderid=4650&app_id=100012096&sig=a8fba7753e79c259a4f364e39125689e','','width=547,height=300)” >popup link</a>

界面:

返回结果示例

此接口返回HTML结果,具体界面可参考上面的图示。

如想获取用户操作结果,请查看下面的接口回调。

接口回调

支付成功后,扣除用户相应数量的开心币,开放平台通过callback指定的URL将以下参数回调给应用。
应确保callback是可以在互联网上直接被访问的,切勿添加登录验证等功能,也不能使用本地或局域网内部的地址。
验证回调是否是开心网发出的,请参考Dialog回调验证
Dialog回调地址及签名验证检查

回调参数:

参数名说明
uid执行当前操作的用户UID
orderid订单号
amount支付的开心币
from来源
status订单支付状态。1为支付成功
pid流水号,用于对账
testtest值为非空或非零值,说明使用测试开心币进行的支付
ctime回调时间
sig数据签名。用来判断请求是否由开心网所发出(与API1.2验证方法不同
callbackkey用户操作的代码。具体的代码所代表含义请参见以下操作代码对照表。
某些接口提供了可选的callbackkey参数的,表示该接口回调操作代码是可以自定义的

关于Dialog API接口回调,详细请参考接口回调说明

回调地址收到请求后请输出“ok”表示接收成功。

为保证回调地址可以收到回调数据,在接口立刻回调之外,还会有队列程序向回调地址发送数据(接口立刻回调后大概5-10分钟内)。

队列会多次向回调地址发送该订单处理后的回调数据,直到回调地址返回“ok”。

向回调地址发送数据都是GET方式。如:您的回调地址为http://www.yournam.com/callback.php我们回调你的接口的时候,会采用http://www.yourname.com/callback.php?a=123&b=231&c=1231的方式。

注意:因为会多次向回调地址发送成功数据,所以开发者必须自己做判断,防止多次处理同一订单。
由于回调请求是由开心网服务器发出的,组件的回调地址必须在互联网上可直接访问的,不能添加会员登录验证。

错误代码释义