支付接口现在有第三方的支付接口也有银行的支付接口。这里就来介绍php版本银联支付接口开发的方法。
银联支付,首先要注意二重要的部分:
PHP运行环境是5.4.18以上
开了扩展openssl
开发手册上面的列子只做参考,因为基本都是错的。你可以试着去官网下一个demo。。。注意现在银联开发,没有测试密钥提供,只能在正式环境开发
下面是我用ThinkPHP编写的一个支付类
/*** 银联支付 v0.1
* @auther:Summer<dengwz7788@gmail.com>
* @date:20151202
* **/
class NetPayAction extends BaseAction{
//在类初始化方法中,引入相关类库
public function _initialize() {
header("Content-type:text/htmlcharset=utf-8")
vendor('Netpay.util.common',"",".php") //导入加密核心文件夹
vendor('Netpay.util.SecssUtil',"",".class.php") //导入加密核心文件夹
vendor('Netpay.util.Settings_INI',"",".php") //导入加密核心文件夹
vendor('Netpay.util.Settings',"",".php") //导入加密核心文件夹
$this->securityPropFile= $_SERVER['DOCUMENT_ROOT'] . "/ThinkPHP/Extend/Vendor/Netpay/config/security.properties" //谁知道这是啥,反正他们要我加的
$this->b2cPaySend = __APP__."/Index/NetPay/b2cPaySend"
$this->b2cRefundSend = __APP__."/Index/NetPay/b2cRefundSend"
$this->b2cQuerySend = __APP__."/Index/NetPay/b2cQuerySend"
$this->MerBgUrl = __APP__."/Index/NetPay/MerBgUrl"
$this->MerPageUrl = __APP__."/Index/NetPay/MerPageUrl"
}
public function index()
{
$paramArray=array (
'MerId' => '商户号',
'MerOrderNo' => '0000001944663232',
'OrderAmt' => '1',
'TranDate' => '20151219',
'TranTime' =>'171248',
'TranType' => '0001',
'BusiType' =>'0001',
'Version' => '20140728',
'CurryNo' => 'CNY',
'AccessType' => '0',
'CommodityMsg' => '测试商品1号',
'MerPageUrl' => $this->MerBgUrl,
'MerBgUrl' =>$this->MerPageUrl,
'MerResv' => 'MerResv',
)
if (count($paramArray) >0) {
$dispatchUrl = $this->b2cPaySend
$transResvedJson = array()
$cardInfoJson = array()
$sendMap = array()
foreach ($paramArray as $key => $value) {
if (isEmpty($value)) {
continue
}
if (startWith($key, "trans_")) {
$key = substr($key, strlen("trans_"))
$transResvedJson[$key] = $value
} else
if (startWith($key, "card_")) {
$key = substr($key, strlen("card_"))
$cardInfoJson[$key] = $value
} else {
$sendMap[$key] = $value
}
}
$transResvedStr = null
$cardResvedStr = null
if (count($transResvedJson) >0) {
$transResvedStr = json_encode($transResvedJson)
}
if (count($cardInfoJson) > 0) {
$cardResvedStr = json_encode($cardInfoJson)
}
$secssUtil = new SecssUtil()
if (! isEmpty($transResvedStr)) {
$transResvedStr = $secssUtil->decryptData($transResvedStr)
$sendMap["TranReserved"] = $transResvedStr
}
if (! isEmpty($cardResvedStr)) {
$cardResvedStr = $secssUtil->decryptData($cardResvedStr)
$sendMap["card_"] = $cardResvedStr
}
$securityPropFile = $this>securityPropFile
$secssUtil->init($securityPropFile)
$secssUtil->sign($sendMap)
$sendMap["Signature"] = $secssUtil->getSign()
$_SESSION = $sendMap
header("Location:" . $dispatchUrl)
}
}
public function b2cPaySend(){
layout(false)
$settings = new Settings_INI()
$settings->oad($this->securityPropFile)
$pay_url = "https://payment.chinapay.com/CTITS/service/rest/page/nref/000000000017/0/0/0/0/0"
$html = "<form name='payment' action='{$pay_url}' method='POST' target='_blank'>"
$params = "TranReservedMerIdMerOrderNoOrderAmtCurryNoTranDateSplitMethodBusiTypeMerPageUrlMerBgUrlSplitTypeMerSplitMsgPayTimeOutMerResvVersionBankInstNoCommodityMsgSignatureAccessTypeAcqCodeOrderExpiryTimeTranTypeRemoteAddrReferredTranTimeTimeStampCardTranData"
foreach ($_SESSION as $k =>$v) {
if (strstr($params, $k)) {
$html .= "<input type='hidden' name = '" . $k . "' value ='" . $v . "'/>"
}
}
$html .= "<nput type='button' type='hidden' value='提交订单' >"
$html .= "</from>"
$this->html = $html
$this->display()
}
public function pgReturn(){
if ($_POST) {
if (count($_POST) > 0) {
$secssUtil = new SecssUtil()
$securityPropFile = $this>securityPropFile
$secssUtil->init($securityPropFile)
$text = array()
foreach($_POST as $key=>$value){
$text[$key] = urldecode($value)
}
if ($secssUtil->verify($text)) {
//支付成功
$_SESSION["VERIFY_KEY"] = "success"
} else {
//支付失败
$_SESSION["VERIFY_KEY"] = "fail"
}
}
}
}
}
银联支付应该是算比较简单的!!
最近正在做一个小项目,其中一个要实现手机话费充值功能。我在网上搜罗了很久,最终找了聚合数据上的那个手机话费充值api接口,下面就分享一下,希望对需求的朋友有所帮助。聚合数据是一个API聚合平台,提供了超多各类API,它的手机话费充值api接口也是不错的。
1.手机话费充值API
1.1检测手机号码是否能充值
接口地址:http://op.juhe.cn/ofpay/mobile/telcheck
支持格式:json
请求方式:http post/get
请求示例:http://op.juhe.cn/ofpay/mobile/telcheck?cardnum=100&phoneno=13429667914&key=您申请的KEY
接口备注:检测手机号码及金额是否能充值
请求参数说明:
名称
类型
必填
说明
phoneno
string
是
手机号码
cardnum
string
是
充值金额,目前可选:10、20、30、50、100、300
key
string
是
应用APPKEY(应用详细页查询)
返回参数说明:
名称
类型
说明
error_code
int
返回码
reason
string
返回说明
result
string
返回结果集
JSON返回示例:
{ "reason": "允许充值的手机号码及金额", "result": null, "error_code": 0 }
1.2根据手机号和面值查询商
接口地址:http://op.juhe.cn/ofpay/mobile/telquery
支持格式:json
请求方式:http get/post
请求示例:http://op.juhe.cn/ofpay/mobile/telquery?cardnum=30&phoneno=18913515635&key=您申请的KEY
接口备注:根据手机号和面值查询商品信息
请求参数说明:
名称
类型
必填
说明
phoneno
string
是
手机号码
cardnum
string
是
充值金额,目前可选:10、20、30、50、100、300
key
string
是
应用APPKEY(应用详细页查询)
返回参数说明:
名称
类型
说明
error_code
int
返回码
reason
string
返回说明
result
string
返回结果集
JSON返回示例:
{ "reason": "成功", "result": { "cardid": "191404", "cardname": "江苏电信话费100元直充", "inprice": 98.4, "game_area": "江苏苏州电信" }, "error_code": 0 }
1.3手机直充接口
接口地址:http://op.juhe.cn/ofpay/mobile/onlineorder
支持格式:json
请求方式:http get/post
请求示例:http://op.juhe.cn/ofpay/mobile/onlineorder?key=KEY&phoneno=18913513535&cardnum=100&orderid=2014111111113&sign=fb1ed32a9540c24b03cc0c06aabbb642
接口备注:依据用户提供的请求为指定手机直接充值,***如果充值过程中,遇到http网络状态异常或错误码返回系统异常100014,请务必通过订单查询接口检测订单或联系客服,不要直接做失败处理,避免照成不必要的损失!!!
请求参数说明:
名称
类型
必填
说明
phoneno
string
是
手机号码
cardnum
string
是
充值金额,目前可选:10、20、30、50、100、300
orderid
string
是
商家订单号,8-32位字母数字组合,由您自己生成
key
string
是
应用APPKEY(应用详细页查询)
sign
string
是
校验值,md5(OpenID+key+phoneno+cardnum+orderid),OpenID在个人中心查询
返回参数说明:
名称
类型
说明
error_code
int
返回码
reason
string
返回说明
result
string
返回结果集
JSON返回示例:
{ "reason": "订单提交成功,等待充值", "result": { "cardid": "1900212", "cardnum": "1", "ordercash": 49.25, "cardname": "江苏电信话费50元直充", "sporder_id": "20141120174602882", "uorderid":"2014123115121", "game_userid": "18913515122", "game_state": "0" }, "error_code": 0 }
1.4订单状态查询
接口地址:http://op.juhe.cn/ofpay/mobile/ordersta
支持格式:json
请求方式:http get/post
请求示例:http://op.juhe.cn/ofpay/mobile/ordersta?key=&orderid=a112244411a
接口备注:查询订单的最新状态,请确认订单成功提交后,再查询哦~
请求参数说明:
名称
类型
必填
说明
orderid
string
是
商家订单号,8-32位字母数字组合,请填写已经成功提交的订单号
key
string
是
应用APPKEY(应用详细页查询)
返回参数说明:
名称
类型
说明
error_code
int
返回码
reason
string
返回说明
result
string
返回结果集
JSON返回示例:
{ "reason": "查询成功", "result": { "uordercash": "5.000", "sporder_id": "20150511163237508", "game_state": "1" }, "error_code": 0 }
1.5状态回调配置
充值接口测试完毕,需联系在线客服进行回调配置。
演示:
最后,附《手机话费充值》资费说明:
卡种
面额
价格
10元话费直冲
¥10.00
¥9.80~¥10.2
20元话费直冲
¥20.00
¥19.60~¥20.1
30元话费直冲
¥30.00
¥29.54~¥30
50元话费直冲
¥50.00
¥49.25~¥50
100元话费直冲
¥100.00
¥99.4~¥100
300元话费直冲
¥300.00
¥295.5~¥296.4
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)