iOS、Android支付宝支付 PHP端实现逻辑
2018-03-12 10:51
375 查看
写代码前一定要参照支付宝官方文档,文档地址:https://openhome.alipay.com/platform/appManage.htm
首先去看此应用的APPID啦(如果有多个APP,眼睛注意,千万别看错哦),当然,如果你的APP没有签约APP支付那就坑爹了,赶紧去申请并且签约吧!!!
好,如果一切都没问题了,开始进入正题
public function Enctype() {
//I() I函数是ThinkPHP框架里面接收前端参数的一个函数
$orderId = I('post.order_id'); //支付订单号(支付宝规定,一条订单号只能支付成功一次)
$payMoney = I('post.payMoney'); //支付的钱 (单位为 元)
$name = I('post.name');
$money = I('post.money');
$passback_params = urlencode("&paymoney=$money"."&redid[]=". substr(I('post.redid'), 1)); //支付宝支付时可以自定义参数,但是一定要urlencode()
//下面我引入的都是支付宝官方支付包里面的文件
require_once 'Alipay/aop/AopClient.php';
require_once 'Alipay/aop/request/AlipayTradeAppPayRequest.php';
$aop = new \Alipay\aop\AopClient();
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = "应用APPID";
$aop->rsaPrivateKey = '这里面填写 开发者私钥去头去尾去回车的一行字符串(一定要跟下面的alipayrsaPublicKey区分开)';
$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = '支付宝公钥,一行字符串';
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$request = new \Alipay\aop\request\AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
$bizcontent =
"{\"body\":\"" . $name . "\","
. "\"subject\": \"" . $name . "\","
. "\"out_trade_no\": \"" . $orderId . "\","
. "\"timeout_express\": \"30m\","
. "\"total_amount\": \"" . $payMoney . "\","
. "\"passback_params\": \"" . $passback_params . "\","
. "\"product_code\":\"QUICK_MSECURITY_PAY\""
. "}";
$request->setNotifyUrl("这里是支付成功回调地址,用来处理支付成功的数据的,一定得有");
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
$return_info['orderString'] = $response;
$this->ajaxReturn($return_info); //返还给APP支付订单信息
}APP收到后台翻过去的支付信息,调起支付宝便可支付
/**
* 支付成功回调地址
*/
public function notify_url(){ //这里面的处理方法还只是简版,实际上真正意义上的业务处理要比这复杂得多
//Loader::import('alipaydirect.return_url');
$r = new \alipaydirect\return_url();
//商户订单号
// $out_trade_no = $_GET['out_trade_no'];
// //支付宝交易号
// $trade_no = $_GET['trade_no'];
// //交易状态
// $trade_status = $_GET['trade_status'];
if ($r=="fail") {
echo "fail"; //支付宝收到 fail的信号会继续调用此地址
}else{
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
echo "success"; //支付宝收到success会终止调用此地址
}
}
}
首先去看此应用的APPID啦(如果有多个APP,眼睛注意,千万别看错哦),当然,如果你的APP没有签约APP支付那就坑爹了,赶紧去申请并且签约吧!!!
好,如果一切都没问题了,开始进入正题
public function Enctype() {
//I() I函数是ThinkPHP框架里面接收前端参数的一个函数
$orderId = I('post.order_id'); //支付订单号(支付宝规定,一条订单号只能支付成功一次)
$payMoney = I('post.payMoney'); //支付的钱 (单位为 元)
$name = I('post.name');
$money = I('post.money');
$passback_params = urlencode("&paymoney=$money"."&redid[]=". substr(I('post.redid'), 1)); //支付宝支付时可以自定义参数,但是一定要urlencode()
//下面我引入的都是支付宝官方支付包里面的文件
require_once 'Alipay/aop/AopClient.php';
require_once 'Alipay/aop/request/AlipayTradeAppPayRequest.php';
$aop = new \Alipay\aop\AopClient();
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = "应用APPID";
$aop->rsaPrivateKey = '这里面填写 开发者私钥去头去尾去回车的一行字符串(一定要跟下面的alipayrsaPublicKey区分开)';
$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = '支付宝公钥,一行字符串';
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$request = new \Alipay\aop\request\AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
$bizcontent =
"{\"body\":\"" . $name . "\","
. "\"subject\": \"" . $name . "\","
. "\"out_trade_no\": \"" . $orderId . "\","
. "\"timeout_express\": \"30m\","
. "\"total_amount\": \"" . $payMoney . "\","
. "\"passback_params\": \"" . $passback_params . "\","
. "\"product_code\":\"QUICK_MSECURITY_PAY\""
. "}";
$request->setNotifyUrl("这里是支付成功回调地址,用来处理支付成功的数据的,一定得有");
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
$return_info['orderString'] = $response;
$this->ajaxReturn($return_info); //返还给APP支付订单信息
}APP收到后台翻过去的支付信息,调起支付宝便可支付
/**
* 支付成功回调地址
*/
public function notify_url(){ //这里面的处理方法还只是简版,实际上真正意义上的业务处理要比这复杂得多
//Loader::import('alipaydirect.return_url');
$r = new \alipaydirect\return_url();
//商户订单号
// $out_trade_no = $_GET['out_trade_no'];
// //支付宝交易号
// $trade_no = $_GET['trade_no'];
// //交易状态
// $trade_status = $_GET['trade_status'];
if ($r=="fail") {
echo "fail"; //支付宝收到 fail的信号会继续调用此地址
}else{
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
echo "success"; //支付宝收到success会终止调用此地址
}
}
}
相关文章推荐
- Android 支付宝支付功能封装实现
- 实现Android支付宝声波支付时的波纹视图
- Android中的微信、支付宝支付功能的简单实现--摘自肖玲玲老师博客160305
- iOS支付宝支付,,,实现步骤及注意事项
- 实现Android支付宝声波支付时的波纹视图
- Android中的微信、支付宝支付功能的简单实现
- ecmobile实现支付宝支付和百度云推送遇到的问题及解决方案(android)
- 支付宝pc端支付接入PHP实现
- Android中集成支付宝接口实现支付
- iOS开发之第三方支付支付宝支付教程,史上最新最全第三方支付宝支付方式实现、支付宝集成教程,支付宝实现流程
- Android 如何用支付宝实现支付功能
- Android IOS手机客户端支付接口API(支付宝)
- [置顶] Android支付宝-2016最新版支付宝,实现支付功能
- 支付宝pc端支付接入PHP实现
- 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)
- Android 从零开始实现支付宝支付
- iOS APP接入支付宝SDK支付功能的实现(小白篇)
- 超详细Android接入支付宝支付实现,有图有真相
- Android 支付宝支付功能封装实现
- 支付宝移动支付,服务端对异步通知信息验签的时候验签失败,支付宝pc端支付接入PHP实现