zoukankan      html  css  js  c++  java
  • NopCommerce Alipay 支付插件

    NopCommerce Alipay 支付插件

    1.查找及下载NopCommerce Alipay插件

    http://www.nopcommerce.com/p/963/alipay-payment-module-nopcommerce-team.aspx

    2.解压并添加到项目

    按照Readme.txt

    1. 'Nop.Plugin.Payments.AliPay' directory contains source code.

    2. 'Payments.AliPay' contains binaries. Just drop it into Plugins directory on your server.

    将相应的3.80文件夹下的文件 放置指定位置

    Payments.AliPay -》 nopCommerce_3.80PresentationNop.WebPlugins

    Nop.Plugin.Payments.AliPay -》nopCommerce_3.80Plugins

    在解决方案的Plugins Add Existing Item 

    Nop.Plugin.Payments.AliPay.AliPayPaymentProcessor

    /// <summary>
    
    /// Post process payment (used by payment gateways that require redirecting to a third-party URL)
    
    /// </summary>
    
    /// <param name="postProcessPaymentRequest">Payment info required for an order processing</param>
    
    public void PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
    
    {
    
             //string gateway = "https://www.alipay.com/cooperate/gateway.do?";
    
     
    
             var sellerEmail = _aliPayPaymentSettings.SellerEmail;
    
             var key = _aliPayPaymentSettings.Key;
    
             var partner = _aliPayPaymentSettings.Partner;
    
             var outTradeNo = postProcessPaymentRequest.Order.Id.ToString();
    
             var subject = _storeContext.CurrentStore.Name;
    
             var body = "Order from " + _storeContext.CurrentStore.Name;
    
             var totalFee = postProcessPaymentRequest.Order.OrderTotal.ToString("0.00", CultureInfo.InvariantCulture);
    
             var notifyUrl = _webHelper.GetStoreLocation(false) + "Plugins/PaymentAliPay/Notify";
    
             var returnUrl = _webHelper.GetStoreLocation(false) + "Plugins/PaymentAliPay/Return";
    
     
    
             string[] para ={
    
                                                      "service=" + Service,
    
                                                      "partner=" + partner,
    
                                                      "seller_email=" + sellerEmail,
    
                                                      "out_trade_no=" + outTradeNo,
    
                                                      "subject=" + subject,
    
                                                      "body=" + body,
    
                                                      "total_fee=" + totalFee,
    
                                                      "show_url=" + ShowUrl,
    
                                                      "payment_type=1",
    
                                                      "notify_url=" + notifyUrl,
    
                                                      "return_url=" + returnUrl,
    
                                                      "_input_charset=" + InputCharset
    
                                            };
    
     
    
             var aliayUrl = CreatUrl(para, InputCharset, key);
    
     
    
             var post = new RemotePost
    
             {
    
                       FormName = "alipaysubmit",
    
                       Url = "https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8",
    
                       Method = "POST"
    
             };
    
     
    
             post.Add("service", Service);
    
             post.Add("partner", partner);
    
             post.Add("seller_email", sellerEmail);
    
             post.Add("out_trade_no", outTradeNo);
    
             post.Add("subject", subject);
    
             post.Add("body", body);
    
             post.Add("total_fee", totalFee);
    
             post.Add("show_url", ShowUrl);
    
             post.Add("return_url", returnUrl);
    
             post.Add("notify_url", notifyUrl);
    
             post.Add("payment_type", "1");
    
             post.Add("sign", aliayUrl);
    
             post.Add("sign_type", SignType);
    
     
    
             post.Post();
    
    }

    Alipay请求参数说明

    https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103740&docType=1

    解决方案 Clean 和 Rebuild

    运行站点

    3.安装插件

    Admin -> Configuration -> Plugins -> Local plugins

    4.配置插件

    Admin -> Configuration -> Payment -> Payment methods -> Configure

    aliPay_partner:商户PID

    aliPay_seller:商户支付宝

    aliPay_rsaPriKey:生成的private_key

    aliPay_rsaPubKey:生成的public_key

    http://docs.apicloud.com/Client-API/Open-SDK/aliPay

     https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103740&docType=1

    配置信息将保存在Setting表中

    5.启用插件

    Admin -> Configuration -> Payment -> Payment methods -> Edit

    6.前台查看

    附 Alipay请求参数说明

    https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103740&docType=1

    请求参数说明

    更新时间:2016/05/31                         访问次数:143285                    
     

                    

    请求参数是商户在与支付宝进行数据交互时,提供给支付宝的请求数据,以便支付宝根据这些数据进一步处理。

    参数

    参数名称

    类型(字节长度)

    参数说明

    是否可为空

    样例

    基本参数

    service

    接口名称

    String

    接口名称。

    不可空

    create_direct_pay_by_user

    partner

    合作者身份ID

    String(16)

    签约的支付宝账号对应的支付宝唯一用户号。

    以2088开头的16位纯数字组成。

    不可空

    2088101011913539

    _input_charset

    参数编码字符集

    String

    商户网站使用的编码格式,如utf-8、gbk、gb2312等。

    不可空

    gbk

    sign_type

    签名方式

    String

    DSA、RSA、MD5三个值可选,必须大写。

    不可空

    MD5

    sign

    签名

    String

    请参见本文档“附录:签名与验签”。

    不可空

    7d314d22efba4f336fb187697793b9d2

    notify_url

    服务器异步通知页面路径

    String(190)

    支付宝服务器主动通知商户网站里指定的页面http路径。

    可空

    http://api.test.alipay.net/atinterface/receive_return.htm

    return_url

    页面跳转同步通知页面路径

    String(200)

    支付宝处理完请求后,当前页面自动跳转到商户网站里指定页面的http路径。

    可空

    http://api.test.alipay.net/atinterface/receive_return.htm

    业务参数

    out_trade_no

    商户网站唯一订单号

    String(64)

    支付宝合作商户网站唯一订单号。

    不可空

    6843192280647118

    subject

    商品名称

    String(256)

    商品的标题/交易标题/订单标题/订单关键字等。

    该参数最长为128个汉字。

    不可空

    贝尔金护腕式

    payment_type

    支付类型

    String(4)

    只支持取值为1(商品购买)。

    不可空

    1

    total_fee

    交易金额

    Number

    该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。

    不可空

    100

    seller_id

    卖家支付宝用户号

    String(16)

    • seller_id是以2088开头的纯16位数字。
    • seller_email是支付宝登录账号,格式一般是邮箱或手机号。
    • seller_account_name是卖家支付宝账号别名。

    三个参数至少必须传递一个。

    当签约账号就是收款账号时,请务必使用参数seller_id,即seller_id的值与partner的值相同。

    三个参数的优先级别是:seller_id>seller_account_name>seller_email。

    不可空

    2088002007018966

    seller_email

    卖家支付宝账号

    String(100)

    alipay-test01@alipay.com

    seller_account_name

    卖家支付宝账号别名

    String(100)

    tstable02@alipay.com

    buyer_id

    买家支付宝用户号

    String(16)

    • buyer_id是以2088开头的纯16位数字。
    • buyer_email是支付宝登录账号,格式一般是邮箱或手机号。
    • buyer_account_name是买家支付宝账号别名。

    三个参数的优先级别是:buyer_id>buyer_account_name>buyer_email。

    可空

    2088002007018955

    buyer_email

    买家支付宝账号

    String(100)

    tstable01@alipay.com

    buyer_account_name

    买家支付宝账号别名

    String(100)

    tstable03@alipay.com

    price

    商品单价

    Number

    单位为:RMB Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。此参数为单价

    规则:price、quantity能代替total_fee。即存在total_fee,就不能存在price和quantity;存在price、quantity,就不能存在total_fee。

    可空

    10.00

    quantity

    购买数量

    Number

    price、quantity能代替total_fee。即存在total_fee,就不能存在price和quantity;存在price、quantity,就不能存在total_fee。

    可空

    1

    body

    商品描述

    String(1000)

    对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。

    可空

    美国专业护腕鼠标垫,舒缓式凝胶软垫模拟手腕的自然曲线和运动,创造和缓的GelFlex舒适地带!

    show_url

    商品展示网址

    String(400)

    收银台页面上,商品展示的超链接。

    可空

    http://www.360buy.com/product/113714.html

    paymethod

    默认支付方式

    String

    取值范围:

    • creditPay(信用支付)
    • directPay(余额支付)

    如果不设置,默认识别为余额支付。

    说明:

    必须注意区分大小写。

    可空

    directPay

    enable_paymethod

    支付渠道

    String

    用于控制收银台支付渠道显示,该值的取值范围请参见支付渠道

    可支持多种支付渠道显示,以“^”分隔。

    可空

    directPay^bankPay^cartoon^cash

    anti_phishing_key

    防钓鱼时间戳

    String

    通过时间戳查询接口获取的加密支付宝系统时间戳。

    如果已申请开通防钓鱼时间戳验证,则此字段必填。

    可空

    587FE3D2858E6B01E30104656E7805E2

    exter_invoke_ip

    客户端IP

    String(15)

    用户在创建交易时,该用户当前所使用机器的IP。

    如果商户申请后台开通防钓鱼IP地址检查选项,此字段必填,校验用。

    可空

    128.214.222.111

    extra_common_param

    公用回传参数

    String(100)

    如果用户请求时传递了该参数,则返回给商户时会回传该参数。

    可空

    你好,这是测试商户的广告。

    it_b_pay

    超时时间

    String

    设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。

    取值范围:1m~15d。

    m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。

    该参数数值不接受小数点,如1.5h,可转换为90m。

    可空

    1h

    token

    快捷登录授权令牌

    String(40)

    如果开通了快捷登录产品,则需要填写;如果没有开通,则为空。

    可空

    201103290c9f9f2c03db4267a4c8e1bfe3adfd52

    qr_pay_mode

    扫码支付方式

    String(1)

    扫码支付的方式,支持前置模式和跳转模式。

    前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以iframe方式请求支付宝页面。具体分为以下3种:

    • 0:订单码-简约前置模式,对应iframe宽度不能小于600px,高度不能小于300px;
    • 1:订单码-前置模式,对应iframe宽度不能小于300px,高度不能小于600px;
    • 3:订单码-迷你前置模式,对应iframe宽度不能小于75px,高度不能小于75px。
    • 4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。

    跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。

    • 2:订单码-跳转模式

    可空

    1

    qrcode_width

    商户自定二维码宽度

    Integer

    商户自定义的二维码宽度。

    当qr_pay_mode=4时,该参数生效。

    可空 200

    need_buyer_realnamed

    是否需要买家实名认证

    String(2)

    是否需要买家实名认证。

    • T表示需要买家实名认证;
    • 不传或者传其它值表示不需要买家实名认证。
    可空  T

    promo_param

    商户优惠活动参数

    String(128)

    商户与支付宝约定的营销透传参数。

    可空 {"customer201412":"Y","goods201412":"Y"}

    hb_fq_param

    花呗分期参数

    String

    参数格式:hb_fq_seller_percent ^卖家承担付费比例|hb_fq_num ^期数。

    • hb_fq_num:花呗分期数,比如分3期支付;
    • hb_fq_seller_percent:卖家承担收费比例,比如100代表卖家承担100%。

    两个参数必须一起传入。

    两个参数用“|”间隔。Key和value之间用“^”间隔。

    具体花呗分期期数和卖家承担收费比例可传入的数值请咨询支付宝。

    可空 hb_fq_seller_percent^100|hb_fq_num^3

    goods_type

    商品类型

    String(2)

    商品类型:

    • 1表示实物类商品
    • 0表示虚拟类商品

    如果不传,默认为实物类商品。

    可空 1

    https://mapi.alipay.com/gateway.do?body=%C3%C0%B9%FA%D7%A8%D2%B5%BB%A4%CD%F3%CA%F3%B1%EA%B5%E6%2C%CA%E6%BB%BA%CA%BD%C4%FD%BD%BA%C8%ED%B5%E6%C4%A3%C4%E2%CA%D6%CD%F3%B5%C4%D7%D4%C8%BB%C7%FA%CF%DF%BA%CD%D4%CB%B6%AF%A3%AC%B4%B4%D4%EC%BA%CD%BB%BA%B5%C4GelFlex%CA%E6%CA%CA%B5%D8%B4%F8%21&subject=%B1%B4%B6%FB%BD%F0%BB%A4%CD%F3%CA%BD&sign_type=MD5&notify_url=http%3A%2F%2Fapi.test.alipay.net&out_trade_no=6741334835157966&return_url=http%3A%2F%2Fapi.test.alipay.net%2Fatinterface%2Freceive_return.htm&sign=dc3d42f405d7e738ab35344449e2d9f7&buyer_id=2088002007018955&total_fee=100&service=create_direct_pay_by_user&partner=2088101568338364&seller_id=2088002007018966&payment_type=1&qr_pay_mode=1&_input_charset=gbk

    说明: 本样例仅供参考,支付宝网关为https://mapi.alipay.com/gateway.do

    注意:

    • 此接口只支持https请求;
    • 参数body(商品描述)、subject(商品名称)、extra_common_param(公用回传参数)不能包含特殊字符(如:#、%、&、+)、敏感词汇,也不能使用外国文字(旺旺不支持的外文,如:韩文、泰语、藏文、蒙古文、阿拉伯语);
    • 请按照本文档“附录:签名与验签”中的签名方法对输入参数进行签名,该接口请求才能够被支付宝系统接收;
    • 此接口支持重复调用,前提是交易基本信息(买家、卖家、交易金额、超时时间等)在多次调用中保持一致,且交易尚未完成支付;
    • 配置qr_pay_mode为0或1或3或4的情况下,同步通知地址return_url需要传入商户中间跳转页面,即该页面需要实现让父页面自行跳转的功能,中间页面javascript代码:<script>window.parent.location.href='父页面调整的URL';</script>
  • 相关阅读:
    pdf.js-----后端返回utf-8数据流,前端处理数据展示pdf
    正则表达式之去除前后空格
    ng之邮箱校验
    ng-校验重复并提示具体重复内容
    input 数值框处理
    逻辑之不重复
    ng -----监听变化($scope.$watch())
    js中document的用法
    php中12个魔术方法
    php 中const和 define的区别
  • 原文地址:https://www.cnblogs.com/freeliver54/p/6179552.html
Copyright © 2011-2022 走看看