欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

使用php实现快钱支付功能(涉及到接口)

程序员文章站 2022-06-14 21:04:43
...

本篇文章是对使用php实现快钱支付功能的代码进行了详细的分析介绍,需要的朋友参考下

本项目用zend framework框架实现的
modules/default/controllers/IndexController.php
IndexController.php

复制代码 代码如下:


class IndexController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{

/*模拟订单
*$MockOrder是从数据库取出来的信息,它包含一些块钱Request的信息。这里我写死了。
*orderId订单号,数据库表的主键(唯一)。 //必要字段
*usr_idtype证件类型,根据自己需要。
*usr_idcode证件号,根据自己需要。
*etx_status是否优惠,根据自己需要。
*time_create验证是否符合优惠的时间,根据自己需要。
*ets_license套餐代码如同商品类别,根据自己需要。
*contact_type联系方式类型,固定选择值1,2。1电子邮件,2手机号,根据自己需要,块钱那边可以为空。
*contact_text联系方式,根据contact_type来填写,美国空间,根据自己需要,块钱那边可以为空。
*etsPrice套餐价格及商品价格,根据自己需要。
*orderPrice实际价格,根据自己需要。
*orderAmount订单实际支付金额,这个要加手续费的。 //必要字段
*orderTime订单时间。 //必要字段
*paySuccess订单是否支付成功。 //必要字段
*buySuccess账号是否生成功,根据自己需要
*payTime订单支付成功时间。 //必要字段
*总之凡是跟订单有关的都是必要字段
*orderId、orderAmount、orderTime为 Request所需字段
*paySuccess、payTime为Response所需字段
*/
$MockOrder = array();
$MockOrder['orderId'] = '100000125';//订单号。--必要
$MockOrder['usr_idtype'] = '1';//证件类型,身份证
$MockOrder['usr_idcode'] = '371111199011111111';//身份证号
$MockOrder['etx_status'] = '0';//是否优惠,否
$MockOrder['time_create'] = '1352338189';//验证是否优惠时间
$MockOrder['ets_license'] = '1';//套餐代码及商品类别
$MockOrder['contact_type'] = '1';//联系方式类型 1,邮箱
$MockOrder['contact_text'] = 'x@163.com';//联系方式,邮箱
$MockOrder['etsPrice'] = '30800';//套餐价格及商品价格
$MockOrder['orderPrice'] = '30800';//实际价格
$MockOrder['orderAmount'] = '31100';//订单实际支付价格,加手续费的。--必要
$MockOrder['orderTime'] = '1352338199';//订单生成时间。--必要
$MockOrder['paySuccess'] = '0';//订单是否支付成功。--必要
$MockOrder['buySuccess'] = '0';//账号是否生成成功
$MockOrder['payTime'] = '0';//订单支付时间。--必要

//BillRequest就是快钱那边需要的的一些参数
$this->view->BillRequest = new Application_Model_BillRequest($MockOrder);
Zend_Debug::dump($this->view->BillRequest);exit;
}

//bgUrl地址指向这里
public function receiveAction()
{
//receive数据库设计
/*用$MockReceive数组模拟
* $MockReceive = array();
* $MockReceive['id']主键;
* $MockReceive['orderId']商户订单号;
* $MockReceive['receiveTime']接受时间;
* $MockReceive['queryString']http_build_encode($_REQUEST);
* $MockReceive['dealId']快钱交易号;
* $MockReceive['bankDealId']银行交易号;
* $MockReceive['payResult']处理结果10:支付成功;11:支付失败;
* $MockReceive['dealTime']快钱交易时间;
* $MockReceive['payAmount']订单实际支付金额;
* $MockReceive['fee']费用;
* $MockReceive['errCode']错误代码;
*/


/*$_REQUEST是快钱那边返回来的数据
* merchantAcctId人民币账号,与提交订单时的块钱账号保持一致。
* version网关版本,固定值:v2.0,与提交订单时的网关版本号保持一致。
* language网页显示语言种类,1中文显示,与提交订单时的网页显示语言种类保持一致
* signType签名类型,4PKI签名,与提交订单时的签名类型保持一致
* payType支付方式,00全部,与提交订单时的支付方式保持一致
* bankId银行代码
* orderId商户订单号,香港服务器,与提交订单时的商户订单号保持一致
* orderTime商户订单提交时间,与提交订单时的商户订单提交时间保持一致
* orderAmount商户订单金额,与提交订单时的商户订单金额保持一致。
* dealId快钱交易号
* bankDealId银行交易号
* dealTime快钱交易时间
* payAmount订单实际支付金额
* fee费用
* ext1扩展字段1,与提交订单时的扩展字段1保持一致
* ext2扩展字段2,与提交订单时的扩展字段2保持一致
* payResult处理结果 10:支付成功;11:支付失败
* errCode错误代码,可为空
* signMsg签名字符串
*/
$BillResponse = new Application_Model_BillResponse($_REQUEST);
//$BillResponse->checkSignMsg验证签名字符串是否正确,防止bug漏洞等
if($BillResponse->checkSignMsg){
//判断订单支付是否成功
if($BillResponse->isSuccess){
//返回给快钱,快钱会按照redirecturl地址跳到新页面,这里是成功页面
return "1";exit;
}else{
//返回给快钱,快钱会按照redirecturl地址跳到新页面,这个是失败页面
return "1";exit;
}
}
//返回给快钱,快钱会按照redirecturl地址跳到新页面,这个是失败页面
return "1";exit;
}

//redirecturl地址
//成功
public function success()
{

}

//失败
public function fail()
{

}
}


modules/default/views/scripts/index/index.phtml
https://www.99bill.com/gateway/recvMerchantInfoAction.htm

复制代码 代码如下: