1. 支付宝接口里partner为什么是2088开始的
问客服
2. java支付宝支付需要什么参数
吐槽一下:支付宝的接口文档真心太难看懂了,乱七八糟,都不知道去哪里找自己要的东西,还要有技术客服,感谢技术客服(┬_┬)
支付宝技术客服https://support.open.alipay.com/alipay/support/index.htm 点机器人,输入“转人工”
1.https://doc.open.alipay.com/doc2/apiList?docType=4
在支付宝开放平台-文档中心中找到你业务对应的接口文档,比如移动支付的接口文档:
https://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103563&docType=1
移动支付java后台的接口也在这里下。
2.解压后找到里面服务端的demo,在Alipay.java中配置好partner跟key,具体如何调用,查看Webroot下的jsp demo
3.一般集成好一个接口后,其他接口调用方式都一样的,只不过更改参数service的值以及根据具体的业务增减参数就行了。
单笔交易SDK(可在开放平台中找到,或者问客服):
http://aopsdkdownload.cn-hangzhou.alipay-pub.aliyun-inc.com/demo/alipaysinglequery.zip
坑1:错误码ILLEGAL_PARTNER_EXTERFACE,不一定是你的签名或者资料错了,也有可能是接口没签约(小编就是如此)。
坑2:退款接口
如果你是网站还好,可以申请即时到帐。但是APP的话,很抱歉的跟你说,没有APP退款的接口,是的,没有。。。支付宝即时到帐需要有独立的网站,而且网站需要有支付相关的操作。
总结:看文档还不能解决问题,问客服,最快的方式解决。当然,也可以给小编留言。
3. 支付宝接口代码怎么用
在使用支付宝支付的时候,首先必须注册一个支付宝的账户,然后下载支付宝提供的接口文件,通过支付宝提供的接口文件,实现电子商务与支付宝的交互。
在支付宝提供的接口文件中,提供了完整的实例程序,只要依照实例程序中的操作方法,将电子商务网站中指定的数据提交到支付宝提供的数组参数中,然后支付宝通过自己的定义的方法将数据提交到指定的网站中。实现代码如下所示:
require_once("alipay_service.php");require_once("alipay_config.php"); $array=explode("@",$info["spc"]);$arraynum=explode("@",$info["slc"]);$arrayinfo=array(); //创建数组$arrayinfo_count=array(); //创建数组for($i=0;$i "trade_create_by_buyer", //交易类型,必填实物交易=trade_create_by_buyer(需要填写物流)"partner" =>$partner, //合作商户号"return_url" =>$return_url, //同步返回"notify_url" =>$notify_url, //异步返回"_input_charset" => $_input_charset, //字符集,默认为GBK"subject" => $commodity_name, //商品名称,必填"body" => $commodity_count, //商品描述,必填"out_trade_no" => $ddnumber, //商品外部交易号,订单号,必填,每次测试都须修改"logistics_fee"=>$yprice, //物流配送费用"logistics_payment"=>'BUYER_PAY', //物流配送费用付款方式:BUYER_PAY(买家支付)"logistics_type"=>'EXPRESS', // 物流配送方式:POST(平邮)、EMS(EMS)、EXPRESS(其他快递)"price" => $amount, //商品单价,必填"payment_type"=>"1", // 默认为1,不需要修改"quantity" => "1", //商品数量,必填"show_url" => $show_url, //商品相关网站"seller_email" => $seller_email //卖家邮箱,必填);$alipay = new alipay_service($parameter,$security_code,$sign_type);$link=$alipay->create_url();$smarty->assign("link",$link);
这里介绍的知识通过php来实现电子商务网站与支付宝进行交互的方法。其中涉及到支付宝提供的参数和设置都是个人虚拟的,真实的参数将在实际的运作中由支付宝提供,使用支付宝时,需要想支付宝申请一个账户,然后由支付宝提供相应的参数,就可以应用此功能了。
4. java调用支付宝接口怎么保证安全
支付宝提供的接口前提都是基于用户对商家的概念,就是说支付都是打到商家的账户上的.没有个人之间的转账.
支付其实就是生成一个单号,相当于在商家那里买了一个商品.
在 支付宝开发平台有提供各种形式的demo;java版本的包名create_direct_pay_by_user-JAVA-UTF-8;这个后面需要.
看看支付宝提供的几个接口类:
1配置类:
提示:如何获取安全校验码和合作身份者ID
*1.用您的签约支付宝账号登录支付宝网站(www.alipay.com)
*2.点击“商家服务”(https://b.alipay.com/order/myOrder.htm)
*3.点击“查询合作者身份(PID)”、“查询安全校验码(Key)”
//支付的流程就是本地根据配置好的参数和参数生成的签名,通过form表单,自动提交,生成链接提交给支付宝,支付宝验证处理完后,回调给return_url的地址,
//然后在本地通过上传前的参数和回调来的参数再次生成签名对比,来看是否数值有变化,这样双向签名认证后保证成功后用户在进行自己的业务逻辑处理
public class AlipayConfig {
/**
* 合作身份者ID,以2088开头由16位纯数字组成的字符串
*/
public static String partner = Global.getConfig("partner");//我是参数内容我是写在了配置文件里面
/**
* 收款支付宝账号,一般情况下收款账号就是签约账号
*/
public static String seller_email =Global.getConfig("seller_email");
/**
* 商户的私钥
*/
public static String key = Global.getConfig("key");
/**
* notify_url 交易过程中服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
*这里不需要支付宝主动提供订单状态变化的回调的话,是暂时没有用的,我这里没用到
*/
public static String notify_url = Global.getConfig("notify_url");
/**
* 付完款后跳转的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
* 不能写成http://localhost/
*/
public static String return_url = Global.getConfig("return_url");
// 网站商品的展示地址,不允许加?id=123这类自定义参数
//public static String show_url = Global.getConfig("");//这里我也没用到
//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
public static String transport = "http";
// 调试用,创建TXT日志文件夹路径;没用到
// public static String log_path = Global.getConfig("");//"D:\\";
public static String log_path = "D:\\";
/**
* 字符编码格式 目前支持 gbk 或 utf-8
* 好像必须是小写的(没试过)
*/
public static String input_charset = "utf-8";
/**
* 签名方式 不需修改
*/
public static String sign_type = "MD5";
//所有没用的配置信息,可以不用删掉,但是不能为空,不然支付宝会报错
}
5. 微信端微信支付 提示 package中的参数partner或prepay_id为空
我也遇到了童演的问题,是不是这个提示?
我已经有解决办法了。哈哈
原因在于第三方开发平台的“财付通商户身份标识[PartnerId]“填写错了,并不是财付通邮件中的十位数商户号,而是weixinpay邮件当中的八位微信支付商户号(接口文档中的商户号MCHID)。改过来就成了。加分吧,亲!~本来是来同求答案的!
6. thinkphp中怎么加入支付宝接口
重新整理接口包文件,这一步应该算是比较关键的(个人认为)
下载下来的接口包文件有很多语言的源码,
我们选择 create_direct_pay_by_user-PHP-UTF-8 这个名称的接口文件。里面包括如下文件:
images文件里是支付宝相关的一些标志的图片,我们暂不管他,lib文件很重要,是整个接口的核心类文件;
alipay.config.php是相关参数的配置文件
alipayapi.php 是支付宝接口入口文件
notify_url.php 是服务器异步通知页面文件;
return_url.php 是页面跳转同步通知文件;
在ThinkPHP的框架文件下,找到Extend 进入,再进入Vendor,在Vendor文件夹下,新建文件夹Alipay,把支付宝作为第三方类库引入。然后,复制支付宝接口文件包中lib文件里的所有文件。一共4个文件,如下:
现在对以上文件进行重命名,
alipay_core.function.php重命名为:Corefunction.php;
alipay_md5.function.php重命名为:Md5function.php;
alipay_notify.class.php重命名为:Notify.php;
alipay_submit.class.php重命名为:Submit.php;
然后,打开Submit.php文件,把以下代码去掉;
require_once("alipay_core.function.php");
require_once("alipay_md5.function.php");
复制代码
同样,打开Notify.php文件,把以下两段代码去掉
require_once("alipay_core.function.php");
require_once("alipay_md5.function.php");
复制代码
为什么要去掉以上两个文件中的这两段代码,因为在项目中调用接口文件的时候,我把所有4个核心文件都通过vendor来进行引入。所以,这不再需要导入。
到此,支付宝接口包相关核心类库的整理基本完成。现在开始在项目中调用;
三、在项目中调用支付宝接口
调用分两步:
1、在配置文件中Conf/Config.php文件中对支付宝相关参数进行配置:
//支付宝配置参数
'alipay_config'=>array(
'partner' =>'20********50', //这里是你在成功申请支付宝接口后获取到的PID;
'key'=>'9t***********ie',//这里是你在成功申请支付宝接口后获取到的Key
'sign_type'=>strtoupper('MD5'),
'input_charset'=> strtolower('utf-8'),
'cacert'=> getcwd().'\\cacert.pem',
'transport'=> 'http',
),
//以上配置项,是从接口包中alipay.config.php 文件中复制过来,进行配置;
'alipay' =>array(
//这里是卖家的支付宝账号,也就是你申请接口时注册的支付宝账号
'seller_email'=>'pay@xxx.com',
//这里是异步通知页面url,提交到项目的Pay控制器的notifyurl方法;
'notify_url'=>'http://www.xxx.com/Pay/notifyurl',
//这里是页面跳转通知url,提交到项目的Pay控制器的returnurl方法;
'return_url'=>'http://www.xxx.com/Pay/returnurl',
//支付成功跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参payed(已支付列表)
'successpage'=>'User/myorder?ordtype=payed',
//支付失败跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参unpay(未支付列表)
'errorpage'=>'User/myorder?ordtype=unpay',
),
复制代码
2、新建一个PayAction控制器代码如下:
<?php
class PayAction extends Action{
//在类初始化方法中,引入相关类库
public function _initialize() {
vendor('Alipay.Corefunction');
vendor('Alipay.Md5function');
vendor('Alipay.Notify');
vendor('Alipay.Submit');
}
//doalipay方法
/*该方法其实就是将接口文件包下alipayapi.php的内容复制过来
然后进行相关处理
*/
public function doalipay(){
/*********************************************************
把alipayapi.php中复制过来的如下两段代码去掉,
第一段是引入配置项,
第二段是引入submit.class.php这个类。
为什么要去掉??
第一,配置项的内容已经在项目的Config.php文件中进行了配置,我们只需用C函数进行调用即可;
第二,这里调用的submit.class.php类库我们已经在PayAction的_initialize()中已经引入;所以这里不再需要;
*****************************************************/
// require_once("alipay.config.php");
// require_once("lib/alipay_submit.class.php");
//这里我们通过TP的C函数把配置项参数读出,赋给$alipay_config;
$alipay_config=C('alipay_config');
/**************************请求参数**************************/
$payment_type = "1"; //支付类型 //必填,不能修改
$notify_url = C('alipay.notify_url'); //服务器异步通知页面路径
$return_url = C('alipay.return_url'); //页面跳转同步通知页面路径
$seller_email = C('alipay.seller_email');//卖家支付宝帐户必填
$out_trade_no = $_POST['trade_no'];//商户订单号 通过支付页面的表单进行传递,注意要唯一!
$subject = $_POST['ordsubject']; //订单名称 //必填 通过支付页面的表单进行传递
$total_fee = $_POST['ordtotal_fee']; //付款金额 //必填 通过支付页面的表单进行传递
$body = $_POST['ordbody']; //订单描述 通过支付页面的表单进行传递
$show_url = $_POST['ordshow_url']; //商品展示地址 通过支付页面的表单进行传递
$anti_phishing_key = "";//防钓鱼时间戳 //若要使用请调用类文件submit中的query_timestamp函数
$exter_invoke_ip = get_client_ip(); //客户端的IP地址
/************************************************************/
//构造要请求的参数数组,无需改动
$parameter = array(
"service" => "create_direct_pay_by_user",
"partner" => trim($alipay_config['partner']),
"payment_type" => $payment_type,
"notify_url" => $notify_url,
"return_url" => $return_url,
"seller_email" => $seller_email,
"out_trade_no" => $out_trade_no,
"subject" => $subject,
"total_fee" => $total_fee,
"body" => $body,
"show_url" => $show_url,
"anti_phishing_key" => $anti_phishing_key,
"exter_invoke_ip" => $exter_invoke_ip,
"_input_charset" => trim(strtolower($alipay_config['input_charset']))
);
//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter,"post", "确认");
echo $html_text;
}
/******************************
服务器异步通知页面方法
其实这里就是将notify_url.php文件中的代码复制过来进行处理
*******************************/
function notifyurl(){
/*
同理去掉以下两句代码;
*/
//require_once("alipay.config.php");
//require_once("lib/alipay_notify.class.php");
//这里还是通过C函数来读取配置项,赋值给$alipay_config
$alipay_config=C('alipay_config');
//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
if($verify_result) {
//验证成功
//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
$out_trade_no = $_POST['out_trade_no']; //商户订单号
$trade_no = $_POST['trade_no']; //支付宝交易号
$trade_status = $_POST['trade_status']; //交易状态
$total_fee = $_POST['total_fee']; //交易金额
$notify_id = $_POST['notify_id']; //通知校验ID。
$notify_time = $_POST['notify_time']; //通知的发送时间。格式为yyyy-MM-dd HH:mm:ss。
$buyer_email = $_POST['buyer_email']; //买家支付宝帐号;
$parameter = array(
"out_trade_no" => $out_trade_no, //商户订单编号;
"trade_no" => $trade_no, //支付宝交易号;
"total_fee" => $total_fee, //交易金额;
"trade_status" => $trade_status, //交易状态
"notify_id" => $notify_id, //通知校验ID。
"notify_time" => $notify_time, //通知的发送时间。
"buyer_email" => $buyer_email, //买家支付宝帐号;
);
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//
}else if ($_POST['trade_status'] == 'TRADE_SUCCESS') { if(!checkorderstatus($out_trade_no)){
orderhandle($parameter);
//进行订单处理,并传送从支付宝返回的参数;
}
}
echo "success"; //请不要修改或删除
}else {
//验证失败
echo "fail";
}
}
/*
页面跳转处理方法;
这里其实就是将return_url.php这个文件中的代码复制过来,进行处理;
*/
function returnurl(){
//头部的处理跟上面两个方法一样,这里不罗嗦了!
$alipay_config=C('alipay_config');
$alipayNotify = new AlipayNotify($alipay_config);//计算得出通知验证结果
$verify_result = $alipayNotify->verifyReturn();
if($verify_result) {
//验证成功
//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
$out_trade_no = $_GET['out_trade_no']; //商户订单号
$trade_no = $_GET['trade_no']; //支付宝交易号
$trade_status = $_GET['trade_status']; //交易状态
$total_fee = $_GET['total_fee']; //交易金额
$notify_id = $_GET['notify_id']; //通知校验ID。
$notify_time = $_GET['notify_time']; //通知的发送时间。
$buyer_email = $_GET['buyer_email']; //买家支付宝帐号;
$parameter = array(
"out_trade_no" => $out_trade_no, //商户订单编号;
"trade_no" => $trade_no, //支付宝交易号;
"total_fee" => $total_fee, //交易金额;
"trade_status" => $trade_status, //交易状态
"notify_id" => $notify_id, //通知校验ID。
"notify_time" => $notify_time, //通知的发送时间。
"buyer_email" => $buyer_email, //买家支付宝帐号
);
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
if(!checkorderstatus($out_trade_no)){
orderhandle($parameter); //进行订单处理,并传送从支付宝返回的参数;
}
$this->redirect(C('alipay.successpage'));//跳转到配置项中配置的支付成功页面;
}else {
echo "trade_status=".$_GET['trade_status'];
$this->redirect(C('alipay.errorpage'));//跳转到配置项中配置的支付失败页面;
}
}else {
//验证失败
//如要调试,请看alipay_notify.php页面的verifyReturn函数
echo "支付失败!";
}
}
}
?>
7. 集成支付宝java接口key有什么作用
支付宝交易安全校验码(key)是商户与支付宝签约后,商户获得的支付宝商户密钥。
当商户把支付宝功能接入商户网站时会用到它们,以便让支付宝认证商户。
此外还有个重要参数是 合作者身份ID(partner)
在和支付宝对接的时候, 这个key 会拼接在参数后面,然后进行加密 (可以是MD5,也可以是RSA)
不同的商户,key值不一样
这样可以保证加密出来的参数安全性
8. 集成支付宝接口为什么一定要用--合作身份者id和安全检验码呢?各有什么作用??
ID就相当于商家的唯一身份编码,KEY是用来加密传递的参数的,两者缺一不可,要不然钱打给谁呢?怎么保证数据安全呢?