文|何掌柜
第一步:创建运用并获取APPID
要在您的运用中利用支付宝开放产品的接谈锋能,您须要先去蚂蚁金服开放平台(open.alipay.com),在管理中央中创建登记您的运用,并提交审核,审核通过后会为您天生运用唯一标识(APPID),并且可以申请开通开放产品利用权限,通过APPID您的运用才能调用开放产品的接谈锋能。须要详细理解开放平台创建运用步骤请参考《开放平台运用创建指南》。
如果想要有支付功能,该运用必须参加APP支付的功能。
第二步:配置密钥
开拓者调用接口前须要师长西席成RSA密钥,RSA密钥包含运用私钥(APP_PRIVATE_KEY)、运用公钥(APP_PUBLIC_KEY)。天生密钥后在开放平台管理中央进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详细步骤请参考《配置运用环境》。
利用工具天生运用私钥和公钥,并设置运用私钥。
第三步:集成并配置SDK
接入移动支付须要集成两个SDK,客户端SDK须要集成在商户自己的APP中,用于唤起支付宝APP并发送交易数据,并在支付宝APP返回商户APP时得到支付结果。做事端SDK须要商户集成在自己的做事端系统中,用于帮忙解析并验证客户端同步返回的支付结果和异步关照。如何集成客户端SDK点击查看iOS集成流程详解,Android集成流程详解。如何集成做事端SDK为了帮助开拓者调用开放接口,我们供应了开放平台做事端SDK,包含JAVA、PHP和.NET三措辞版本,封装了署名&验签、HTTP接口要求等根本功能。请先下载对应措辞版本的SDK并引入您的开拓工程。
第四步:调用接口
实现步骤:
在这里只对做事端,进行解释,做事端须要实现只有这几个接口,紧张利用官方供应的php sdk。初始化:Loader::import('alipay.AopClient', EXTEND_PATH);$this->aopClient = new \AopClient();$this->aopClient->appId = config('alipay_config.appid');//运用aapid$this->aopClient->rsaPrivateKey = config('alipay_config.rsa_private_key');//运用私钥$this->aopClient->format = 'json';$this->aopClient->alipayrsaPublicKey = config('alipay_config.alipay_rsa_public_key');//支付宝公钥
1. 署名接口:
用户在客户端下单,发起支付要求,先到做事端天生支付署名,再返回给客户端调支付宝客户端进入支付页面。
Loader::import('alipay.request.AlipayTradeAppPayRequest', EXTEND_PATH);
//实例化详细API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.open.public.template.message.industry.modify
$req = new \AlipayTradeAppPayRequest();
$req->setNotifyUrl(config('alipay_config.notify_url'));//异步关照接口
$bizCoent = [];
$bizCoent['timeout_express'] = \"大众1d\"大众;
$bizCoent['product_code'] = \"大众QUICK_MSECURITY_PAY\"大众;//产品编码,固定
$bizCoent['total_amount'] = $sum_pay;
$bizCoent['subject'] = ‘标题’;
$bizCoent['body'] = '订单描述';
$bizCoent['out_trade_no'] = $order_num;
$req->setBizContent(json_encode($bizCoent));
//SDK已经封装掉了公共参数,这里只须要传入业务参数
$response = $this->aopClient->sdkExecute($req);//天生署名
2. 客户端同步关照:
当用户支付成功后,调用该接口关照系统支付成功,并做一些订单信息的修正,但是这个接口无法担保一定会成功实行,紧张是赞助后台异步关照。该接口由支付成功后调用:
$param = json_decode(post('pay_result'),true);//参考支付宝【客户端同步】接口
if ($param['resultStatus'] == 9000) {//交易成功
//支付成功,验证订单信息,验证署名,修正订单信息
} else {
log_error(\"大众支付宝同步关照失落败\"大众, '状态码:' . $param['resultStatus'] . '|' . $param['memo']);
}
3. 后台异步关照
当支付成功后,异步调用该接口关照系统订单支付成功,这个接口是可信任的,当你没有返回“success”时,支付宝会在一天内定时调用8次。该接口由支付宝通过署名设置的notify_url调起:
$param=$_POST;//接管post数据,参考【支付结果异步关照】
$res=$this->aopClient->rsaCheckV1($param); if(!$res){
log_error(\"大众支付宝notify关照\"大众,$param['out_trade_no'].\公众参数验证失落败\公众); return error(\"大众参数验证失落败\"大众);
}
f($param['trade_status']=='TRADE_SUCCESS'||$param['trade_status']=='TRADE_FINISHED'){ return $this->updateOrder($param['out_trade_no'],$param['trade_no'],1,$param['total_amount'] );
}else if($param['trade_status']=='TRADE_CLOSED'){//交易关闭,把订单改为已撤销
return $this->cacelOrder($param['out_trade_no']);//取消订单
}else{//其他关照类型
return error(\公众未知关照类型\公众);
}