支付宝接口partner参数怎么设置
采用下列这个步骤设置:
i. 第一步——选定参数信息:
结合技术文档以及接口代码DEMO,选定传递给支付宝服务器的参数,以实物标准双接口为例。如必传项service、partner、seller_email、sign、sign_type、out_trade_no、price、subject、quantity、payment_type以及最少一组的物流信息参数三个logistics_type、logistics_fee、logistics_payment等,选填项body、discount、show_url等。
ii. 第二步——排序:
把这些参数的变量名(即技术文档里给出的变量名,以这种方式组合:service=”trade_create_by_buyer”作为一串字符串)按从a到z的顺序依次排序。以ASP.NET C#语言代码程序为例,该功能在ALIPAY.CS类中;以ASP代码中的程序为例,该功能在alipayto/Alipay_Payto.asp文件中。
iii. 第三步——加密:
目前一般的加密方式是MD5,不论是哪种加密方式,要加密的信息是要传给支付宝的信息,且存在于技术文档中,而非自定义的变量名。对以上排序好的所有参数(不包括网关参数即:string gateway = "?" ;)以循环的方式,用‘’字符拼接成一长串字符串(这里需要注意,所有的参数都是字符来拼接的,拼接后直接再拼接安全校验码Key,在程序中大家可看到,这个key是直接加到该字符串后面而没有用字符 ),之后进行加密。得出的加密字符串集存储于sign这个参数中。
iv. 第四步——拼接字符串成URL链接
已经拿到了各个参数、参数所属的值以及加密得出的加密字符串,那么手上现在的所有参数信息的格式,应当都是一组一组的service=”trade_create_by_buyer”这种格式的字符串,拼接的话,则依靠循环的方式遍历所有的这种字符串,因为这次的拼接是要成URL链接,所以之前排除在外的网关gaetway和加密类型参数sign_type也都会被拼接进来,那么,连接的字符则用大家所熟知的字符’’,就这样得出一个完整的URL链接地址。
v. 第五步——自动跳转
第四步中已经运算得出的URL链接字符串,我们则要让其活起来,那么活起来的方式就是——用程序调用它,也就是所谓的页面自动跳转。这样就能跳到支付宝的官方收银台页面。
可以说,现在已经成功的把支付宝接口融合进了大家自己的网站中,且能够使用支付宝来进行付款了。
使用付钱拉怎样获得支付宝参数?
PID 和Key是支付宝(移动支付、手机网站支付、即使到账)所需必要参数。PID和Key的获取方式可以去付钱拉的网站找上面有很详细的图解哦。
电脑怎么用支付宝小程序
支付宝小程序是一种全新的开放模式,它运行在支付宝客户端,可以被便捷地获取和传播,为终端用户提供更优的用户体验。小程序开放给开发者更多的JSAPI和OpenAPI能力,通过小程序可以为用户提供多样化便捷服务。
支付宝小程序开放给企业帐号,想要成为支付宝小程序开发者,需要完成注册、入驻以及小程序创建三步。
支付宝小程序怎么创建
通过以下步骤完成小程序创建,并获取APPID。
第一步:创建小程序
通过小程序首页,点击“登录管理中心”,进入小程序管理中心,在页面上点击“创建小程序”。
一个账号下最多可以创建10个小程序;未提交过审核的小程序可以删除,删除的小程序不在计数范围。
第二步:填写小程序基础信息
请准确填写小程序的基础信息,基础信息不允许包含违禁词,应用信息修改规则如下。
上架前,应用信息均可修改,不限次数。
上架后,应用名/应用英文名将不允许修改; 应用简介、应用描述、应用类目这三个信息在新版本提审时每个自然月可修改5次,其他信息在新版本提审时可修改。
第三步:获取小程序APPID
小程序创建成功后,可在小程序详情页查看APPID。
怎么开发支付宝小程序
一.小程序框架结构
1、小程序分为app和page两层,app描述整体程序,page描述各个页面。
2、app代表顶层应用,管理所有页面和全局数据,以及提供生命周期方法,他也是一个构造方法,生成app实例。 每个小程序的顶层一般包含三个文件:app.js(应用逻辑), app.acss(应用样式) ,app.json(应用配置) app.json用于全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。
以下是一个包含了部分配置选项的简单配置app.json。
复制代码
{"pages": ["pages/index/index","pages/logs/index"],"window":{ "defaultTitle":"Demo" }}
3.page代表应用的一个页面,负责页面展示和交互。每个页面对应一个子目录,一般有多少个页面,就有多少个子目
录。它也是一个构造函数,用来生成页面实例。page由四个文件组成,文件类型分别是:js(页面逻辑) axml(页面
结构) acss (页面样式表) json(页面配置) ,具体请【参考地址】
二.小程序调试
1.模拟器调试ide模拟器提供了以下功能:设备模拟(尺寸 精度等),编译日志、编译错误提示、刷新,支付宝JsAPI模拟以及位置、蓝牙、启动参数等模拟接口自定义配置(如下图)
2.调试工具 :配合模拟器,ide提供了定制化的 chrome devtool,在其基础上提供比如 axml 等扩展。默认展示:
AXML,基于小程序元素的 dom、css 调试
Console,运行日志、错误查看
Storage,缓存数据查看、编辑
Sources,源码查看、断点调试
Network,网络资源、请求查看
3.真机调试 真机预览需要注意以下三点: 1)首先你得提供一个 APP ID(如果你还没有申请,请前往 开放平台 申请)
2)生产环境的预览有权限限制,你需要选择推送自己或者对应的开发者(该 APP ID 下添加的开发者)
3)我们提供生产环境的调试工具,选中开启真机调试工具即可
java小程序awt尽快!!!可私戳支付宝号!!!
* 将订单提交支付宝进行网上支付
*/
public ActionForward submitAlipayUrl(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String orderNo = request.getParameter("orderNo");//订单编号
HashMap hm = new HashMap();
hm.put("_input_charset", "utf-8");// 采用相同的编码方式
hm.put("body", "企鹅个性化图书订单,订单号:" + orderNo);// 填写在跳到支付宝页面上显示的付款内容信息
hm.put("notify_url", "");// 客户付款后,支付宝调用的页面
hm.put("out_trade_no", orderNo);// 外部交易号,最好具有唯一性,在获取支付宝发来的付款信息时使用.
hm.put("partner", "2088002302055380");// partnerId(合作伙伴ID)
//hm.put("agent", "2088002302055380");// partnerId(合作伙伴ID)
hm.put("payment_type", "1");// 支付类型 1=商品购买,2=服务购买,...
//hm.put("price", "178.00");// 订单金额信息
hm.put("total_fee", "178.00");// 订单金额和信息
//hm.put("quantity", "1");// 订单商品数量,一般都是写1,它是按照整个订单包来计算
hm.put(“return_url”, “”);// 客户付款成功后,显示给客户的页面
hm.put("show_url", ";kindId=1");//展示地址,即在支付页面时,商品名称旁边的“详情”的链接地址。
hm.put("seller_email", "[email protected]");// 你的支付宝账户email
hm.put("service", "create_direct_pay_by_user");// create_direct_pay_by_user=直接付款,trade_create_by_buyer=担保付款
hm.put("subject", "企鹅个性化图书订单号:" + orderNo);// 填写在跳到支付宝页面上显示的付款标题信息
String payGateway = "";// 跳转到支付宝的url头
String securityCode="7nj9sczcnfc4n8366j46mrzsbqjksmzn";//securityCode(安全码);
String sign = makeUrl(hm,securityCode,"utf-8",payGateway);//securityCode(安全码);
hm.put("sign", sign);
hm.put("sign_type", "MD5");
PrintWriter out = response.getWriter();
out.println("form name='alipaysubmit' method='p.o.s t' action='' ");
out.println("input type='hidden' name='service' value='" + hm.get("service") + "'");
out.println("input type='hidden' name='partner' value='" + hm.get("partner") + "'");
out.println("input type='hidden' name='seller_email' value='" + hm.get("seller_email") + "'");
out.println(““);
out.println("input type='hidden' name='subject' value='" + hm.get("subject") + "'");
out.println("input type='hidden' name='body' value='" + hm.get("body") + "'");
out.println("input type='hidden' name='total_fee' value='" + hm.get("total_fee") + "'");
out.println("input type='hidden' name='show_url' value='" + hm.get("show_url") + "'");
out.println("input type='hidden' name='return_url' value='" + hm.get("return_url") + "'");
out.println("input type='hidden' name='notify_url' value='" + hm.get("notify_url") + "'");
out.println("input type='hidden' name='payment_type' value='1'");
out.println("input type='hidden' name='sign' value='" + hm.get("sign") + "'");
out.println("input type='hidden' name='sign_type' value='" + hm.get("sign_type") + "'");
out.println("/form");
out.println("script");
out.println(" document.alipaysubmit.submit()");
out.println("/script");
return null;
}
/**
* 根据传入的参数生成Alipay的支付URL
* @param hm 参数值
* @param securityCode 安全码
* @param charset 编码
* @param payGateway 支付宝gateway
@return
*/
public static String makeUrl(HashMap hm,String securityCode,String charSet,String payGateway) throws Exception{
List keys = new ArrayList(hm.keySet());
Collections.sort(keys);//支付宝要求参数必须按字母排序
StringBuffer content = new StringBuffer();
for (int i = 0; i keys.size(); i++) {
content.append((String) keys.get(i));
content.append("=");
content.append((String) hm.get((String) keys.get(i)));
if (i != keys.size() - 1) {
content.append("");
}
}
content.append(securityCode);
String sign = DataUtil.MD5Encode(content.toString(), charSet); //MD5加密
return sign;
}
2、return_url的内容:
/**
* 支付宝支付完成以后,当前窗口会从支付宝的页面跳转回这个页面。该页面称作“返回页”,
* 是同步被支付宝服务器所调用,可当作是支付完成后的提示信息页,如“您的某某某订单,多少金额已支付成功”。
*/
public ActionForward AlipayReturn(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String alipayNotifyURL = "";
//String alipayNotifyURL = "?";//此路径是在上面链接地址无法起作用时替换使用。
alipayNotifyURL = alipayNotifyURL+ "partner=2088002302055380notify_id="+ request.getParameter("notify_id");
// 获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的
String responseTxt = check(alipayNotifyURL);
// 获得POST 过来参数设置到新的requestParams中
Map requestParams = request.getParameterMap();
List keys = new ArrayList(requestParams.keySet());
Collections.sort(keys);
StringBuffer content = new StringBuffer();
for (int i = 0; i keys.size(); i++) {
String key=(String) keys.get(i);
if(!key.equals("")!key.equals("sign")!key.equals("sign_type")){
content.append((String) keys.get(i));
content.append("=");
content.append((String)requestParams.get((String) keys.get(i)));
if (i != keys.size() - 1) {
content.append("");
}
}
}
String securityCode="7nj9sczcnfc4n8366j46mrzsbqjksmzn";//securityCode(安全码);
content.append(securityCode);
String mysign = DataUtil.MD5Encode(content.toString(), "utf-8");
System.out.println("--------------------------content="+content);
System.out.println("--------------------------mysign="+mysign);
System.out.println("--------------------------sign="+request.getParameter("sign"));
if (mysign.equals(request.getParameter("sign")) responseTxt.equals("true") ){
if (request.getParameter("trade_status").equalsIgnoreCase("TRADE_FINISHED")){
// 可以做重定向,也可以用来虚拟物品发货
}
return mapping.findForward("payOK");//交易成功
}else{
return mapping.findForward("payFail");//交易失败
}
}
3、notify_url的内容:
/**
* 通知返回URL,仅适用于异步返回处理结果的接口。有些服务是无法立即返回处理结果的,那么需要通过这个URL将处理结果异步返回给合作伙伴
*/
public ActionForward AlipayNotify(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String alipayNotifyURL = "";
//String alipayNotifyURL = "?";//此路径是在上面链接地址无法起作用时替换使用。
alipayNotifyURL = alipayNotifyURL+ "partner=2088002302055380notify_id="+ request.getParameter("notify_id");
// 获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的
String responseTxt = check(alipayNotifyURL);
// 获得POST 过来参数设置到新的requestParams中
Map requestParams = request.getParameterMap();
List keys = new ArrayList(requestParams.keySet());
Collections.sort(keys);
StringBuffer content = new StringBuffer();
for (int i = 0; i keys.size(); i++) {
String key=(String) keys.get(i);
if(!key.equals("")!key.equals("sign")!key.equals("sign_type")){
content.append((String) keys.get(i));
content.append("=");
content.append((String)requestParams.get((String) keys.get(i)));
if (i != keys.size() - 1) {
content.append("");
}
}
}
String securityCode="7nj9sczcnfc4n8366j46mrzsbqjksmzn";//securityCode(安全码);
content.append(securityCode);
String mysign = DataUtil.MD5Encode(content.toString(), "utf-8");
System.out.println("--------------------------content="+content);
System.out.println("--------------------------mysign="+mysign);
System.out.println("--------------------------sign="+request.getParameter("sign"));
if (mysign.equals(request.getParameter("sign")) responseTxt.equals("true") ){
if (request.getParameter("trade_status").equalsIgnoreCase("TRADE_FINISHED")){
// 可以做重定向,也可以用来虚拟物品发货
}
return mapping.findForward("payOK");
}else{
return mapping.findForward("payFail");
}
}
/**
@param myUrl
*
String inputLine = ““;
try
{
URL url = new URL(urlvalue);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String stTemp = ““;
while((stTemp = in.readLine()) != null)
{
System.out.println(stTemp);
inputLine = inputLine + stTemp;
}
}
catch(Exception e)
{
e.printStackTrace();
}
return inputLine;
}
代码编写完毕,可以试着debug调试一下
@param url
*
@return 获取url内容
*/
public static String check(String urlvalue ) {
php 5.3.13怎么使用支付宝RSA2
配置开发者信息「私钥」And「App_id」
/* 配置信息 */
// 支付宝分配给开发者的应用ID
$app_id='';
// 开发者私钥,为这里填入方便,去头、去尾、去换行 字符串私钥,私钥处理放在签名方法内。
$private_key='';
// 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
$sign_type='RSA2';
/* 配置信息 */
2.组装部分请求参数:根据接口文档组装参数 app_id、method、format、timestamp、charset、version、notify_url、sign_type
/* 组装请求参数部分start */
// 支付宝分配给开发者的应用ID
$params['app_id'] = $app_id;
// 接口名称
$params['method'] = 'alipay.trade.app.pay';
// 仅支持JSON
$params['format'] = 'json';
// 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"
$params['timestamp'] = date("Y-m-d H:i:s");
// 请求使用的编码格式,如utf-8,gbk,gb2312等
$params['charset'] = 'UTF-8';
// 调用的接口版本,固定为:1.0
$params['version'] = '1.0';
// 支付宝服务器主动通知商户服务器里指定的页面http/https路径。建议商户使用https
$params['notify_url'] = '';
// 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
$params['sign_type'] = $sign_type;
/* 组装请求参数部分end */
3.组装业务参数json格式,并填充在$params数组中
/* 组装业务参数json */
// 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
$bizcontent['body'] = '非sdk原生php服务端生成请求订单';
// 商品的标题/交易标题/订单标题/订单关键字等。
$bizcontent['subject'] = 'php代码示例';
/* 生成随机数作为外部订单号start */
$date=date("YmdHis");
$arr=range(1000,9999);
shuffle($arr);
$out_trade_no=$date.$arr[0];
/* 生成随机数作为外部订单号end */
// 商户网站唯一订单号
$bizcontent['out_trade_no'] = $out_trade_no;
// 设置未付款支付宝交易的超时时间,一旦超时,该笔交易就会自动被关闭。当用户进入支付宝收银台页面(不包括登录页面),会触发即刻创建支付宝交易,此时开始计时。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
$bizcontent['timeout_express']='10m';
// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
$bizcontent['total_amount'] = '0.01';
// 销售产品码,商家和支付宝签约的产品码
$bizcontent['product_code'] = 'QUICK_MSECURITY_PAY';
// 商品主类型:0—虚拟类商品,1—实物类商品 注:虚拟类商品不支持使用花呗渠道
$bizcontent['goods_type'] = '0';
// 公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参数。支付宝会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝
$bizcontent['passback_params']='spicy%3d%e8%87%aa%e5%ae%9a%e4%b9%89%e5%8f%82%e6%95%b01%26custom%3d%e8%87%aa%e5%ae%9a%e4%b9%89%e5%8f%82%e6%95%b02';
$biz_content=json_encode($bizcontent,JSON_UNESCAPED_UNICODE);
/* 组装业务参数json */
// 将业务参数填充在请求参数内
$params['biz_content'] = $biz_content;
4.排序签名得到sign,并填充在$params数组中「签名方法请往下翻」
// 排序
ksort($params);
// 调用签名方法得到sign填入请求参数
$params['sign'] = sign($params, $params['sign_type'], $private_key);
5.将参数urlencode输出查看,打印出来的参数可以直接放在客户端使用
// htmlspecialchars是为防止浏览器将参数中的「×」和「¬」转义
echo htmlspecialchars(http_build_query($params));
工具方法:签名方法和检查是否为空方法
/**
* 签名函数
*
* @param array $params 请求参数数组
* @param string $signType 签名方式
* @param string $private_key 为了方便只要填一行字符串
* @return string 返回类型
*/
function sign($params,$signType,$private_key){
$stringToBeSigned = "";
$i = 0;
// 将数组使用符号拼接
foreach ($params as $k = $v) {
if (false === checkEmpty($v) "@" != substr($v, 0, 1)) {
if ($i == 0) {
$stringToBeSigned .= "$k" . "=" . "$v";
} else {
$stringToBeSigned .= "" . "$k" . "=" . "$v";
}
$i++;
}
}
unset ($k, $v);
// 私钥处理
$res = "-----BEGIN RSA PRIVATE KEY-----".PHP_EOL.wordwrap($private_key, 64, PHP_EOL, true).PHP_EOL."-----END RSA PRIVATE KEY-----";
($res) or die('您使用的私钥格式错误,请检查RSA私钥配置');
//
if ("RSA2" == $signType) {
openssl_sign($stringToBeSigned, $sign, $res, OPENSSL_ALGO_SHA256);
} else {
openssl_sign($stringToBeSigned, $sign, $res);
}
return base64_encode($sign);
}
/**
* 检查是否为空
*
* @param string $value 请求参数数组
* @return bool 返回类型
*/
function checkEmpty($value) {
if (!isset($value))
return true;
if ($value === null)
return true;
if (trim($value) === "")
return true;
return false;
}
关于支付宝参数生成工具和支付宝功能图的介绍本篇到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
还没有评论,来说两句吧...