亲,php银联在线支付,没做过,请求帮助

亲,php银联在线支付,没做过,请求帮助,第1张

支付接口现在有第三方的支付接口也有银行的支付接口。这里就来介绍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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7334665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存