支付宝接口示例代码(支付宝生成付款码 接口)
admin 发布:2022-12-20 00:22 190
今天给各位分享支付宝接口示例代码的知识,其中也会对支付宝生成付款码 接口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
支付宝接口代码怎么用
在支付宝提供的接口文件中,提供了完整的实例程序,只要依照实例程序中的操作方法,将电子商务网站中指定的数据提交到支付宝提供的数组参数中,然后支付宝通过自己的定义的方法将数据提交到指定的网站中。实现代码如下所示: 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;$icount($array);$i++){ if($array[$i]!=""){ $m=$i+1; $sqlcart=mysql_query("select * from tb_commodity where tb_commodity_id='".$array[$i]."'",$conn); $infocart=mysql_fetch_array($sqlcart); //读取数据库中数据 array_push($arrayinfo,$infocart[tb_commodity_name]); //将购物商品的名称写入到数组中 array_push($arrayinfo_count,"商品 $m :$infocart[tb_commodity_name] 数量:$arraynum[$i]"); //将购物商品的数量写入到数组中 }}$commodity_name=implode(',',$arrayinfo); //获取商品名称$commodity_count=implode(',',$arrayinfo_count); //获取商品描述信息$parameter = array("service" = "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来实现电子商务网站与支付宝进行交互的方法。
支付宝的接口代码
首先,支付接口分成两个部分,一个是支付功能部分,一个是订单信息同步部分。
你先完成即时到帐的接口实现支付功能部分实现10元钱打入你的账号上,接口代码中有两个页面文件一个是return_url一个是notify_url,充值进100虚拟币这其实就是对你的数据库的会员数据表的虚
拟币的字段进行修改增加100,因此你根据这两个页面中的注释部分填写相应的数据库更新语句程序即可完成。
请参考: 支付宝的官方技术开发者社区论坛 经验分享区 里的 解读支付宝接口程序 第四楼 四、通知返回
接入支付宝支付SDK
接入支付宝支付SDK
可以说支付宝支付接入是所有SDK最好接入的,没有之一。
客户端不用签名,也不用管包名,也不用管签名文件,就接口返回订单,把订单交给支付宝SDK调用就行,成功或者失败都在当前界面返回给你。你再去通知接口。
支付流程图
官方文档地址
!支付宝支付官方文档地址
按照文档说明接入SDK和相关配置,在这就不重复了
客户端支付关键代码===》支付接口的调用(调起支付弹框)
记住支付接口的调用必须在独立的非ui线程中执行,即需新开线程里面调用。可以想官方demo一样用new Thread方式。
下面我给出用Observable方式示例代码
在PayUtils中
/**
* desc:支付宝支付
* Created by congge on 2018/8/27 17:20
* @param orderInfo 接口返回的订单
**/
public static void aliPay(final Activity activity, final String orderInfo, final OrderListener orderListener) {
Observable.just(orderInfo)
.map(new Function () {
@Override
public String apply(String orderInfo) throws Exception {
//用户在商户app内部点击付款,是否需要一个loading做为在钱包唤起之前的过渡,这个值设置为true
return new PayTask(activity).pay(orderInfo, true);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer () {
@Override
public void accept(String payResult) throws Exception {
orderListener.onPayResult(payResult);
}
});
}
支付结果返回处理
返回例子:
resultStatus={9000};memo={};result={{"alipay_trade_app_pay_response":{"code":"10000","msg":"Success","app_id":"2016091300503896","auth_app_id":"2016091300503896","charset":"utf-8","timestamp":"2018-08-28 17:51:11","out_trade_no":"nVElbd74TW6WnEyxQwvX8A","total_amount":"0.01","trade_no":"2018082821001004680500208879","seller_id":"2088102175487650"},"sign":"W0Hg9k4GxL8Oaxymvqk2i65WNDQxYp6HGve32ek6VjSRnymmI3GQTjpQVbZuDzvjcwQ/HIkM97PoBGAVlTmi/wiJcqDgSSDzDY7AFnNN0OcK0ehWGwKQINA4IDGh51A7yY/vYKmR0VW+2OwGhlRPPMMZtQOEqh8a9/aIijzT6ZLwy9Hl4ayG/fVKhdC1VdckF6+C25BFNp3fIxarg5tfEunm7N9iWngKCUsnP+IZz05OHdvynimgYPcBnbBERHG97GVqRT/EdBWTQyIDMc0LemScAYxJixTVgXDkRddQjzWZ7HgLdBfjs0nXY24puHudT76ERxVY+8NkoKle/QI+FA==","sign_type":"RSA2"}}
也可以自己打log看看
处理示例代码:
//支付宝支付
PayUtils.aliPay(this, result.getSignDataStr(), new PayUtils.OrderListener() {
@Override
public void onPayResult(String payResult) {
PayResult pr = new PayResult(payResult);
String rs = pr.getResultStatus();
String r = pr.getResult();
switch (rs) {
case AliPayResultStatus.PAY_SUCCESS:
ToastUtils.show(R.string.pay_success);
//通知接口支付成功
break;
case AliPayResultStatus.PAY_PROCESSING:
case AliPayResultStatus.PAY_UNKNOWN:
ToastUtils.show(R.string.pay_fail);
//支付可能成功,要接口去查询
break;
default:
ToastUtils.show(R.string.pay_fail);
//通知接口支付失败,取消订单
}
}
});
上面方法中:
//通知接口支付成功 //支付可能成功,要接口去查询 //通知接口支付失败,取消订单。根据你产品需求要不要通知你服务器做的操作。正常是要的,用来改变订单状态
PayResult.class
public class PayResult {
private String resultStatus;
private String result;
private String memo;
public PayResult(String rawResult) {
if (TextUtils.isEmpty(rawResult))
return;
String[] resultParams = rawResult.split(";");
for (String resultParam : resultParams) {
if (resultParam.startsWith("resultStatus")) {
resultStatus = gatValue(resultParam, "resultStatus");
}
if (resultParam.startsWith("result")) {
result = gatValue(resultParam, "result");
}
if (resultParam.startsWith("memo")) {
memo = gatValue(resultParam, "memo");
}
}
}
@Override
public String toString() {
return "resultStatus={" + resultStatus + "};memo={" + memo
+ "};result={" + result + "}";
}
private String gatValue(String content, String key) {
String prefix = key + "={";
return content.substring(content.indexOf(prefix) + prefix.length(),
content.lastIndexOf("}"));
}
public String outOrder() {
String order = ""out_trade_no"";
if (result.contains(order)) {
String begin = result.substring(result.indexOf(order));
String ss = begin.split(",")[0];
String newS = ss.replace(""", "")
.replace("}", "")
.replace(":", "")
.replace("out_trade_no", "");
try {
return newS;
} catch (Exception e) {
e.printStackTrace();
}
}
return "";
}
/**
* @return the resultStatus
*/
public String getResultStatus() {
return resultStatus;
}
/**
* @return the memo
*/
public String getMemo() {
return memo;
}
/**
* @return the result
*/
public String getResult() {
return result;
}}
最后给下支付返回码表
AliPayResultStatus.class
public class AliPayResultStatus {
/**
* 订单支付成功,唯一肯定是支付成功的
*/
public static final String PAY_SUCCESS = "9000";
/**
* 正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
*/
public static final String PAY_PROCESSING = "8000";
/**
* 订单支付失败
*/
public static final String PAY_FAIL = "4000";
/**
* 重复请求
*/
public static final String PAY_REPEAT = "5000";
/**
* 用户中途取消
*/
public static final String PAY_PROCESS_CANCEL = "6001";
/**
* 网络连接出错
*/
public static final String PAY_NET_ERROR = "6002";
/**
* 支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
*/
public static final String PAY_UNKNOWN = "6004";}
还有一个直接弃用沙箱调试模式,否则提示支付失败也有可能不知道错在那,怕金额大,和接口商量,测试服务器就用0.01测试。
asp如何做支付宝接口,代码怎么写
1、打开Config.asp 配置文件好您的支付宝帐号,注意!必须是要通过身份认证的方能使用,收款手续费千分之十。
2、把ASP代码发布到IIS 服务器中,直接访问index.asp文件为网银行直连,访问alipay.asp是直接到就可以到支付宝的收银台。
3、对支付成功的订单信息,进行数据库的操作。
返回的机制有两种:
一种 return_url 即时返回,此返回是get方式。
二种 notify_url 通知返回,此返回时post方式,进行服务器点对点的通知机制。
注意:返回的地址中不能自定义携带参数。
4、如果获得返回信息。
在指定的两种返回接收的文件中 get或post获得。
例如:return_url:返回设置文件中的return_Alipay_Notify.asp,商户网站中传递给支付宝的订单号码-------request("out_trade_no")价格-------request("price")notify_url:返回设置文件中的Alipay_Notify.asp,商户网站中传递给支付宝的订单号码request("out_trade_no") ,价格request("price")。
5、如果两种方式都设置,就要判断交易的订单是否有更新过,因为两种返回机制不同。可能同时返回、或者有先后,注意订单更新时候要判断订单不能个重复更新。
买家付完款(trade_status=TRADE_FINISHED)在此状态下进行数据库的更新。并返回给支付宝success。若没有得到success。
关于支付宝接口示例代码和支付宝生成付款码 接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-16在线生成网站,在线生成ppt的网站
- 05-15站长工具外链查询,站长工具接口
- 05-09网页代码,网页代码快捷键
- 05-06单页网站的代码(完整的网页代码)[20240506更新]
- 05-06个人主页图片代码(个人主页图片代码怎么弄)[20240506更新]
- 05-06提取微信名片代码(微信名片信息提取)[20240506更新]
- 05-06php后台权限管理代码(php管理员权限)[20240506更新]
- 05-06付费观看代码php(付费观看代码)[20240506更新]
- 05-06在线html执行代码(html怎么运行)[20240506更新]
- 05-06源代码管理资源管理器(资源管理器运行代码)[20240506更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接