在线支付(模拟支付宝)

 

    简介:为了减小学习成本,这里使用第三方的一个支付宝模拟平台!完成在线支付的学习。在真实使用支付宝接口对接时,原理基本都差不多!下面开始正文部分

测试平台网址:http://paytest.rupeng.cn/

 

    注:这里只是一个模拟支付宝的虚拟平台,数据并非真实数据。也不是真正的支付宝页面。仅供学习测试在线支付接口时使用!

一.接口文档:

网关地址:http://paytest.rupeng.cn/AliPay/PayGate.ashx

网关参数说明:
partner:          商户编号
return_url:      回调商户地址(通过商户网站的哪个页面来通知支付成功!)
subject:          商品名称
body:             商品描述
out_trade_no:订单号!!!(由商户网站生成,支付宝不确保正确性,只负责转发。)
total_fee:       总金额
seller_email:  卖家邮箱
sign:             数字签名。为按顺序连接 总金额、 商户编号、订单号、商品名称、商户密钥的MD5值。

回调商户接口地址参数说明:

out_trade_no:  订单号。给PayGate.ashx传过去的out_trade_no再传回来
returncode:     返回码,字符串。ok为支付成功,error为支付失败。
total_fee:       支付金额
sign:             数字签名。为按顺序连接 订单号、返回码、支付金额、商户密钥为新字符串的MD5值。

二.使用方法:

1.客户端html文件,提交获取用户输入的数据

 

复制代码
<body>
    <form action="payhandler.ashx" method="post">
    <label for="tbname">商品名称</label><input type="text" name="tbname" id="tbname" /><br />
    <label for="tbms" >商品描述</label><input type="text" name="tbms" id="tbms" /><br />
    <label for="tbnum">订单号</label><input type="text" name="tbnum" id="tbnum" /><br />
    <label for="tbmoney">总金额</label><input type="text" name="tbmoney" id="tbmoney" /><br />
    <label for="tbmail">卖家邮箱</label><input type="text" name="tbmail" id="tbmail" /><br />        
    <input type="submit" id="btnpay" value="支付" />
        </form>
</body>
复制代码

2.这里的参数通过表单提交服务器,服务器获取这些数据。处理好参数向支付宝发送请求

 

复制代码
 1 public void ProcessRequest(HttpContext context)
 2 {
 3     context.Response.ContentType = "text/plain";
 4     string partner = "2";
 5     string subject = context.Request["tbname"];//商品名称
 6     string body = context.Request["tbms"];       //商品描述
 7     string out_trade_no = context.Request["tbnum"];//订单号
 8     string total_fee =context.Request["tbmoney"]; //总金额
 9     string seller_email = context.Request["tbmail"];//卖家邮箱
10     string return_url = "http://localhost:13702/returnHandler.ashx";//回调地址
11     string key = "abc123";
12     string sign = CalcMD5(total_fee + partner + out_trade_no + subject + key);
13     //重定向到支付的页面
14     context.Response.Redirect("http://paytest.rupeng.cn/AliPay/PayGate.ashx?partner=" + partner + "&return_url=" + context.Server.UrlEncode(return_url) + "&subject=" + context.Server.UrlEncode(subject) +
15         "&body=" + context.Server.UrlEncode(body) + "&out_trade_no=" + context.Server.UrlEncode(out_trade_no) + "&total_fee=" + total_fee + "&seller_email=" + context.Server.UrlEncode(seller_email)
16         + "&sign=" + sign);     
17 }
复制代码

3.支付平台处理请求,当看到这个界面时,表示请求的参数一切正常,可以完成支付了

   注:这里的用户名密码,没有做任何判断,可任意输入

4.在回掉地址中,完成用户支付之后的逻辑代码

 

复制代码
public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/plain";
    string out_trade_no = context.Request["out_trade_no"];//订单号
    string returncode = context.Request["returncode"];       //返回码
    string total_fee = context.Request["total_fee"];//支付金额
    string sign = context.Request["sign"]; //总金额
    if(sign!=CalcMD5(out_trade_no+returncode+total_fee+"abc123"))//防止用户随意篡改数据
    {
        context.Response.Write("数据校验失败");
        return;
    }
    if (returncode == "ok")
    {
        context.Response.Write("支付成功,支付的金额为" + total_fee);
    }
    else
    {
        Console.WriteLine("支付失败");
    }
}

转载于:https://www.cnblogs.com/LiChen19951127/p/9932067.html

根据提供的引用内容,可以了解到Java模拟支付宝余额需要引入支付宝接口,并使用支付宝沙箱来模拟支付。以下是Java模拟支付宝余额的大致步骤: 1.引入支付宝SDK,可以在官网下载并导入到项目中。 2.在支付宝开放平台上创建应用并获取应用的APPID、商户私钥、支付宝公钥等信息。 3.在Java代码中调用支付宝SDK提供的接口,实现余额查询、余额充值等功能。 4.使用支付宝沙箱来模拟支付,测试余额充值等功能。 以下是Java代码中调用支付宝SDK查询余额的示例: ```java import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;import com.alipay.api.response.AlipayFundTransToaccountTransferResponse; public class AlipayDemo { public static void main(String[] args) { // 应用APPID String appId = "应用APPID"; // 商户私钥 String privateKey = "商户私钥"; // 支付宝公钥 String publicKey = "支付宝公钥"; // 支付宝网关 String gatewayUrl = "https://openapi.alipaydev.com/gateway.do"; // 实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, "json", "utf-8", publicKey, "RSA2"); // 实例化API请求对象 AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest(); // 设置API请求参数 request.setBizContent("{" + "\"out_biz_no\":\"3142321423432\"," + "\"payee_type\":\"ALIPAY_LOGONID\"," + "\"payee_account\":\"alipay_account\"," + "\"amount\":\"12.23\"," + "\"payer_show_name\":\"测试退款\"," + "\"payee_real_name\":\"沙箱环境\"," + "\"remark\":\"转账备注\"" + " }"); // 调用API接口 AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request); // 处理API响应结果 if (response.isSuccess()) { System.out.println("调用成功"); } else { System.out.println("调用失败"); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值