一、PC端(电脑端)网站扫码支付接口申请流程
1. 注册是支付宝商家账号 —— 注册地址;
2. 注册成功后,找到蚂蚁金服开放平台,点击支付应用;
3. 创建应用
4. 添加应用中的电脑支付功能
5. 开发配置
说明:
(1)其中的支付宝网关地址不用改;
(2)应用网关设置为你网站的域名(如:https://www.xxx.com/),所以这个位置的设置就决定了你的网站首先要上线、然后域名解析到服务器上才可以申请支付宝的支付接口;
(3)授权回调地址不用设置,一般如果涉及到第三方访问应用的时候才需要设置;
(4)设置应用公钥 —— 获取应用公钥和私钥的参考文档。
6. 当配置好后,直接提交审核,之后就等待审核了。
二、准备配置参数
当我们支付宝电脑支付功能所在应用申请成功后,我们需要获取一系列支付宝支付配置参数。
1. app_id :应用ID,在这个地址中查看:https://openhome.alipay.com/platform/keyManage.htm;
2. merchant_private_key:商户私钥。这个在获取应用公钥和私钥时就已经获取到,公钥上传到支付宝中,私钥就在项目中与之匹配验证;
3. notify_url : 异步通知回调地址。支付成功后,支付宝回调服务器的地址;
4. return_url:同步跳转地址。支付成功回调了服务器的地址后,自动跳转到目标地址;
5. charset:编码格式,一般为“UTF-8”;
6. sign_type:签名方式,一般为“RSA2”;
7. gatewayUrl:支付宝网关,https://openapi.alipay.com/gateway.do;
8. alipay_public_key:支付宝公钥,在这个地址查看:https://openhome.alipay.com/platform/keyManage.htm。
三、实际应用举例(ThinkPHP3.2)
1. 下载支付宝支付demo,下载地址:https://docs.open.alipay.com/270/106291/;
2. 解压,将文件包放入 /ThinkPHP/Library/Vendor/ 文件夹下,如:
3. 在配置文件中配置支付宝配置参数,文件路径:/application/Common/config/config.php;
4. 控制器中生成支付二维码的代码
public function alipay() { // 配置参数 $res = array(); $res['out_trade_no'] = $_POST['orderno); // 商户订单号 $res['subject'] = $_POST['title']; // 商品名称 $res['total_amount'] = $_POST['total']; // 商品总价 $res['body'] = $_POST['description']; // 商品描述 // 引入支付核心文件 Vendor('Alipay.AopSdk'); Vendor("Alipay.pagepay.service.AlipayTradeService"); Vendor("Alipay.pagepay.buildermodel.AlipayTradePagePayContentBuilder"); // 获取支付宝配置参数 $config = C("alipay"); //商户订单号,商户网站订单系统中唯一订单号,必填 $out_trade_no = $res["out_trade_no"]; //订单名称,必填 $subject = trim($res["subject"]); //付款金额,必填 $total_amount = $res["total_amount"]; //商品描述,可空 $body = trim($res["body"]); //构造参数 $payRequestBuilder = new \AlipayTradePagePayContentBuilder(); $payRequestBuilder->setBody($body); $payRequestBuilder->setSubject($subject); $payRequestBuilder->setTotalAmount($total_amount); $payRequestBuilder->setOutTradeNo($out_trade_no); $aop = new \AlipayTradeService($config); /** * pagePay 电脑网站支付请求 * @param $builder 业务参数,使用buildmodel中的对象生成。 * @param $return_url 同步跳转地址,公网可以访问 * @param $notify_url 异步通知地址,公网可以访问 * @return $response 支付宝返回的信息 */ $response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']); //输出支付二维码 var_dump($response); }
此处流程:用户点击支付后,直接访问该地址,并将购买商品的订单号、商品名称、商品总价以及商品描述等参数传递过来,支付宝自动生成支付二维码页面。用户扫描支付后,自动回调,回调如下:
public function ailpay_notify(){ // 引入核心类文件 Vendor("Alipay.pagepay.service.AlipayTradeService"); // 获取支付宝配置参数 $config = C('alipay'); // 获取返回值 $arr = $_POST; // 检查数据 $alipaySevice = new \AlipayTradeService($config); $alipaySevice->writeLog(var_export($_POST,true)); $result = $alipaySevice->check($arr); // 判断检查结果数据 if($result) { // 获取相关数据 $out_trade_no = $arr['out_trade_no']; //商户订单号 $trade_no = $arr['trade_no']; //支付宝交易号 $trade_status = $arr['trade_status']; //交易状态 $total_amount = $arr['total_amount']; //交易金额 $buyerid = $arr['buyer_id']; //卖家支付宝账号id // 判断数据是否做过处理,如果做过处理,return,没有做过处理,执行支付成功代码 if($trade_status == 'TRADE_FINISHED' OR $trade_status == 'TRADE_SUCCESS') { // 修改订单状态 // 修改用户拥有商品状态 // codeding…… echo "success"; }else{ echo "fail"; } }else { echo "fail"; } }
ps:至此,一个完整的支付宝集合支付宝电脑版支付api过程已经完成。但是,我们经常会在真正申请支付宝应用前使用沙箱模式进行测试,那怎么进行呢?
如下步骤:
(1)登录支付宝商户账号,找到栏目开发者中心,点击研发服务,如下图:
(2)在沙箱应用下配置我们之前说到的那些配置参数,然后获取到这些配置参数。
(3)然后其他操作和真实应用一模一样。
(4)沙箱版配置生成的支付二维码只能通过沙箱版支付宝APP进行扫描支付。具体下载参考:沙箱环境中的沙箱账号和沙箱工具。
四、参考文档
1. 支付宝电脑版支付API文档;
2. 沙箱环境使用文档;
总结:通过支付宝电脑版支付的流程,基本有思路去集成支付宝其他终端的支付功能,并且相关的退款、查询订单等功能也可以顺着文档支付宝的demo去试验,长点见识总是好的,亲自去感知一遍过程,对很多事情的想法会不一样。
祝好运!