admin/app/common/services/alipay/f2fpay/barpay_test.php

134 lines
6.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Created by PhpStorm.
* User: xudong.ding
* Date: 16/5/20
* Time: 下午3:31
*/
use app\common\services\alipay\f2fpay\model\builder\ExtendParams;
header("Content-type: text/html; charset=utf-8");
if (!empty($_POST['out_trade_no'])&& trim($_POST['out_trade_no'])!="") {
// (必填) 商户网站订单系统中唯一订单号64个字符以内只能包含字母、数字、下划线
// 需保证商户系统端不能重复建议通过数据库sequence生成
//$outTradeNo = "barpay" . date('Ymdhis') . mt_rand(100, 1000);
$outTradeNo = $_POST['out_trade_no'];
// (必填) 订单标题粗略描述用户的支付目的。如“XX品牌XXX门店消费”
$subject = $_POST['subject'];
// (必填) 订单总金额单位为元不能超过1亿元
// 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
$totalAmount = $_POST['total_amount'];
// (必填) 付款条码用户支付宝钱包手机app点击“付款”产生的付款条码
$authCode = $_POST['auth_code']; //28开头18位数字
// (可选,根据需要使用) 订单可打折金额,可以配合商家平台配置折扣活动,如果订单部分商品参与打折,可以将部分商品总价填写至此字段,默认全部商品可打折
// 如果该值未传入,但传入了【订单总金额】,【不可打折金额】 则该值默认为【订单总金额】- 【不可打折金额】
//String discountableAmount = "1.00"; //
// (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
// 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
$undiscountableAmount = "0.01";
// 卖家支付宝账号ID用于支持一个签约账号下支持打款到不同的收款账号(打款到sellerId对应的支付宝账号)
// 如果该字段为空则默认为与支付宝签约的商户的PID也就是appid对应的PID
$sellerId = "";
// 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
$body = "购买商品2件共15.00元";
//商户操作员编号,添加此参数可以为商户操作员做销售统计
$operatorId = "test_operator_id";
// (可选) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持
$storeId = "test_store_id";
// 支付宝的店铺编号
$alipayStoreId = "test_alipay_store_id";
// 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),详情请咨询支付宝技术支持
$providerId = ""; //系统商pid,作为系统商返佣数据提取的依据
$extendParams = new ExtendParams();
$extendParams->setSysServiceProviderId($providerId);
$extendParamsArr = $extendParams->getExtendParams();
// 支付超时线下扫码交易定义为5分钟
$timeExpress = "5m";
// 商品明细列表,需填写购买商品详细信息,
$goodsDetailList = array();
// 创建一个商品信息参数含义分别为商品id使用国标、名称、单价单位为分、数量如果需要添加商品类别详见GoodsDetail
$goods1 = new GoodsDetail();
$goods1->setGoodsId("good_id001");
$goods1->setGoodsName("XXX商品1");
$goods1->setPrice(3000);
$goods1->setQuantity(1);
//得到商品1明细数组
$goods1Arr = $goods1->getGoodsDetail();
// 继续创建并添加第一条商品信息用户购买的产品为“xx牙刷”单价为5.05元,购买了两件
$goods2 = new GoodsDetail();
$goods2->setGoodsId("good_id002");
$goods2->setGoodsName("XXX商品2");
$goods2->setPrice(1000);
$goods2->setQuantity(1);
//得到商品1明细数组
$goods2Arr = $goods2->getGoodsDetail();
$goodsDetailList = array($goods1Arr, $goods2Arr);
//第三方应用授权令牌,商户授权系统商开发模式下使用
$appAuthToken = "";//根据真实值填写
// 创建请求builder设置请求参数
$barPayRequestBuilder = new AlipayTradePayContentBuilder();
$barPayRequestBuilder->setOutTradeNo($outTradeNo);
$barPayRequestBuilder->setTotalAmount($totalAmount);
$barPayRequestBuilder->setAuthCode($authCode);
$barPayRequestBuilder->setTimeExpress($timeExpress);
$barPayRequestBuilder->setSubject($subject);
$barPayRequestBuilder->setBody($body);
$barPayRequestBuilder->setUndiscountableAmount($undiscountableAmount);
$barPayRequestBuilder->setExtendParams($extendParamsArr);
$barPayRequestBuilder->setGoodsDetailList($goodsDetailList);
$barPayRequestBuilder->setStoreId($storeId);
$barPayRequestBuilder->setOperatorId($operatorId);
$barPayRequestBuilder->setAlipayStoreId($alipayStoreId);
$barPayRequestBuilder->setAppAuthToken($appAuthToken);
// 调用barPay方法获取当面付应答
$barPay = new AlipayTradeService($config);
$barPayResult = $barPay->barPay($barPayRequestBuilder);
switch ($barPayResult->getTradeStatus()) {
case "SUCCESS":
echo "支付宝支付成功:" . "<br>--------------------------<br>";
print_r($barPayResult->getResponse());
break;
case "FAILED":
echo "支付宝支付失败!!!" . "<br>--------------------------<br>";
if (!empty($barPayResult->getResponse())) {
print_r($barPayResult->getResponse());
}
break;
case "UNKNOWN":
echo "系统异常,订单状态未知!!!" . "<br>--------------------------<br>";
if (!empty($barPayResult->getResponse())) {
print_r($barPayResult->getResponse());
}
break;
default:
echo "不支持的交易状态,交易返回异常!!!";
break;
}
return;
}
?>