PHP接入 paytm的支付 和转账
支付
这是成功吊起后的支付页面,
这种就是需要你FQ了,你的网络不允许访问,这个要注意哦。
直接上代码
SDK下载
支付文档
public function paytm(){require_once("PaytmChecksum.php");//只需要这一个文件引入,在文档可以下载$orderId = request()->request('orderId');$amount = request()->request('amount');$custId = request()->request('custId');$mobileNo = request()->request('mobileNo');$email = request()->request('email');$paytmParams = array();$mid = "your mid ID";$key ="your key";$paytmParams["body"] = array("requestType" => "Payment","mid" => $mid,"websiteName" => "DEFAULT","orderId" =>$orderId,"callbackUrl" => "http://".$_SERVER['HTTP_HOST']."/pay/quick/paytm_back","txnAmount" => array("value" => $amount.".00","currency" => "INR",),"userInfo" => array("custId" => 'DG',"mobile"=>$mobileNo,),);/** Generate checksum by parameters we have in body* Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys*/$checksum = PaytmChecksum::generateSignature(json_encode($paytmParams["body"], JSON_UNESCAPED_SLASHES), $key);$paytmParams["head"] = array("signature"=> $checksum);$post_data = json_encode($paytmParams, JSON_UNESCAPED_SLASHES);/* for Staging *///$url = "https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid=".$mid."&orderId=".$orderId;//测试环境的URL/* for Production *///https://securegw.paytm.in/theia/api/v1/initiateTransaction?mid={mid}&orderId={order-id}$url = "https://securegw.paytm.in/theia/api/v1/initiateTransaction?mid=".$mid."&orderId=".$orderId;//正式环境的URL$ch = curl_init($url);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));$response = curl_exec($ch);$response = json_decode($response,true);//dump($response);exit;$txnToken = $response['body']['txnToken'];$txt = "mid=".$mid."&orderId=".$orderId."&txnToken=".$txnToken;$token = $this->lock_url($txt);//这里我做了一个加密。,可以省略这一步$urls = "http://".$_SERVER['HTTP_HOST']."/pay/quick/paytmtwo?token=".$token;//dump($urls);exit;//return $urls;header("Location:".$urls);exit;}//回调public function paytm_back(){require_once("PaytmChecksum.php");$key ="your key";$paytmParams = $_POST;$paytmChecksum = $_POST['CHECKSUMHASH']; //秘钥$orderId = $_POST['ORDERID'];//订单id$stauts = $_POST['STATUS'];//订单状态 //TXN_SUCCESS //TXN_FAILURE //PENDING$RESPCODE = $_POST['RESPCODE'];//状态码if($stauts == 'TXN_SUCCESS'){ //1,-1,5是我的业务逻辑的值,可以改变$status ='1';//成功}if($stauts == 'TXN_FAILURE'){$status ='-1';//失败}if($stauts == 'PENDING'){$status ='5';//排队}unset($paytmParams['paytmChecksum']);/*** Verify checksum* Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys */$isVerifySignature = PaytmChecksum::verifySignature($paytmParams, $key, $paytmChecksum);if($isVerifySignature) {//验证成功的业务逻辑}}
转账
paytm的转账分电子钱包的转账和银行卡转账,我这接的电子钱包的转账
转账文档
public function paytmcash(){require_once("PaytmChecksum.php");$paytmParams = array();//出款账户的子账户,需要在paytm的后台给出款的权限$paytmParams["subwalletGuid"] = "012634d-85214-4908-a107-2****";$paytmParams["orderId"] = '123131321';//订单ID$paytmParams["beneficiaryPhoneNo"] = '666666';//电话$paytmParams["amount"] =100;//金额$paytmParams["callbackUrl"] = "http://".$_SERVER['HTTP_HOST']."/pay/takecash/paytm_back";//回调地址$post_data = json_encode($paytmParams, JSON_UNESCAPED_SLASHES);/** Generate checksum by parameters we have in body* Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys */$checksum = PaytmChecksum::generateSignature($post_data, "#");//YOUR_MERCHANT_KEY$x_mid = "#";//YOUR_MID_HERE$x_checksum = $checksum;/* for Staging *///测试URL//$url = "https://staging-dashboard.paytm.com/bpay/api/v1/disburse/order/wallet/food";/* for Production *///正式URL$url = "https://dashboard.paytm.com/bpay/api/v1/disburse/order/wallet/gratification";$ch = curl_init($url);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "x-mid: " . $x_mid, "x-checksum: " . $x_checksum)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch);$response = json_decode($response,true);}//paytm转账回调public function paytm_back(){//回调的参数 和获取订单状态的接口返回的一样// $POST = '{"status":"SUCCESS","statusCode":"DE_001","statusMessage":"Successful disbursal to Wallet is done","result":{"mid":"PCENTE16235332048181","orderId":"1604030836","paytmOrderId":"202010300937166929359223","amount":"1.00","commissionAmount":"0.02","tax":"0.00","rrn":null,"beneficiaryName":null,"isCachedData":null,"cachedTime":null,"reversalReason":null}}';$POST = file_get_contents('php://input');$POST = json_decode($POST,true);$orderId = $POST['result']['orderId'];$status = $POST['status'];if($status == 'SUCCESS'){$status = 1;}if($status == 'FAILURE'){$status = -1;}//paytm的转账回调没有秘钥验证,有点不安全,回调过来的信息和获取订单状态返回的信息是一样的,可以去获取订单信息来完成订单回调
}
PHP接入 paytm的支付 和转账相关推荐
- H5网站接入支付宝的支付接口
写本文章的目的是为了记录工作中遇到的问题,方便以后遇到可以迅速解决问题 H5手机网站接入支付宝的支付接口,推荐使用支付宝提供的SDK来快速开发 我使用的是SDK开发 引用命名空间 using Aop. ...
- 商家 APP 如何接入新版支付宝支付,老版本商家如何升级
代码地址如下: http://www.demodashi.com/demo/14006.html ##前言 支付宝移动支付2.0版本对比1.0版本做了较大更新,新申请的商家都需要采用最新2.0版本 S ...
- 未认证公众号接入公众号支付
记录一次未认证公众号接入公众号支付 话虽这样说,实际必须有一个已经认证且已经可以使用微笑公众号支付的公众号A 公众号B没有认证,调用支付全部使用公众号A的参数(AppID,AppSecrect,pay ...
- Android接入支付宝实现支付功能
Android接入支付宝实现支付功能 我本来是想直接讲Android支付这一块的,包括支付宝,微信,其他第三方整合支付等,但是微信开放平台他对我的账号做了限制,所有我今天就先把重心放在支付宝的支付上, ...
- PHP微信支付 “商家转账到零钱”一文概述
PHP微信支付 商家转账到零钱 这里有个坑 1:转账低于5毛会失败 2:转账金额需要自己取整一下,微信官方金额是 分 为单位,换算成 元 时可能会除不尽 { "code":&quo ...
- paypal php 返回_接入 paypal PHP-sdk 支付 / 回调 / 退款全流程
记录一下接入paypal 全过程 因项目的原因要用到国外的支付和国外的信用卡,查了一下paypal就内置了信用卡付款方式,所以只需要接入paypal就能基本满足项目海外支付的需求. 查了一下文档发现w ...
- 光大银行h5支付(php接入光大银行h5支付)
光大银行h5支付(php接入光大银行h5支付) 光大银行和其它主流支付流程不一样,接这个支付最费时间,最开始是我来开发,但银行一直不给测试环境,等了大概1到2个月,给了测试环境,开始遇到各种问题,大概 ...
- Android安卓原生接入微信app支付PHP服务端
Android安卓接入微信app支付PHP服务端 1.进入微信商户平台查看统一下单接口文档. 在查看完统一下单文档后,能够看到需要传递给微信"统一下单接口"地址的参数有哪些 统一下 ...
- Android PayPal支付的接入和SDK支付过程解析
Android PayPal支付的接入和SDK支付过程解析 根据产品需求,要接入PayPal支付,在研究了几天支付后,总结下内容给新手使用,本篇文章如果与官方文档有差异的话,一切以官方为准.转载请注明 ...
最新文章
- 扔掉源码,15张图带你彻底理解java AQS
- python配置核_浅谈pytorch卷积核大小的设置对全连接神经元的影响
- 前端学习(2952):webpack目录结构
- 新版的Lync客户端无法用于老版的OCS服务器
- mysql6.1 交叉编译_Armbian系统-mysql-connector-c++-1.1.8版本-交叉编译-安装
- Redis之允许远程访问
- Python之队列queue模块使用 常见问题与用法
- TTML(IMSC)字幕
- 人无自信当废人无自信而不立
- iphone的铃声格式
- 层次路由与路由选择协议
- vue 点赞+收藏 图标
- Ubuntu出现 recovering journal ; /dev/sda1: clean, ***/*** files, ***/*** blocks 等信息无法开机的问题
- onedrive手机登录出现 无法登录,管理员需要为你分配可执行此操作的SharePoint和OneDrive许可证
- 「Java」冒泡排序
- 检查nmos管是否损坏
- 网易我的世界服务器如何安组件,网易我的世界组件包怎么使用
- 如何在调用方法时,让方法中的参数指向元素本身
- 2022-2028全球仿生面罩行业调研及趋势分析报告
- JAMA发表备受期待的22nd Century SPECTRUM(R)极低尼古丁含量香烟III期研究结果